Está en la página 1de 23

COMUNICACIN EN SISTEMAS DISTRIBUIDOS

Llamada a
Procedimientos
Remotos (RPC)

PROFESOR
Ing. Christopher Crespo Len Msc.
Qu es una llamada a
procedimientos remotos?
Este mtodo consiste en que los programas llamen a procedimientos

o RPC?
localizados en otras mquinas (manteniendo el enfoque cliente - servidor).

La mquina A llama a un El procedimiento se ejecuta


procedimiento en la mquina B en la mquina B

Maquina
El Proceso que realiza la Maquina
A llamada se Suspende B
El STUB lo bloquea

Las llamadas se hacen de forma transparente para las aplicaciones


Para esto se requiere de STUBS o Suplente de cliente y servidor contenidos en libreras, y
procesos de empaquetamiento y desempaquetamiento de los parmetros pasados en las
llamadas y en el resultado.
Caractersticas de un RPC
1La informacin se transporta de un lado al otro mediante paso de parmetros.

2Se enva un resultado a travs de un procedimiento.

3El procedimiento que hace la llamada y el que la recibe se ejecutan en mquinas


diferentes por lo que utilizan distintos espacios de direcciones de memoria.

4El programador no se preocupa de cmo se realiza la comunicacin entre procesos.

5El programador desarrolla sus aplicaciones de forma convencional con una serie de
procedimientos bien definidos.
Funcionamiento de un RPC
1 2
Un proceso Un proceso Y
X ejecuta el
realiza la El proceso X procedimiento,
llamada y enva el obtiene el
empaqueta mensaje y resultado, lo
los espera el encapsula en
argumentos resultado un mensaje de
en respuesta y se
un mensaje enva al
proceso x
Maquina Maquina
A B

STUB Cliente STUB Servidor


Ejemplo de un RPC
Realizar un procedimiento para sumar dos nmeros sumar (a, b)
Maquina
Maquina B
A

1 4 Ejecuta
Inicia con la llamada Resultado Procedimiento
Suma(3, 4) 8 Remoto (suma)
Fin de la llamada
2 Suma = 7 3
STUB Cliente Convierte la Entrada

5
7 STUB Servidor
Prepara Entrada

6
Convierte Salida
Elementos Bsicos en el
Diseo de un RPC
Existen 4 elementos bsicos para disear e implementar un RPC:

1 Lenguaje de Definicin de Interfaces.

Elementos 2 Transferencia de Parmetros.


Bsicos
3 Enlace dinmico.
1. Lenguaje de Definicin
de Interfaces
Es el lenguaje utilizado para disear la interfaz que permitir la comunicacin entre
el Cliente y el Servidor

Una Interfaz especfica


Nombre de los procedimientos
Parmetros de E/S
Interface Tipo de dato de los mismos

Definition import java.rmi.*; Calculadora.java


import java.rmi.server.*;
Language import java.rmi.registry.*;
import java.net.*;

(IDL) public class CalculadoraImpl extends


UnicastRemoteObject implements
Calculadora {
Puede estar integrado en el // hace falta un constructor explicito
public CalculadoraImpl() throws RemoteException {
propio lenguaje de super();
programacin o puede ser un }
public long suma(long a, long b) throws
lenguaje especfico para el RemoteException {
diseo de interfaces entre C/S . return a + b;
}
public long resta(long a, long b) throws
Los ms conocidos: RemoteException {
return a - b;
Sun RPC, RMI Java, Courier de }
Xerox, AIL. }
1.Lenguaje de Definicin
deCompilador
Interfacesde
Interfaces
Es el encargado de generar automticamente los suplentes (STUB) del Cliente y del
Servidor

Funciones:
Generar un procedimiento STUB del cliente para corresponder a cada
procedimiento de la interfaz.
Generar un proceso STUB del servidor.
Generar las operaciones empaquetamiento marshalling y
desempaquetamiento unmarshalling en cada procedimiento STUB.
Generar los procedimientos de servicio de la definicin de la interfaz
(para lo cual fue definida).
Ejemplo de un RPC con
RMI Java Hola Mundo package ejemplo.hola;
import java.rmi.Remote;
import java.rmi.RemoteException; Hola.java
public interface Hola extends Remote {
Cliente.java String diHola() throws RemoteException;
}
package ejemplo.hola; package ejemplo.hola;
import java.rmi.registry.Registry; Servidor.java
import java.rmi.registry.LocateRegistry; import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry; import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Cliente { public class Servidor implements Hola{
public Servidor() {}
private Cliente() {} public String diHola(){
return "Hola, mundo";
public static void main(String[] args){ }
public static void main(String args[]){
String host = (args.length < 1) ? null : args[0]; try {
try { Servidor obj = new Servidor();
Registry registro = LocateRegistry.getRegistry(host); Hola stub = (Hola) UnicastRemoteObject.exportObject(obj, 0);
Hola stub = (Hola) registro.lookup("Hola");
String respuesta = stub.diHola(); // Liga los datos (stub) del objeto remoto en el registro
System.out.println("respuesta: " + respuesta); Registry registro = LocateRegistry.getRegistry();
} catch (Exception e) { registro.bind("Hola",stub);
System.err.println("Exception del cliente: " + e.toString()); System.err.println("Servidor listo");
e.printStackTrace(); } catch (Exception e) {
} System.err.println("Excepcin del servidor: " + e.toString());
} e.printStackTrace();
} } } }
2. Transferencia de
Parmetros
La comunicacin con RPC en los sistemas distribuidos se da mediante transferencia de
mensajes con paso de parmetros a travs de arquitecturas diferentes (hardware y
software) lo que implica diferentes formatos de representacin de nmeros y
caracteres.

Generando los siguientes


problemas

Representacin de los Datos

Uso de Punteros o Parmetros por Referencia

Pase de parmetros de tipos definidos por el usuario


2.Transferencia de
Parmetros
Representacin de los
Datos
Problema: La maquina del cliente y la del servidor utilizan diferentes formas
de representar nmeros y caracteres, por ejemplo:

Caracteres: EBCDIC vs. ASCII


Nmeros: Big endian vs. Little endian

Solucin: Los Suplentes se encargan de convertir las entradas y salidas en


representaciones intermedias utilizando un estndar.
2. Transferencia de
Parmetros
Uso de Punteros o Parmetros por
Referencia
Problema: al comunicarse mediante RCP en sistemas distribuidos utilizando
punteros o parmetros por referencia se generan problemas de direccionamiento, sobre
escritura, entre otros; ya no se comparte un mismo espacio de memoria (cada mquina
trabaja con su memoria principal).

Solucin:
Prohibir el pase de parmetros por referencias en RPC.
Copiar los datos reales en el mensaje (paso de parmetros por valor).
Ir pasando los datos a medida que el servidor lo requiera.

Solo se deben enviar datos, NO direcciones de memoria


2. Transferencia de
Parmetros
Pase de parmetros de tipos definidos por
el usuario
Problema: al trabajar con tipos de datos definidos por el usuario se presentan
problemas de incompatibilidad entre las mquinas que se comunican ya que no se
trabaja bajo un estndar sino que es un tipo de datos definido por el programador.

Solucin:
Dividir sucesivamente las estructuras hasta alcanzar tipos de datos bsicos, fciles de
reconocer por cualquier mquina.
3. Enlace Dinmico
Permite localizar a los servidores que ejecutan las llamadas a procedimientos remotos
(RCP). Esta es una de las funciones del suplente (STUB) del cliente.
Existe un servidor de nombres o enlazador dinmico donde cada servidor
registra todos los procedimientos o servicios que ofrece junto con su direccin. Por
ejemplo si se utiliza TCP/IP se registra: el protocolo, la direccin IP y el puerto que
se encuentra escuchando.
Si un cliente requiere ejecutar un RCP busca en el servidor de nombres la
direccin del servidor que ofrece el servicio.
El servidor de nombres enva al cliente la direccin del proceso del servidor que
ofrece un determinado servicio.

Mquina A 1Registrar Procedimiento Mquina C


Servidor
Servidor de Resultado del
Nombres
3 Direccin del servidor
web 5 Procedimiento
Web

Servidor de

2 Buscar direccin del


servidor web
Archivos
4 Ejecutar Procedimiento
Mquina B
Resumen
Las funciones de abstraccin de una llamada RPC a intercambio de mensajes se
denominan resguardos (stubs)
TAREAS QUE REALIZAN:

Localizan al servidor.
Empaquetan los parmetros y construyen los
mensajes.
Envan el mensaje al servidor.
Espera la recepcin del mensaje y devuelven los
resultados.
Se basan en una librera de funciones RPC para las
tareas ms habituales.
Protocolos RPC
En los protocolos En el protocolo estndar
orientados a la conexin de propsito general
Se establece una conexin entre cliente

y servidor.
Todo el trfico en ambas direcciones
La utilizacin del protocolo estndar IP
utiliza esa conexin. (o UDP, integrado a IP) posee las
Se maneja a un nivel inferior mediante
siguientes ventajas:
el software que soporta la conexin. El protocolo ya fue diseado, lo que
Es muy til para redes de rea amplia o
ahorra trabajo.
extendida (WAN).
Se dispone de muchas
Es desventajoso en redes de rea local

(LAN): implantaciones, lo que tambin


Por la prdida de performance que ahorra trabajo.
significara procesar software adicional Los paquetes IP se pueden enviar y
para aprovechar la ventaja de no recibir por casi todos los sistemas
perder los paquetes; esto difcilmente UNIX.
se precisa en las LAN.
Los paquetes IP y UDP se pueden
Muchos sistemas distribuidos en reas

geogrficas reducidas utilizan transmitir en muchas de las redes


protocolos sin conexin. existentes.
FUNCIONES DE RESGUARDOS
(STUBS):

Una de las funciones de los resguardos


es empaquetar los parmetros en un
mensaje: aplanamiento (marshalling).
LOS PROCEDIMIENTOS DE
RESGUARDO:
En muchos RPC los procedimientos de resguardo se
generan en forma automtica
oUn compilador lee la especificacin del servidor y

genera un resguardo cliente que empaque sus


parmetros en el formato oficial de los mensajes
oEl compilador tambin puede generar el

resguardo del servidor que los desempaque y que


llame al servidor
RPC DE SUN
Define:

El formato de los mensajes que el cliente (llamador) enva al


invocar un procedimiento remoto.

El formato de los resultados

Utiliza como lenguaje de definicin de interfaz IDL :


Una interfaz contiene un n de programa y un n de
versin.
Cada procedimiento especfica un nombre y un n de
procedimiento
Los procedimientos slo aceptan un parmetro.
Los parmetros de salida se devuelven mediante un
nico resultado.
RPCGEN
Permite al programador usar TCP o UDP Usa XDR
(external data representation)

Ofrece un compilador que facilita el desarrollo del


programa.

Genera cdigo para el cliente y el servidor til para:


Empaquetar los argumentos (marshaling)
Enviar un mensaje RPC Conducir (dipatch) una
solicitud del cliente
Procedimiento adecuado. Enviar un reply
Desempaquetar los argumentos
PROGRAMACIN CON RPC
Muchas Gracias !!

"Cuanto menos
compartes,
menos poder tienes"
Isaac Mao

También podría gustarte