Subido por Ray Garcia Ramos

S08.s2 - Llamadas a procedimientos remotos - RCP

Anuncio
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?
Descargar