Sie sind auf Seite 1von 7

Llamadas a Procedimientos Remotos (RPC)

Basado en el libro Internetworking with TCP/IP. Vol III. D. E Comer y D. Stevens Algunas Ilustraciones se tomaron de Practical Unix Programming. K. Robbins y Robbins

RPC
Conceptos ? Generacin de Programas Distribuidos (Concepto de RPCGEN) ? Ejemplo
?

Comer & Stevens

M. Curiel

Comer & Stevens

M. Curiel

Paradigmas
?

Diseo orientado a comunicaciones


? ? ?

Conceptos
?

Se comienza con el protocolo Se disea el formato de los mensajes y cmo el cliente y el servidor reaccionan y responden a los mensajes

Diseo orientado a la aplicacin


? ?

Comer & Stevens

M. Curiel

Se disea una aplicacin para resolver el problema. Se hacen pruebas en una sola mquina Se divide el programa en varias piezas que se ejecutarn en distintos computadores y se aade el protocolo.
Comer & Stevens M. Curiel

Modelo Conceptual
Subrutinas main
func()
Espacio Usuario

Llamadas al Sistema
Espacio Usuario Espacio del Kernel
sys_func(void ){

Espacio usuario

Programa usuario

llamada

retorno

Funcin de librera

sys_func() func(void ){

trap

Retorno del trap

proc1

proc2

proc3
}

System call

proc5

proc6
Thread de ejecuci n Thread de ejecuci n Thread bloqueado Trap-return
Espacio del kernel

Comer & Stevens

M. Curiel

Comer & Stevens

M. Curiel

Programa Distribuido
Comp. local
Computador 1
Cliente

Proceso en el Cliente

Proceso en el Servidor

Comp. remoto
Funciones del Servidor
func(void ){

Cliente

Funciones del Serv.

llamada Remota

retorno

Llamada y retorno lgico

llamada

retorno

Stub del Cliente

Stub del Servidor

main proc1 proc2

Computador 2

func()

Req. Marshaled

Retorno Marshaled

Req. Marshaled

Retorno Marshaled

proc3
Servicios de red
Thread de ejecuci n Thread bloqueado
kernel del cliente Kernel del servidor

Red

proc4

proc5

Servicios de red

Llamada a proc. remota

RPC (Remote Procedure Call)


?

RPC y Procedimientos Locales


?

Es una poderosa tcnica para el desarrollo de aplicaciones distribuidas, basadas en el paradigma cliente/servidor. Extiende la nocin de llamadas a procedimientos locales, de forma tal que el procedimiento llamado no tiene que estar en la misma mquina donde reside el llamador.
Comer & Stevens M. Curiel

En RPC se transfiere el control al procedimiento llamado. El llamador se suspende. La respuesta del servidor es anloga al return(). El flujo de control vuelve al llamador y el llamado deja de ejecutarse. Existen llamadas anidadas: un procedimiento remoto puede llamar a otro. El Servidor se convierte en cliente de otro servicio.

10

Comer & Stevens

M. Curiel

RPC y Procedimientos Locales (cont.)


Un procedimiento convencional permanece inactivo. El proceso servidor existe en el sistema remoto y est esperando solicitudes de sus clientes. ? Un procedimiento convencional acepta pocos argumentos y retorna pocos resultados. Un servidor acepta y retorna cantidades arbitrarias de datos.
? 11
Comer & Stevens M. Curiel

RPC y Procedimientos Locales (cont.)


RPCs pueden ser varios ordenes de magnitud ms lentas que una llamada local. ? Se pueden pasar apuntadores como argumentos de procedimientos locales. Un procedimiento remoto opera en un espacio de direcciones distinto. No se pueden pasar apuntadores .
? 12
Comer & Stevens M. Curiel

RPC y Procedimientos Locales (cont.)


?

SUN RPC: Definicin


?

El procedimiento remoto no comparte el ambiente del llamador. No tiene acceso directo a los descriptores de archivo o a las funciones del SOP.

Define:
?

El formato de los mensajes que el cliente (llamador) enva al invocar un procedimiento remoto. El formato de los resultados

? ? ?

Permite al programador usar TCP o UDP Usa XDR (external data representation) Ofrece un compilador que facilita el desarrollo del programa

13

Comer & Stevens

M. Curiel

14

Comer & Stevens

M. Curiel

Programas remotos
Un programa remoto es la unidad bsica de software que se ejecuta en un computador remoto. Equivale al servidor. ? Se compone de un conjunto de procedimientos y datos globales
? proc1 proc2 proc3

Programas remotos
Argumentos: se pasan en una estructura (struct de C). ? Identificacin:
?

A cada programa se le asigna un identificador de 32 bits ? A cada procedimiento se le asigna un nmero entero: 1,2,..N. ? Tambin se incluye un nmero de versin.
?

Datos Globales Compartidos 15


Comer & Stevens M. Curiel

(prog,vers, proc) 16
Comer & Stevens M. Curiel

Programas remotos
?

Programas remotos
?

Exclusin Mutua:
?

Al menos una vez


?

Como mximo se puede invocar un procedimiento en un programa remoto (exclusin mutua entre procedimientos)

Si una llamada a procedimiento remota retorna, el llamador puede concluir que el procedimiento se invoc al menos una vez. Si una llamada a proc. remota no retorna, ste pudo haber sido invocado cero o ms veces. Cada llamada a procedimiento debe ser idempotente.
Comer & Stevens M. Curiel

Semntica de Comunicacin: permite elegir


entre ? TCP: confiable ? UDP: eficiente

Cero o ms veces:
?

17

Comer & Stevens

M. Curiel

18

Mapping entre un programa remoto Programas remotos


?

y un puerto
?

Retransmisiones:
?

Existe una estrategia de retransmisin sencilla basada en timeouts. Los timeouts no se adaptan a las condiciones de la red. El software en la mquina del llamador puede, despus de varios intentos, declarar que el procedimiento remoto no se pudo ejecutar. Esto no garantiza que nunca se ejecut.
? ?

? ?

19

Comer & Stevens

M. Curiel

20

Para hacer posible la comunicacin, a cada servicio se le asigna un nmero de puerto que conocen todos los clientes. Programas RPC (32 bits), puertos (16 bits). Los programas remotos obtienen puertos dinmicamente. Las asignaciones son temporales. El servidor, cuando inicia su ejecucin, pregunta al sistema por un puerto. El sistema puede elegir cada vez un nmero de puerto diferente.
Comer & Stevens M. Curiel

Mapping entre un programa remoto


y un puerto
?

Mapping entre un programa remoto


y un puerto
?

Al no conocer el puerto, el cliente no puede contactar al servidor directamente. El cliente slo conoce el host y el nmero de programa. Debe ser capaz de obtener el puerto asignado al servidor. El mapping o asociacin se debe hacer de forma dinmica. RPC incluye un servicio de asociacin dinmica.

Cada mquina que ofrece un programa RPC con un mecanismo que permite al cliente obtener el nmero de puerto del servidor: port mapper.
Server: Programa RPC Server registra (programa, puerto) Port Mapper

Puerto que Usa el servidor remoto

Puerto bien conocido Comer & Stevens M. Curiel

21

Comer & Stevens

M. Curiel

22

Mapping entre un programa remoto


y un puerto
?

Marshaling
Para transferir los argumentos entre computadoras estos deben ser representados con un formato externo. Las listas, por ejemplo, deben colocarse en una representacin compacta (marshaling). ? Los siguientes trminos se usan para denotar la tarea de codificar argumentos:
?

Cuando un servidor RPC comienza a ejecutarse, solicita un puerto del sistema que usa para sus comunicaciones El servidor contacta al port mapper para aadir la siguiente informacin a la BD:
(Nro. Programa, puerto)

Ahora los llamadores pueden saber el puerto del servidor enviando un mensaje al port mapper al puerto 111. ? Al saber el puerto el cliente puede contactar 23 directamente al servidor. Comer & Stevens
?

marshal, linearize, serialize


M. Curiel

24

Comer & Stevens

M. Curiel

Mecanismos de programacin Generacin de Programas Distribuidos: RPCGEN


Sun RPC ofrece:
?

Rutinas para convertir datos simples y complejos al formato XDR Rutinas de librera para llamar un procedimiento remoto, registrar un servicio con el port_mapper, conducir una llamada al procedimiento adecuado dentro del prog. remoto. Una herramienta que produce programas fuentes en C.

25

Comer & Stevens

M. Curiel

26

Comer & Stevens

M. Curiel

XDR (Interface Description Language)


? ?

XDR
Enum Priority { PRIO_LOW = 1; PRIO_MED = 1; PRIO_HIGH = 1; }; Struct alarm { Priority prio; string text<>; /* string de tamao variable */ } ?

Similar a declaraciones en C, pero son lenguajes diferentes Se ofrecen los tipos bsicos: int, short,char long. Nmeros de doble precisin (float, double). El tipo void. Se da el soporte para tipos definidos por el usuario: typedef, structs, unions, arrays, tipos enumerados Se definen tipos extra: bool, string
Comer & Stevens M. Curiel

Unions

Enum ReturnType { RESULT_NAME = 1; RESULT_CODE = 2; }; Union Result switch(Return type){ case RESULT_NAME: string name<>; case RESULT_CODE: int code; default: void; };

rpcgen h N test.x > test.h 27 28


Comer & Stevens M. Curiel

XDR
?

Listas

Especificacin de los programas

Rutinas de Librera
Enviar un mensaje a un servidor:
clientrpc(host,prog, progver, procnum, inproc, im , outproc, out) inproc: progrma que hace el marshaling de los argumentos a enviar. in: direccin de los argumentos outproc: procedimiento local para hacer unmarshaling de los resultados. out:direccin en memoria donde se quedan los resultados.

struct List { List* next; string data<>; }; typedef List* ListPtr;

Program PROG { version PROG1 { void PROG_PROC1( int a) void PROG_PROC2(string } = 1; version PROG2 { Program RPCDEMO { void PROG_PROC1( int a, version RPCDEMO_VERS_ORIG { void PROG_PROC2(string void RPCDEMO_PRINT(ListaPtr lp ) = 1; } = 2; } = 1; } = 600000; } = 600000;

= 1; str<>) = 2;

int b) = 1; str<>) = 2;

29

Comer & Stevens

M. Curiel

30

Comer & Stevens

M. Curiel

Rutinas de Librera
Handle = cln_create (host,prog, ver, proto) Crea un identificador que puede usarse para enviar mensajes RPC. host, prog y ver: host, programa y versin. proto: protocolo

RPCGEN
?

Genera cdigo para el cliente y el servidor til para:


Empaquetar los argumentos (marshaling) Enviar un mensaje RPC ? Conducir (dipatch) una solicitud del cliente al procedimiento adecuado. ? Enviar un reply ? Desempaquetar los argumentos
? ?

31

Comer & Stevens

M. Curiel

32

Comer & Stevens

M. Curiel

Programacin Distribuida
Los argumentos deben coincidir con los parmetros formales. ? Hay que aadir cdigo: los procedimientos adicionales se llaman Stubs. En el cliente, el stub reemplaza al procedimiento llamado. En el servidor, reemplaza al llamador.
? 33 34

Proc. B Proc. A

Llamada remota
Stub del Cliente

Stub del Servidor

Proc. A1

Proc. A2

Proc. B1 Stub S. B1

Proc. B2 Stub S. B2

Stub C. B2 Stub C. B1

Llamada remota

Dispatcher

Comer & Stevens

M. Curiel

Comer & Stevens

M. Curiel

Proceso en el Servidor Proceso en el Cliente

rdict.c
Funciones del Serv.

rdict_cif.c Cliente Iface rdict

Cliente

Archivos

llamada Remota

retorno

llamada

retorno

Aplic. Cliente

Infaz. cliente

Infaz. servidor Comm. servidor

Stub del Cliente

Comm. Cliente

rdict_clnt.c rdict.h rdict.x rpcgen rdict_xdr.h rdict_svc.h

Req. Marshaled

Retorno Marshaled

Req. Marshaled

Retorno Marshaled

Comp. C

Cliente

Servicios de red

RPC

Servicios de red

Especificacin del programa

rdictd Comp. C Proc. remotos rdict_srp .c Server Iface Servidor

kernel del cliente

Kernel del servidor

Rdict_sif.c
M. Curiel

36

Comer & Stevens

Archivos de Salida
rdict.h = declaraciones de constantes y tipos rdict_xdr.h = rutinas XDR para codificar los argumentos rdict_clnt.c = Stub de comunicaciones del lado del cliente rdict_svc.c = Stub de comunicaciones del lado del servidor

Pasos para el desarrollo de una aplicacin distribuida


? ?

? ? ? ? ?

Desarrolle y pruebe una aplicacin convencional Elija un conjunto de procedimientos para colocarlos en una mquina remota. Colquelos en un archivo separado. Escriba la especificacin para rpcgen y ejecute rpcgen Escriba las interfaces para cliente y servidor Genere el ejecutable del cliente: aplicacin, stubs, rutinas XDR Genere el ejecutable del servidor: stubs, procedimientos, rutinas XDR. Ejecute el servidor en una mquina remota. Ejecute el cliente.
Comer & Stevens M. Curiel

37

Comer & Stevens

M. Curiel

38

main

Ejemplo
nextin insertw

initw deletew

lookupw

Comando
I i d l q

Argumento

Funcin
Inicializa la BD. Elimina todas las palabras Inserta una palabra en la BD Elimina una palabra de la BD
deletew Programa remoto en Comp2 Cliente en Comp1 initw main insertw Estructura de datos del diccionario

palabra palabra palabra

Busca una palabra en la BD Termina el programa


Comer & Stevens M. Curiel

nextin lookupw

39

Das könnte Ihnen auch gefallen