Aspectos de diseño Escalabilidad. Características de los algoritmos descentralizados: Ningún nodo conoce el estado completo del sistema. Las decisiones se toman en base a información local. La falla de un nodo no compromete el algoritmo. No existe una hipótesis implícita de la existencia de un reloj global. 32
Remote Procedure Call Discutamos del paradigma cliente–servidor. Implicaciones de la E/S y el paso de mensajes. Birrell y Nelson (1984). ¿Qué propucieron? 33
Remote Procedure Call 34
Remote Procedure Call La idea parece sencilla, pero existen algunas sutilezas. Procedimientos en espacios de direcciones diferentes. Necesidad de transferir parámetros y resultados. ¿Qué ocurre en caso de fallas? 35
RPC – Operación básica Para entender el funcionamiento de RPC. Es necesario entender una llamada convencional a procedimiento. count= read(fd, buf, nbytes); ¿Qué ocurre cuando se invoca a read? 36
RPC – Operación básica 37
RPC – Operación básica Observaciones en cuanto al pase de parámetros. Valor. Referencia. Copia/restauración. 38
RPC – Operación básica La idea detrás de RPC es que una llamada a procedimiento remoto se parezca lo más posible a una llamada local. ¿Cómo podemos lograr esto? Client Stub. Server Stub. 39
RPC – Operación básica 40
RPC – Operación básica El cliente invoca al Client Stub. Client Stub construye un mensaje y realiza una llamada al núcleo. El núcleo envía el mensaje al núcleo remoto. El núcleo remoto proporciona el mensaje al Server Stub. El Server Stub desempaqueta los parámetros y llama al procedimiento. 41
RPC – Operación básica El procedimiento culmina y regresa el resultado al Server Stub. El Server Stub empaqueta el resultado y hace una llamada al núcleo. El núcleo remoto, envía el mensaje al núcleo cliente. El núcleo del cliente da el mensaje al Client Stub. El Client Stub desempaqueta el resultado. 42
RPC – Transferencia de parámetros ¿A qué nos referimos con esto? Ordenamiento de parámetros. Funcionamiento. 43
RPC – Transferencia de parámetros 44
RPC – Transferencia de parámetros 45
RPC – Transferencia de parámetros Soluciones. Ideas. Forma canónica. 46
RPC – Semántica en caso de falla Si el trasfondo de RPC es la transparencia. ¿Qué hacer en caso de falla? Distinguiremos cinco clase de fallas. El cliente no puede localizar al servidor. Se pierde el mensaje de solicitud del cliente al servidor. Se pierde el mensaje de respuesta del servidor al cliente. El servidor falla antes de recibir una solicitud. El cliente fallas después de enviar una solicitud. 47
RPC – El cliente no puede localizar al servidor Razones. El servidor esta inactivo. El Server Stub es incompatible con el Client Stub. ¿Cómo solventar este inconveniente? En C podríamos utilizar un valor especial, p.e: -1. Implicaciones. Solución alternativa. Excepciones. 48
RPC – Pérdida de mensaje de solicitud Parece más fácil de tratar. Ideas. Iniciar un temporizador en el núcleo al enviar la solicitud. Funcionamiento. ¿Qué pasa si se pierden todos los mensajes? Regresamos al caso anterior. 49
RPC – Pérdida del mensaje de respuesta Un poco más compleja de enfrentar. Ideas. Solución basada en el caso anterior. Funcionamiento. Implicaciones. Recuperar una porción de un archivo. Idempotente. Realizar una transferencia bancaria. 50
Página anterior | Volver al principio del trabajo | Página siguiente |