iii invocación remota. uneg

42
Introducción Protocolos Request – Reply Llamadas a Procedimientos Remotos (RPC) Invocación a Métodos Remotos Ejemplo: Java RMI III-2 Invocación Remota

Upload: fernando-villahermosa

Post on 16-Feb-2016

21 views

Category:

Documents


0 download

DESCRIPTION

una forma de montar una red cluster

TRANSCRIPT

Page 1: III Invocación Remota. uneg

Introducción

Protocolos Request – Reply

Llamadas a Procedimientos Remotos (RPC)

Invocación a Métodos Remotos

Ejemplo: Java RMI

III-2 Invocación Remota

Page 2: III Invocación Remota. uneg

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

Page 3: III Invocación Remota. uneg

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.

Page 4: III Invocación Remota. uneg

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

Page 5: III Invocación Remota. uneg

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

Page 6: III Invocación Remota. uneg

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

Page 7: III Invocación Remota. uneg

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

Page 8: III Invocación Remota. uneg

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

Page 9: III Invocación Remota. uneg

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

Page 10: III Invocación Remota. uneg

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

Page 11: III Invocación Remota. uneg

RPC - Llamadas a Procedimientos Remotos

Cuestiones de Diseño sobre RPC:

Estilo de programación

Semántica asociada a las llamadas

Transparencia

Page 12: III Invocación Remota. uneg

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

Page 13: III Invocación Remota. uneg

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

Page 14: III Invocación Remota. uneg

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();

};

Page 15: III Invocación Remota. uneg

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

Page 16: III Invocación Remota. uneg

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

Page 17: III Invocación Remota. uneg

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

Page 18: III Invocación Remota. uneg

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

Page 19: III Invocación Remota. uneg

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

Page 20: III Invocación Remota. uneg

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

Page 21: III Invocación Remota. uneg

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

Page 22: III Invocación Remota. uneg

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

Page 23: III Invocación Remota. uneg

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

Page 24: III Invocación Remota. uneg

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

Page 25: III Invocación Remota. uneg

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

Page 26: III Invocación Remota. uneg

RMI - Instanciacion de objetos remotos

Page 27: III Invocación Remota. uneg

RMI - El rol del proxy y esqueleto en invocacion de métodos remotos

Page 28: III Invocación Remota. uneg

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

Page 29: III Invocación Remota. uneg

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

Page 30: III Invocación Remota. uneg

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

Page 31: III Invocación Remota. uneg

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

Page 32: III Invocación Remota. uneg

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

Page 33: III Invocación Remota. uneg

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

Page 34: III Invocación Remota. uneg

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.

Page 35: III Invocación Remota. uneg

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

Page 36: III Invocación Remota. uneg

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

Page 37: III Invocación Remota. uneg

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;

}

Page 38: III Invocación Remota. uneg

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.

Page 39: III Invocación Remota. uneg

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());}}

}

Page 40: III Invocación Remota. uneg

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 { ... }}

Page 41: III Invocación Remota. uneg

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());}

}}

Page 42: III Invocación Remota. uneg

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