Llamadas a Procedimientos Remotos … send(msg) … receive(rpy) … receive(msg) … send(rpy) Paso de mensajes (visión de bajo nivel) … … x=buscar(1556) … int buscar(int cod) { … … return val; } Llamadas a procedimientos remotos (más alto nivel) Comodidad Cliente Cliente Servidor Servidor (Gp:) ¿?
msg rpy (Gp:) ¿?
Llamadas a Procedimientos Remotos Remote Procedure Call: RPC.
Evolución: Propuesto por Birrel y Nelson en 1985. Sun RPC es la base para varios servicios actuales (NFS o NIS). Llegaron a su culminación en 1990 con DCE (Distributed Computing Environment) de OSF. Han evolucionado hacia orientación a objetos: invocación de métodos remotos (CORBA, RMI).
Funcionamiento General de RPC Cliente: El proceso que realiza una la llamada a una función. Dicha llamada empaqueta los argumentos en un mensaje y se los envía a otro proceso. Queda la espera del resultado. Servidor: Se recibe un mensaje consistente en varios argumentos. Los argumentos son usados para llamar una función en el servidor. El resultado de la función se empaqueta en un mensaje que se retransmite al cliente.
Objetivo: acercar la semántica de las llamadas a procedimiento convencional a un entorno distribuido (transparencia).
Elementos Necesarios Código cliente. Código del servidor. Formato de representación. Definición del interfaz. Localización del servidor. Semánticas de fallo. … … x=buscar(1556) … int buscar(int cod) { … … return val; } Cliente Servidor
Código Cliente/Código Servidor Las funciones de abstracción de una llamada RPC a intercambio de mensajes se denominan resguardos (stubs). SISTEMA CLIENTE CÓDIGO DE LA APLICACIÓN PREPARA ENTRADA CONVIERTE SALIDA INICIO LLAMADA FIN LLAMADA BIBLIOT. EJECUCIÓN RPC ENVÍA ENTRADA RECIBE SALIDA RESGUARDO CLIENTE 1 2 8 9 5 3 PROCEDIMIENTOS EJECUTA PROCEDIMIENTO REMOTO SISTEMA SERVIDOR RECIBE Y PASA RESGUARDO SERVIDOR PREPARA SALIDA TRANSMITE SALIDA CONVIERTE ENTRADA BIBLIOT. EJECUCIÓN RPC 4 6 7
Resguardos (stubs) Se generan automáticamente por el software de RPC en base a la interfaz del servicio. Son independientes de la implementación que se haga del cliente y del servidor. Sólo dependen de la interfaz. Tareas que realizan: Localizan al servidor. Empaquetan los parámetros y construyen los mensajes. Envían el mensaje al servidor. Espera la recepción del mensaje y devuelven los resultados.
Se basan en una librería de funciones RPC para las tareas más habituales.
Formato de Representación Una de las funciones de los resguardos es empaquetar los parámetros en un mensaje: aplanamiento (marshalling).
Problemas en la representación de los datos Servidor y cliente pueden ejecutar en máquinas con arquitecturas distintas. XDR (external data representation) es un estándar que define la representación de tipos de datos. Pasos de parámetros (entrada/salida): Problemas con los punteros: Una dirección sólo tiene sentido en un espacio de direcciones.
Definición de Interfaces: IDL IDL (Interface Definition Language) es un lenguaje de representación de interfaces: Hay muchas variantes de IDL: Integrado con un lenguaje de programación (Cedar, Argus). Específico para describir las interfaces (RPC de Sun y RPC de DCE). Define procedimientos y argumentos (No la implementación). Se usa habitualmente para generar de forma automática los resguardos (stubs). Server ServidorTickets { procedure void reset(); procedure int getTicket(in string ident); procedure bool isValid(in int ticket); }
Página siguiente |