Sistemas distribuidos MSc. Yuliana Jáuregui Rosas Conocimientos previos • ¿Qué es un RPC? • ¿Cuáles son sus elementos? Llamada a Procedimientos Remotos - RPC Utilidad Temario ➢ Llamada a procedimientos remotos ➢ Funcionamiento ➢ Problemas que pueden presentar un RPC ➢ Ejemplos de entornos RPC ➢ Implementación de un RMI Logro Al finalizar esta sesión el estudiante identifica el funcionamiento de una llamada a procedimientos remotos desarrollando aplicaciones. Llamada a Procedimientos Remotos • La llamada a procedimiento remoto (RPC Remote Procedure Call) es una tecnología que regula la comunicación entre procesos, es decir, el intercambio de información entre procesos de sistema. • Desarrollada en 1984, por Andrew Birrell y Bruce Nelson • El proceso de comunicación con RPC consta del envío de parámetros y el retorno de un valor de función. A menudo, no se limita a una sola llamada, ya que en la práctica se procesan muchas solicitudes en paralelo. Llamada a Procedimientos Remotos • Llamada a un procedimiento remoto (RPC Remote Procedure Call) se realiza a través de un protocolo que permite a un programa de ordenador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambos. • El cliente invoca procedimiento o rutina que se encuentra remoto (en el servidor). Llamada a Procedimientos Remotos Funcionamiento de RPC Problemas que pueden presentar un RPC • • • • • El cliente no es capaz de localizar al servidor [1]. Se pierde el mensaje de petición del cliente al servidor [2]. Se pierde el mensaje de respuesta del servidor al cliente [3]. El servidor falla después de recibir una petición [4]. El cliente falla después de enviar una petición [5]. Cliente no Puede Localizar al Servidor • Posibles causas: • o El servidor puede estar caído o El cliente puede estar usando una versión antigua del servidor o La versión ayuda a detectar accesos a copias obsoletas Cómo indicar el error al cliente o Devolviendo un código de error (-1) ▪ No es transparente o Elevando una excepción ▪ Necesita un lenguaje que tenga excepciones Pérdida de Mensajes del Cliente • • • • Es la más fácil de tratar. Se activa una alarma (timeout) después de enviar el mensaje. Si no se recibe una respuesta se retransmite. Depende del protocolo de comunicación subyacente. Pérdidas de Mensajes de Respuesta • Más difícil de tratar • Se pueden emplear alarmas y retransmisiones • Algunas operaciones pueden repetirse sin problemas (operaciones idempotentes) o Una transferencia bancaria no es idempotente o La suma de dos números es idempotente • La solución con operaciones no idempotentes es descartar peticiones ya ejecutadas o Un número de secuencia en el cliente o Un campo en el mensaje que indique si es una petición original o una retransmisión Fallos en los Servidores • El servidor no ha llegado a ejecutar la operación o Se podría retransmitir • El servidor ha llegado a ejecutar la operación • El cliente no puede distinguir entre los dos Fallos en los Clientes • La computación está activa pero ningún cliente espera los resultados (computación huérfana) o Gasto de ciclos de CPU o Si cliente vuelve a arrancar y ejecuta de nuevo la RPC se pueden crear confusiones Programación con un paquete de RPC • El programador debe proporcionar: o La definición de la interfaz (IDL) ▪ Nombres de los procedimientos ▪ Parámetros que el cliente pasa al servidor ▪ Resultados que devuelve el servidor al cliente o El código del cliente o El código del servidor • El compilador de IDL genera : o El resguardo (stub) del cliente o El resguardo (stub) del servidor Ejemplos de entornos RPC • DCE: Distributed Computing Environment. Desarrollado entre 1987 y 1989. Fue el primer entorno de calidad comercial en implementar las ideas relativas al RPC. • Sun RPC (ONC): Propuesto por SUN Microsystems, usado en la arquitectura de NFS y en muchos servicios UNIX. • CORBA: Nueva generación de entornos orientados a objetos multiplataforma y multi- lenguaje. • Java RMI: Entorno orientado a objetos del lenguaje de programación Java. • DSA: Distributed System Annex. El entorno RPC para el lenguaje de programacion Ada Resumiendo… • ¿Qué problemas puede presentar un RPC? • ¿Cómo funciona un RMI?