Llamadas A Procedimientos Remotos: Sistemas Distribuidos
Llamadas A Procedimientos Remotos: Sistemas Distribuidos
Llamadas A Procedimientos Remotos: Sistemas Distribuidos
SISTEMAS DISTRIBUIDOS
Creado por Bireel & Nelsonen 1984.
Servidor
... {
Cliente
... ...
x=buscar(1556) ...
... return val;
}
El resultado de la función se
Queda en espera del resultado. empaqueta en un mensaje que se
retransmite al cliente.
Código cliente.
Formato de representación.
int buscar(int cod)
Servidor
Cliente
... {
... ...
Definición de la interfaz. x=buscar(1556) ...
... return val;
}
Semánticas de fallo.
Problemas a resolver:
envía petición
Desempaqueta
la respuesta
Componentes de un sistema basado en RPC
El cliente
El servidor
Middleware
Cliente
Recibe resultado.
Servidor
Tipos de enlace:
Enlace no persistente: la conexión entre el cliente y el servidor se
establece en cada llamada RPC.
Enlace persistente: la conexión se mantiene después de la primera RPC:
Útil en aplicaciones con muchas RPC repetidas.
Problemas si lo servidores cambian de lugar o fallan.
Enlace dinámico
Empaquetado y desempaquetado
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.
Operaciones básicas de un sistema basado en RPC
La computación está activa pero ningún cliente espera los resultados (computación
huérfana)
2. El servidor podría estar utilizando una versión diferente del procedimiento al ser
publicado.
COMPILADOR IDL
COMPILADOR COMPILADOR
MONTADOR MONTADOR
EJECUTABLE EJECUTABLE
DESARROLLO DEL DEL DESARROLLO
DEL CLIENTE SERVIDOR DEL
CLIENTE SERVIDOR
El paquete org.apache.xmlrpc viene en la API xlmrpc-1.2.jar
Podemos indicar al servidor que acepte una serie de direcciones IP’s de clientes:
server.acceptClient ("192.168.0.*");
Se puede indicar al servidor que niegue la conexión de cierto cliente con una IP
específica.
server.denyClient ("192.168.0.3");
Para arrancar el servidor se utiliza la instrucción.
server.start();
Cliente
Cuando hay problemas ( no hay conexión, etc ) se produce una excepción que será
capturada con la instrucción catch.
Cliente
I. Implementar la arquitectura cliente servidor, con RPC, en la que el Servidor sea
capaz de atender múltiples Clientes.
II. A realizar:
I. Implementar el código del Servidor (Server.java)
II. Implementar el código del Cliente (JavaClient.java)
III. Implementar las operaciones básicas de sumar, restar, multiplicar y dividir
a) Clase OperacionMatematica.
Nota: hacer que funciones los códigos presentados con la funcionalidad de realizar las
operaciones básicas.
II. A realizar:
I. El Servidor podrá atender las solicitudes de diferentes Clientes, las cuales son las
tareas 3(A) o 3(B).
II. El Cliente debe teclear la letra o la palabra a buscar, dependiendo de la tarea
3(A) o 3(B) que les fue asignada.
III. El Servidor le entrega los resultados al Cliente.
IV. Deberán hacer funcionar RPC para las tareas 3(A) o 3(B), dependiendo el
caso.
A realizar: Implementar tres hilos con tareas A realizar: Implementar tres hilos con tareas
diferentes. diferentes.
1. Hilo 1 abrirá y leerá un archivo. 1. Hilo 1 abrirá y leerá un archivo.
2. Hilo 2 extraerá las palabras que inician 2. Hilo 2 buscar una palabra (la palabra
con cualquier letra (la letra puede estar en puede estar en el mismo programa o leerse
el mismo programa o leerse desde desde teclado) en el archivo.
teclado).
3. Hilo 3 contabilizar cuántas veces apareció
3. Hilo 3 contabilizará las palabras extraídas. la palabra buscada.
Instrucciones de envío:
Asunto: [SD_19P] Implementación RPC
Correo: [email protected]
Cuerpo del mensaje: Nombre, empezando por apellidos, y matricula
Datos adjuntos: la carpeta del proyecto en *.zip/*.rar donde * es reemplazado
por Matricula_RPC.zip/.rar