iii invocación remota. uneg
DESCRIPTION
una forma de montar una red clusterTRANSCRIPT
Introducción
Protocolos Request – Reply
Llamadas a Procedimientos Remotos (RPC)
Invocación a Métodos Remotos
Ejemplo: Java RMI
III-2 Invocación Remota
Capas Intermedias - Middleware
Applications
CapasIntermedia
Underlying interprocess communication primitives:
Sockets, message passing, multicast support, overlay networks
UDP and TCP
Remote invocation, indirect communication
Invocación Remota,Mcomunicación indirecta
La comunicación entre procesos en SD: - Protocolos Solicitud-Respuesta/Request – Reply - Llamadas a Procedimientos Remotos - Invocación a Métodos Remotos
Protocolos Solicitud-Respuesta/Request – Reply
SíncronoReconocimientos redundante ya que cada solicitud es
seguido de una respuesta
Establecer una conexión involucar dos pares de mensajes además del par solicitud-respuesta
Control del flujo es redundante para la mayoría de las invocaciones, que contienen argumentos pequeños y respuestas a ellos.
Protocolo Solicitud-Respuesta/ Request-reply
Request
ServerClient
doOperation
(wait)
(continuation)
Replymessage
getRequest
execute
method
messageselect object
sendReply
Protocolo Request-reply: Síncrona: Cliente se bloquea hasta que recibe respuesta Puede usar TCP o UDP. Para ello pesa + Redundancia por reconocimiento + Pares de mensajes adicionales por request / reply + Redundancia por Control de Flujo
Operaciones del protocolo request-reply
public byte[] doOperation (RemoteRef s, int operationId, byte[] arguments) envía una solicitud al servidor y éste retorna una respuesta. Los argumentos especifican el servidor remoto, las operaciones que se invocarán y los argumentos de esas operaciones.
public byte[] getRequest ();
solicita una petición de cliente a través del puerto del servidor.
public void sendReply (byte[] reply, InetAddress clientHost, int clientPort);
envía un mensaje de respuesta al cliente a su dirección internet y puerto
. doOperation: Operacion Bloqueante - métodos para obtener la dirección y puerto del servidor - Envia un request e invoca un receive - se bloquea. Cuando recibe la respuesta se desbloqueagetRequest: Ocurre en el servidor. sendReply: servidor responde
Estructura del mensaje Request-reply
messageType
requestId
remoteReference
operationId
arguments
int (0=Request, 1= Reply)
int
RemoteRef
int or Operation
array of bytes
RequestID (id petición): sucesión de enteros + puerto y dirección internet Modelo de Fallas: Con UDP el modelo de fallas es igual. - doOperation esta provisto de timeout - eliminación de mensajes duplicados - pérdidas de mensajes de respuesta : servidores con operaciones idempotentes o servidores con historia
Estilos de Protocolo de Intercambio: RPC
R Request
RR Reply
RRA Acknowledge reply
Request
Request Reply
Client Server Client
Nombre Mensaje enviado por
Con UDP:R: No se espera por respuesta. Se implementa sobre UDPRR: se basa en el protocolo resquest y reply pero sin los mensajes de reconocimiento Para UDP sirve para superar su modelo de falla (en cuanto a retransmisión de mensaje)RR A: solicitud-respuesta- confirmación. - No se bloquea el cliente. - confirmación contiene el requestId de la solicitud / - Limpiar historial del servidor
TCP: Simplifica la implementación
Ejemplo: Mensaje de solicitud de HTTP
GET //www.dcs.qmw.ac.uk/index.html HTTP/ 1.1
URL or pathnamemethod HTTP version headers message body
-Implementado sobre TCP:Cliente envía una solicitud y el servidor acepta una conexión en el puerto del servidor o en el puerto especificado en el URLEl cliente envia un mensaje de solicitud al servidosEl servidor envia una respuesta al clienteLa conexión se cierra
-Se modificó a: conexiones persistentes: permanecen abiertas sobre una serie de intercambios solicitud-respuesta .
Operaciones idempotentes: Si: cliente recibe del servidor el cierre de la conexión entonces el browser reenvía la solicitud
sin involucrar al cliente No: el browser consulta al cliente que hacer
método: GET, PUT, POST, etcProtocolo negocia contenido: que tipo de representación datos, lenguajes, etc. Autenticación: del estilo name y password
Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
Ejemplo: Mensaje de respuesta de HTTP
HTTP/1.1 200 OK resource data
HTTP version status code reason headers message body
RPC - Llamadas a Procedimientos Remotos
RPC:
Representa un gran aporte a los sistemas
distribuidos al proporcionar un nivel alto de
transparencia en la distribución
Extiende la abstracción de llamadas a
procedimientos para ambientes distribuidos
RPC - Llamadas a Procedimientos Remotos
Cuestiones de Diseño sobre RPC:
Estilo de programación
Semántica asociada a las llamadas
Transparencia
RPC - Llamadas a Procedimientos Remotos
Cuestiones de Diseño sobre RPC:
Programación con interfaces: Para controlar la interacción entre módulos. Las interfaces contienen procedimientos y
variables bien definidos.
Interfaces en Sistemas Distribuidos: cada servidor proporciona procedimientos a los
clientes.
No Detalle de implementación, No lenguaje de programación y Si evolución
software
No hay acceso a variables mediante ejecución de procesos remotos
No mecanismos pase de parámetros (llamada por valor o referencia)
Direcciones en procesos locales no son válidas en los remotos
RPC - Llamadas a Procedimientos Remotos
Cuestiones de Diseño sobre RPC: Programación con
interfaces:
Mecanismo RPC se integra con el lenguaje de programación e
incluye la notación adecuada para la definición de interfaces
permiteindo mensajes input/output
Escritas en variedades de lenguajes, C++, Java, …
Lenguajes de definición de interfaces (IDL) están diseñados para
permitir que los procedimientos implementados en distintos
lenguajes puedan ser invocados por otros
CORBA IDL example
// In file Person.idlstruct Person {
string name; string place;long year;
} ;interface PersonList {
readonly attribute string listname;void addPerson(in Person p) ;void getPerson(in string name, out Person p);long number();
};
RPC - Llamadas a Procedimientos Remotos
Cuestiones de Diseño sobre RPC: Llamadas a procedimientos Remotos
La operación doOperation puede ser implementada:Reintentar mensaje de petición: retransmitir hasta que se reciba respuesta o el
servidor asume que hay una falla
Filtros duplicado: controla la retransmisión y filtrado de respuesta duplicadas
Retransmisión de Resultados: controla si mantiene la historia del mensaje realizados para permitir la retransmisión sin re-ejecutar operaciones
RPC - Llamadas a Procedimientos RemotosSemántica de Llamadas (Call semantics)
Fault tolerance measures Callsemantics
Retransmit request message
Duplicate filtering
Re-execute procedure or retransmit reply
No
Yes
Yes
Not applicable
No
Yes
Not applicable
Re-execute procedure
Retransmit reply At-most-once
At-least-once
Maybe
Tal- vez: aplicaciones donde fallas son aceptables (fallas por omisión o caidas)al-menos-una: el invocador recibe al menos un resultado (respuesta o excepción). Fallas por caidas o arbitrarias(el servidor responde a varias retransmisiones) servidores idempotentescomo-máximo-una: se asegura que una solicitud sea respondida
RPC - Llamadas a Procedimientos RemotosTransparencia
Llamada a procedimientos remotos es vulnerable a fallas, ya que involucra redes y otras computadoras
La latencia en RPC es mayor que en llamadas locales
La escogencia de cuan transparente es el sistema descansa sobre el diseñador:
Implementar rutinas para excepciones en caso de la comunicación no sea posible
El consenso es que no debe haber transparencia en cuanto ubicación de procedimientos
RPC - Llamadas a Procedimientos RemotosRol del cliente y del servidor en procesos stub
client
Request
Reply
CommunicationCommunication
module module dispatcher
service
client stub
server stubprocedure procedure
client process server process
procedureprogram
Stub procedure en el servidor junto al despachador: * el despachador selecciona el procedimiento stub acorde al servicio * el stub desempaqueta los argumentos en un mensaje de solicitud y llama al servicio. Luego empaqueta respuesta - se comporta como un proxy- usa la semántica al-menos-una y como-máximo-una
Stub procedure en el cliente: servicio que empaqueta el identificador del procedimiento y los argumentos en un mensaje de solicitud, que se envía al servidor
const MAX = 1000;typedef int FileIdentifier;typedef int FilePointer;typedef int Length;struct Data {
int length;char buffer[MAX];
};struct writeargs {
FileIdentifier f;FilePointer position;Data data;
};
struct readargs {FileIdentifier f;FilePointer position;Length length;
};
program FILEREADWRITE { version VERSION {
void WRITE(writeargs)=1; 1Data READ(readargs)=2; 2
}=2;} = 9999;
IDL: la interfaz, proporciona no. de programa y versión. La definición de un procedimiento especifica su identificación y el número del procedimiento.Se permite solo un parámetro de entrada. Y los parámetos de salida retornan a través de una simple salida- El procedimientoconsiste de un tipo de resultado, nombre procedimiento y parámetro de entrada
Caso de Estudio: Interfaz de archivos en Sun XDR
no.programa
version
no.procedimiento
Caso de Estudio: SUN RPC
SUN RPC: comunicación cliente-servidor para la red SUN NFS
Sistemas operativos de Sun y UNIX
Implementadores tienen la opción de llamadas a procedimientos remotos sobre UDP o TCP
Otra opción es la multi-difusión con RPC
Lenguaje de interfaz XDR
Caso de Estudio: SUN RPC
Enlazador (Binding)SUN RPC usa un servicio de enlace llamado enlazador de puertos
Cada enlazador de puerto tiene el no.programa, no.versión y no.puerto de cada servicio local
Un servidor registra el no.programa, no.versión y no.puerto en el enlazador de puerto
Cliente consulta al enlazador de puerto
Autenticación
Solicitudes del cliente contienen las credenciales del usuario clienteCampo cabecera se identifica que protocolo se usa
Protocolos: Ninguno, Unix, clave compartida, Kerberos
Unix: usa un gid y uid
Métodos para Invocación Remota (RMI)
RMI y RPC se parecen en:Soportan programación por medio de interfaces
Construidas sobre protocolos Request-Reply (petición-respuesta) y con semánticas al-menos-uno y como-máximo-uno
Niveles de transparencia similares
RMI y RPC se diferencian en:Usar la expresividad de la OO
Puede usar la identificación del objeto para procedimientos de tipo pase de parámetros
RMI – Objetos Distribuidos
En OO la distribución se concreta cuando un programa está separado en varios objetos
Referencia de Objetos: usa la identificación del objeto para procedimientos de tipo pase de parámetros
Interfaces: definición de argumentos y sus tipos, valores de retorno y excepciones; sin especificar implementaciones
Acción: se inicia con objeto invocando método en otro objeto
Excepción: forma de lidiar con condiciones de errores
Colector de basura: medio para liberar espacio
RMI- Métodos para Invocación Remota y Locales
invocation invocationremote
invocationremote
locallocal
local
invocation
invocationA B
C
D
E
F
Referencia a Objeto Remoto: objetos pueden invocar métodos de un objeto remoto si tiene acceso a su referencia de objeto remoto - Interfaz Remota: especifica cuales métodos pueden invocarse remotamente
Modelo de Objetos Distribuido. - Referencia a Objetos Remotos, ROR-Objeto remoto que recibe una invocación a método remoto se especifica por medio de una ROR-Las ROR pueden pasarse como argumentos y resultados de invocación a métodos remotos
RMI - Un Objeto Remoto y su Interfaz Remota
interfaceremote
m1m2m3
m4m5m6
Data
implementation
remoteobject
{ of methods
Interfaz Remota:- Acción: se inica al invocar un método (*).- Recolector de basura Distribuido: cooperación entre el colector local y un módulo añadido que colecciona la basura distribuida- Excepciones: manejo de errores en la distribución del objeto (timeouts) y ejecución de métodos invocados
RMI - Instanciacion de objetos remotos
RMI - El rol del proxy y esqueleto en invocacion de métodos remotos
RMI - El rol del proxy y esqueleto en invocacion de metodos remotos
Módulo de Comunicación Proporcionan semántica de invocación, como ejemplo, al-menos-uno Transmite mensaje de solicitud/respuesta entre cliente y servidor Solicitud es (tipo de mensaje, IdSolicitud, ref objeto remoto, IdOperacion, Argumentos) En el servidor selecciona el despachador para la clase de objeto que se invoca. El despachador ubica la referencia local del objeto por medio del Módulo de Referencia Remota
Módulo de Referencia Remota Responsable de trasladar referencias de objets de locales a remotas y creación de referencias remotas Contiene una tabla de objetos remotos y una tabla para cada proxy local Actúa de la manera sig.: - 1era vez cuando se pasa un objeto remoto, el módulo de referencia remota crea una referencia al objeto remoto y se añade a la tabla de objetos remotos - Cuando llega referencia a un objeto remoto, el módulo de referencia obtiene referencia al objeto local, la cual es un proxy o un objeto remoto. Si el objeto remoto no está en la tabla se crea el proxy y se añade el módulo de referencia remota
RMI - El rol del proxy y esqueleto en invocacion de metodos remotos
Criado (servant) instancia de una clase que proporciona el cuerpo de un objeto remoto. Maneja el requerimiento remoto pasado por el esqueleto correspondiente Se crea cuando se instancia el objeto remoto
Proxy proporciona que los métodos de invocación remota sean transparente al usuario comportandose como un objeto local Esconde los detalles del empaquetamientos/desempaquetamiento, referencias a objetos remotas,
Despachador un servidor tiene un despachador y un esqueleto recibe la petición desde el módulo de comunicación usa el IdOperacion para seleccionar el método adecuado en el esqueleto
Esqueleto Implementa el método en la interface remota. Desempaqueta los argumentos e invoca el método correspondiente en el criado Espera que la invocación se complete y empaqueta los resultados
RMI - Invocacion de Metodos Remotos -Invocación dinámica
Invocación Dinámica proporciona al cliente acceso a una representación genérica de una invocación remota (con el método doOperation). El cliente proporciona una referencia al objeto remoto, el nombre del método y los argumentos al operador doOperation, espera y recibe resultado Una alternativa para interfaces que no pueden predecirse en el diseño. Ejm: JAVA RMI
Esqueletos Dinámicos como consecuencia, el servidor tien interfaces no conocidas en tiempo de compilación
RMI - Invocacion de Metodos Remotos -Programas en Cliente/Servidor
Métodos Factory las interfaces a objetos remotos no tienen constructores. Los CRIADOS se crean cuando se inicializa o en métodos diseñado para tal fin. Los Métodos Factory se llaman a aquellos que crean CRIADOS
Enlazador: es un servicio separado que mantiene una tabla que mantiene la correspondencia entre el nombre textual y las referencias a objetos remotos
Hilos del Servidor
RMI - Invocacion de Metodos Remotos – Activación de Objetos
Activación de Objetos remotos. Objeto Activo: aquel que está disponible por invocación dentro de un proceso de ejecución Objeto pasivo: aquel que no esta activo pero puede activarse Consiste de : la implementación de sus métodos su estado en forma empaquetada Activación; crea un objeto activo a partir de uno pasivo, creando nuevas instancias de clase e inicializando variables Activador: registra el objeto pasivo disponible para activación, que se involucra guardar nombres de servidores, archivos, URL del objeto pasivo arranca proceso de servicio con nombre y activa objeto remoto, mantiene ubicación de los sevidores de los objetos remotos activados
RMI - Invocacion de Metodos Remotos –
Guardar Objetos Persistentes Objetos Persistentes: objeto cuya vida esta garantizada entre procesos de activación. Almacenamiento de Objetos Persistentes: guardan la forma empaquetada de los objetos persistentes Estrategia para activación/desactivación de los objetos persistentes
Ubicación de Objetos La dirección de internet y el número de puertoproporcionan una dirección única y puede ser utilizada como referencia al objeto remoto un servicio de localización ayuda al cliente a ubicar el objeto remoto con esa referencia a objetos remotos. Si el objeto se ha movido, se envía un mensaje de difusión.
Colector de basura distribuida recupera la memoria cuando no exista una referencia a un objeto local o remoto
RMI - Invocacion de Metodos Remotos (3)
Colector de basura distribuida: Algoritmo distribuido de compactación automática de memoria.
- Cada proceso servidor mantiene un conjunto de nombres de los procesos que mantienen referencias a objetos remotos por cada uno de sus objetos remotos. Este conjunto se puede mantener en una columna adicional de la tabla de objetos remotos.
- Cuando un cliente C recibe primero una referencia remota a un objeto remoto en particular, B, hace una invocación AddRef (B) al servidor de ese objeto remoto y luego crea un proxy; el servidor agrega un apuntador C a B.
- Cuando recolector de basura de un cliente C nota que un proxy de un objeto remoto B no está accesible, hace una invocación removeRef (B) al servidor correspondiente y luego borra el proxy; el servidor elimina apuntador C de B.
- Cuando apuntador B está vacío, el recolector de basura local del servidor recuperará elel espacio ocupado por B a menos que existan apuntadores locales.
RMI - Invocacion de Metodos Remotos (4)
Concesiones en Jini
Jini es una arquitectura para construir sistemas distribuidos, llamado también Apache River https://river.apache.org/
Usa un sistema de concesiones para evitar protocolos complicados quese derivan del mantenimiento de enlaces a objetos remotos
Los recursos se ofrecen por un periodo de tiempo llamado concesión
Al término de la concesión, Si el recurso se necesita el usuario hace una renovación de la concesión
Asignación:
Caso de Estudio Java RMI-
A continuación tienen los algoritmos que se usan para la implementación de Java-RMI. Explicar como opera Java-RMI
Explique que es la Reflexión
Conteste los ejercicios:
5.1, 5.2, 5.3, 5.5, 5.6, 5.7, 5.8, 5.9. 5.10, 5.11, 5.12,
5.22, 5.23, 5.24
Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
Java RMI - Interfaces Shapey ShapeList
import java.rmi.*;import java.util.Vector;public interface Shape extends Remote {
int getVersion() throws RemoteException;GraphicalObject getAllState() throws RemoteException; 1
}public interface ShapeList extends Remote {
Shape newShape(GraphicalObject g) throws RemoteException; 2Vector allShapes() throws RemoteException;int getVersion() throws RemoteException;
}
Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
The Naming class of Java RMIregistry
void rebind (String name, Remote obj) This method is used by a server to register the identifier of a remote object by name, as shown in Figure 15.18, line 3. void bind (String name, Remote obj) This method can alternatively be used by a server to register a remote object by name, but if the name is already bound to a remote object reference an exception is thrown.void unbind (String name, Remote obj) This method removes a binding.Remote lookup(String name) This method is used by clients to look up a remote object by name, as shown in Figure 5.20 line 1. A remote object reference is returned.String [] list() This method returns an array of Strings containing the names bound in the registry.
Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
Java class ShapeListServer with main method
import java.rmi.*;public class ShapeListServer{
public static void main(String args[]){System.setSecurityManager(new RMISecurityManager()); try{
ShapeList aShapeList = new ShapeListServant(); 1 Naming.rebind("Shape List", aShapeList ); 2
System.out.println("ShapeList server ready"); }catch(Exception e) {
System.out.println("ShapeList server main " + e.getMessage());}}
}
Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
Java class ShapeListServant implements interface ShapeList
import java.rmi.*;import java.rmi.server.UnicastRemoteObject;import java.util.Vector;public class ShapeListServant extends UnicastRemoteObject implements ShapeList {
private Vector theList; // contains the list of Shapes private int version;
public ShapeListServant()throws RemoteException{...}public Shape newShape(GraphicalObject g) throws RemoteException { 1
version++; Shape s = new ShapeServant( g, version); 2 theList.addElement(s); return s;
}public Vector allShapes()throws RemoteException{...}
public int getVersion() throws RemoteException { ... }}
Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
Java client of ShapeList
import java.rmi.*;import java.rmi.server.*;import java.util.Vector;public class ShapeListClient{ public static void main(String args[]){
System.setSecurityManager(new RMISecurityManager());ShapeList aShapeList = null;try{
aShapeList = (ShapeList) Naming.lookup("//bruno.ShapeList") ;1
Vector sList = aShapeList.allShapes(); 2} catch(RemoteException e) {System.out.println(e.getMessage());}catch(Exception e) {System.out.println("Client: " + e.getMessage());}
}}
Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
Classes supporting Java RMI
RemoteServer
UnicastRemoteObject
<servant class>
Activatable
RemoteObject