Juan Pavn Mestras Dep. Sistemas Informticos y Programacin Universidad Complutense Madrid http:// grasia.fdi.ucm.es/jpavon/dso
RPC
Llamada a procedimiento remoto (Remote Procedure Call)
n
Intentar que los programas puedan llamar a procedimientos localizados en otras mquinas
De manera similar a como se hace una llamada a procedimiento local Proporciona transparencia de distribucin
RPC
RPC
n
n n
Ambos procesos estn en espacios de direcciones distintos Transferencia de parmetros y resultados Heterogeneidad
Qu pasa si las dos mquinas tienen arquitecturas distintas
Fiabilidad
Qu pasa si hay fallos en alguna de las mquinas Qu pasa si hay fallos en el canal de comunicaciones
n n
RPC
RPC
Operacin bsica llamada
Cliente
regreso
KERNEL
llamada
Servidor
regreso
KERNEL
RED DE COMUNICACIONES
JPM, UCM 2001-02 RPC 4
RPC
n n
RPC esconde el cdigo de red en los stubs de cliente y servidor Los stubs se generan automticamente
rpcgen especificacin
Sockets, marshalling de los parmetros, orden de los bytes, temporizadores, control de flujo, reconocimientos, retransmisiones, etc.
Permite seleccionar llamadas locales a procedimientos o remotas, segn la localizacin del procedimiento llamado
RPC 5
Plataformas RPC
n
Paquete de multithreading Varios modelos de RPC y varios tipos de representacin de datos y protocolos de red Servicios: Tiempo, Directorio, Seguridad, Archivos Antes Sun RPC/XDR RFCs 1831 (ONC RPC) y 1832 (XDR)
ONC RPC
n n
cliente
servidor remoto
/u s r/ m a n -a c c e s s = c l i e n t e
/h o m e
/u s r
/
/u s r/ m a n
/l i b
/u s r
/u s r/ b i n
/u s r/ l o c a l
/u s r/ b i n
/u s r/ l o c a l
/u s r/ m a n
nombre local
7
VFS
Otro VFS ( p .e j . P C - F S )
4.2 VFS
Cliente NFS
RPC/XDR
RPC/XDR
RED
JPM, UCM 2001-02 RPC 8
RPC
a 111 portmapper
Aplicacin 3
registra
utiliza
b c
Programa Servidor
RPC
10
= = = =
1; 2; 3; 4;
11
RPC
Proporciona gestin centralizada de informacin de red (no slo de mquinas y direcciones IP, tambin de passwords, servicios, grupos, aliases, etc.) La informacin se guarda en NIS maps
n n
Conjuntos de claves y valores asociados Implementados en archivos dbm localizados en /etc/yp en las mquinas de los servidores NIS
reemplazan o aumentan la informacin de Unix en /etc/
n n
Ejemplos de mapas NIS: hosts, protocols, password, rpc, services, group, netgroup, aliases, timezone, NIS domain: un conjunto de NIS maps
Define un rea de control administrativo
RPC
12
un servidor NIS maestro y los dems funcionan como esclavos Se puede invocar con la orden ypinit
n n
Los clientes NIS, en vez de acceder a los archivos /etc hacen RPC al servidor NIS cada vez que necesitan informacin de una base de datos NIS
n n n
ypwhich dice el nombre del servidor NIS que usa ypbind ypcat passwd -- equivaldra a hacer cat /etc/passwd ypmatch nombreusuario passwd -- ypcat passwd | grep nombreusuario
RPC
13
Java RMI
RMI (Remote Method Invocation)
n n
Extensin de RPC para objetos Java Permite acceder a mtodos de objetos remotos
CLIENTE ObjetoCliente
RPC
14
JavaRMI
n n
El cliente solicita una instancia de una clase utilizando sintaxis URL El cliente utiliza el objeto remoto como si fuera local
n n
Las conexiones de red se soportan automticamente La serializacin de Java se utiliza para pasar los parmetros sin tener que escribir cmo parsearlos y reconstruirlos
Los tipos atmicos se pasan por valor Los objetos remotos se pasan por referencia Los objetos locales se pasan por valor (una copia)
JavaRMI
n
Empaqueta el identificador del objeto remoto Empaqueta el identificador del mtodo Codifica y empaqueta los parmetros (marshalling) Enva el paquete al skeleton del servidor Desempaqueta y descodifica los parmetros (unmarshalling) Llama al mtodo del objeto, que devolver un valor o una excepcin Codifica y empaqueta el valor de retorno (marshalling) Enva el paquete al stub del cliente
n n
RPC
16
Definicin de interfaz
n n
La interfaz define los servicios ofrecidos por el objeto remoto La utilizan tanto el cliente como el servidor
Ejemplo:
package Contador; public interface ContadorRMI extends java.rmi.Remote { int getCuenta() throws java.rmi.RemoteException; void setCuenta(int valor) throws java.rmi.RemoteException; } n La interfaz debe heredar de java.rmi.Remote n Las excepciones java.rmi.RemoteException se pueden producir por problemas de comunicacin, o cada del servidor
RPC
17
Utilizando la operacin Naming.lookup(url) Tiene que conocer la direccin de la mquina servidor remota y el nombre del objeto remoto, con los que construye un URL de la forma
rmi://hostname/objectname
Mientras exista una referencia al objeto remoto, se mantiene la conexin La conexin se cierra cuando se elimina el proxy del objeto remoto por el recogedor de basura
RPC
18
10
ContadorRMI
rmiregistry
(Naming)
21
22
11
3) Compilar el cliente: javac Contador.ClienteContador 4) Arrancar el RMI Registry (una sola vez): n En Windows: start rmiregistry n En Unix: rmiregistry &
Por defecto utiliza el puerto 1099 (aunque se puede especificar otro)
JPM, UCM 2001-02 RPC 24
12
RPC
25
JavaRMI en Applets
n
Los applets slo pueden conectarse con el servidor desde donde se descargaron
n
El RMI Registry y el servidor de objetos remotos deben estar en la misma mquina del servidor HTTP desde donde se descarg el applet Innecesario especificar un nuevo RMISecurityManager
El stub de protocolo RMI 1.2 slo es soportado por las ltimas versiones de IE y Netscape
n
RPC
26
13
Ejercicio
n
RPC
27
Bibliografa
n
Java RMI:
n
http://java.sun.com/products/jdk/rmi (pginas oficiales de Sun) http://www.parallax.co.uk/cetus/oo_javabeans.html (Cetus links) A. Birrell y B. Nelson, Implementing Remote Procedure Calls, ACM Transactions on Programming Languages and Systems, vol.2, n. 1, feb. 1984, pp. 39-59 A. Birrell, Secure Communication Using Remote Procedure Calls, ACM Transactions on Computer Systems, vol. 3, n. 1, Feb 85, pp. 1-14 OSF, Introduction to OSF DCE, Englewood Cliffs, Prentice Hall, 1992
RPC 28
RPC
n
14