Sie sind auf Seite 1von 49

+

Sistemas Distribuidos
Middleware
Rodrigo Santamara
+
Middleware
Introduccin
Middleware de bajo nivel
Invocacin remota
2
+
Introduccin
! Middleware: capa software
que:
! Enmascara la heterogeneidad
de la red subyacente, el
hardware, el sistema operativo y
los lenguajes de programacin
! Ofrece un modelo
computacional para los
programadores de aplicaciones
distribuidas
Capa de transporte: UDP y TCP
Plataforma
red, hardware
Primitivas de comunicacin
marshalling, apoyo a multicast, virtualizacin
Invocacin remota
RMI, RPC, CORBA
Aplicaciones y servicios

M
i
d
d
l
e
w
a
r
e

3
Plataforma
sistema operativo
+
Introduccin
! Protocolos de nivel de transporte de Internet
! Ambos permiten un paso de mensajes bsico
! UDP: con fallos por omisin
! TCP: garantiza la entrega en condiciones normales, pero al coste
de una bajada en el rendimiento
! Generalmente, usamos TCP sobre IP, o TCP/IP
! Aunque TCP/UDP abstraen del nivel de red, no lo hacen
perfectamente de los niveles de hardware y ssoo
! Distinto almacenamiento de nmeros (little endian/big endian)
! Distinta codificacin de caracteres (ASCII/Unicode)
UDP y TCP
4
+
Introduccin
! Bajo nivel
! Ofrece funcionalidades esenciales, generalmente relacionadas
con cambios sobre el soporte bsico TCP/UDP + IP
! Representacin independiente de SSOO
! Multicast sobre IP
! Red virtual sobre la red IP subyacente
! Alto nivel (invocacin remota)
! Centrada en el envo/recepcin de datos
! Remote Procedure Call (RPC)
! Remote Method Invocation (RMI)
5
Tipos de middleware
+
Middleware
Introduccin
Middleware de bajo nivel
Marshalling
IP Multicast
Redes superpuestas
Invocacin remota
6
+
Marshalling
! Proceso de ensamblado de datos de forma que puedan ser
convenientemente transmitidos en un mensaje
! Traduccin de los valores locales a una representacin externa
! Alternativas de marshalling
! CORBA Common Data Representation (CDR)
! Serializacin Java
! XML (eXtensible Markup Language)
! Sun XDR, etc.
7
+
Marshalling
! CORBA CDR se define en CORBA 2.0 (2004)
! Permite representar los tipos de datos manejados por CORBA
! El tipo de dato no est incluido en la representacin del dato
! Requiere conocimiento de los tipos por ambas partes
CORBA CDR
8
Representacin en CDR de una
estructura Person{string, string, long}
para el valor {Smith, London, 1984}
C
o
l
o
u
r
i
s

e
t

a
l
.

2
0
1
1

+
Marshalling
! Permite representar objetos Java de un modo adecuado para
almacenarlos en disco o transmitirlos
! La representacin incluye
! Estado del objeto
! Definicin de su clase (nombre, versin)
! Definicin de otras clases (heredadas, implementadas) a travs
de referencias o handles
Serializacin Java
9
+
Marshalling
10
Serializacin Java
public class Person implements Serializable {
private String name;
private String place;
private int year;
public Person(String aName, String aPlace, int aYear) {
name = aName;
place = aPlace; year = aYear;
}
// followed by methods for accessing the instance variables
}
Person p = new Person("Smith", "London", 1984);
C
o
l
o
u
r
i
s

e
t

a
l
.

2
0
1
1

+
Marshalling
! Definido por el W3C para su uso general en Internet
1
! Modo de codificacin textual que representa tanto el contenido
como los detalles de su estructura o apariencia
! Cada dato en un fichero XML va etiquetado
! Las etiquetas pueden servir para definir la estructura
! O para asociar pares atributo-valor

Extensible Markup Language (XML)
11
1
Proviene, junto con HMTL, del SGML, un lenguaje de marcas muy complicado. HTML se dise para definir la
apariencia de las pginas web, mientras que XML se dise para escribir documentos estructurados para la web
<person id="123456789">
<name>Smith</name>
<place>London</place>
<year>1984</year>
<!-- a comment -->
</person >
id es un atributo
person, name, place o year son elementos
name, place y year son elementos
contenidos en person
+
IP Multicast
! Mtodo de envo de mensajes a mltiples destinos
! Construido sobre IP+UDP
! Hereda de UDP los fallos por omisin " multicast no fiable
! Todos los destinatarios forman un grupo
! Las direcciones multicast van de 224.0.0.0 a 239.255.255.255
! La asignacin de direcciones a grupos es administrada por la
IANA (RPC3171)
! Algunas estn ya asignadas de modo permanente
! Otras pueden usarse libremente de manera temporal
! Es labor del middleware enviar el mensaje a todos los
miembros de una direccin multicast (e.g. 222.5.6.7)
12
+
Introduccin
IP Multicast: ejemplo
13
+
Redes superpuestas
! Construccin de redes lgicas a partir de una red existente
! Necesarias para algunas aplicaciones distribuidas
! Redes P2P, redes multijugador, etc.
! Red superpuesta (overlay network)
! Red virtual consistente en nodos reales y enlaces virtuales,
construida sobre una red subyacente (tpicamente IP)
! Ofrece funcionalidades adicionales
! Servicio optimizado a las necesidades de una aplicacin
! Operacin ms eficiente en un determinado entorno de red
! Caractersticas adicionales, como multicast o seguridad
14
+
Redes superpuestas
! Uso en el mundo real, en un sistema de gran escala
! 370 millones de usuarios en 2009
! Skype funciona como una red superpuesta que establece
conexiones entre suscriptores de su servicio
! No se requiere una IP o puerto para hacer la llamada
! Utiliza una infraestructua P2P con hosts y super nodos (SN)
! Conexin (autenticacin en un login server + asignacin SN)
! Bsqueda de usuarios mediante SNs (~3-4s, ~8SN visitados)
! La transmisin se hace generalmente va UDP
! Software especial para la codificacin de audio/vdeo
15
Caso de Estudio: Skype
16
Colouris et al. 2011
+
Redes superpuestas
Motivacin Tipo Descripcin
Aplicacin Tablas hash
distribuidas
Servicio de mapeo de claves a valores (hash)
a larga escala y descentralizado
Intercambio
ficheros P2P
Direccionamiento cooperativo para
bsqueda y uso (p.ej. descarga) de ficheros
Redes
multimedia
Replicacin, cach y almacenamiento para
mejorar el rendimiento en la adquisicin de
contenido multimedia
Arquitectura Redes wifi ad
hoc
Enrutamiento personalizado para redes de
topologa cambiante
Redes tolerantes
a disrupciones
Diseo para operar en ambientes con gran
nmero de fallos o retrasos altos
Otros Multicast Servicio multicast
Resistencia Mejora de la robustez y disponibilidad
Seguridad Comunicaciones ms seguras (VPNs, etc.)
17
Tipos
+
Middleware
Introduccin
Middleware de bajo nivel
Invocacin remota
Peticin-respuesta
Remote Procedure Call
Remoe Method Invocation
18
+
Invocacin remota
! Los conceptos de middleware a alto nivel se centran en cmo
los procesos se comunican en un sistema distribuido
! Hay tres paradigmas de invocacin remota
! Protocolos de peticin-respuesta, un modo relativamente a bajo
nivel para ejecutar una operacin remota.
! Sienta las bases para RPC y RMI
! Remote procedure call (RPC) es el primer modelo (y el ms
conocido) para facilitar las llamadas a servidores remotos
! Remote method invocation (RMI) es la extensin de los modelos
de objetos para la llamada a mtodos de objetos en nodos
remotos
19
+
Protocolo de peticin-respuesta
! Se basa en tres primitivas de comunicacin
! doOperation(s,args): invoca una operacin remota en s, con los
argumentos indicados en args (parmetros y tipo de operacin)
! getRequest: espera/adquiere una peticin en el servidor
! sendReply(r,c): manda el mensaje de respuesta r al cliente c
20
Colouris et al. 2011
+
Protocolo de peticin-respuesta
! El servidor no responde
! doOperation puede implementar un timeout en su espera por el
mensaje de respuesta.
! Repite la peticin o determina que el servidor est cado (tras
un determinado nmero de intentos)
! El servidor recibe peticiones duplicadas
! Puede implementar un mecanismo para descartarlas si todava
est realizando la operacin
! Si ya la ha realizado y la operacin es idempotente, la realiza de
nuevo
! Si no, puede implementar un histrico con los resultados de las
operaciones realizadas
21
Modelo de fallo
+
Protocolo de peticin-respuesta
! Variaciones sobre el protocolo peticin-respuesta
! Request (R): cuando no hay valor de retorno y no se requiere
confirmacin de que la operacin se ha realizado
! Request-Reply (RR): el protocolo bsico
! Request-reply-acknowledge (RRA): permite borrar del histrico
las respuestas de las que obtiene acuso de recibo (A).
22
Variaciones
Protocolo Mensajes enviados por
Cliente Servidor Cliente
R Request
RR Request Reply
RRA Request Reply Acknowledge reply
+
Protocolo de peticin-respuesta
! HTTP es un buen ejemplo de protocolo de peticin-respuesta
! Protocolo para hacer peticiones a servidores web
! Pginas HTML
! Applets
! Servlets
! Las peticiones especifican una URL que incluye
! El DNS del host servidor
! Nmero de puerto (opcional)
! Identificador de un recurso
! Fija una serie de mtodos u operaciones: PUT, GET, POST, etc
23
Caso de estudio: HTTP
+
Protocolo de peticin-respuesta
! GET: pide el recurso cuya URL se da como argumento.
! Si es un dato, el servidor lo retorna
! Si es un programa, el servidor lo ejecuta y devuelve su salida
! Se pueden aadir argumentos a la URL para el programa
! POST: especifica la URL de un recurso que pueda tratar con los
datos suministrados en el cuerpo del mensaje
! Postear en una lista de correo/modificar un perfil web
! Aadir entradas a una base de datos
! Proveer datos a un programa (p.ej. un formulario)
24
HTTP: GET y POST
peticin

respuesta
C
o
l
o
u
r
i
s

e
t

a
l
.

2
0
1
1

+
Remote Procedure Call
! Objetivo: hacer la programacin distribuida similar, si no
igual, a la programacin convencional
! Procedimiento: extender las llamadas a procedimientos
para que funcionen en entornos distribuidos
! Los procedimientos ubicados en mquinas remotas se pueden
llamar como si fueran locales [Birrell & Nelson, 1984]
25
+
Remote Procedure Call
! Programacin mediante interfaces
! Casi todos los lenguajes modernos son modulares
! La interfaz de cada mdulo especifica la manera de usarlo
! El resto del mdulo permanece oculto
! En un SD, los mdulos pueden ejecutarse en procesos separados
! El paso de argumentos por referencia no est permitido
! Los parmetros de salida van en un mensaje de respuesta
! Lenguajes de definicin de interfaz (IDL)
! En un SD, los mtodos a menudo estn en diferentes lenguajes
! Los IDLs permiten llamar procedimientos de otros lenguajes
! Sun XDR, CORBA IDL o WSDL son algunos ejemplos de IDL
26
Problemas de diseo: interfaces
+
Remote Procedure Call
! Diversos modos de garantizar la entrega de mensajes
! Reintentos: controla la retransmisin de la peticin hasta que el
servidor la reciba o la asuncin de que ha fallado
! Filtro de duplicados: controla el uso de retransmisiones y si el
servidor descarta peticiones duplicadas
! Retransmisin de resultados: controla si se debe mantener un
histrico de resultados para poder retransmitirlos si se pierden
27
Problemas de diseo: semntica de la llamada
Colouris et al. 2011
+
Remote Procedure Call
! Semntica quizs:
! El procedimiento remoto se ejecuta 0 1 veces
! Fallos por omisin (mensaje de respuesta perdido)
! Fallos de parada (falla el servidor o su operacin remota)
! Semntica al menos uno
! El procedimiento remoto se ejecuta 1+ veces
! Fallos de parada (falla el servidor)
! Fallos arbitrarios (re-ejecucin de la operacin remota)
! Semntica como mucho uno
! El procedimiento remoto se ejecuta 0 1 veces, pero si se ejecuta
0 veces tenemos conocimiento de ello
28
Problemas de diseo: semntica de la llamada
+
Remote Procedure Call
! Birrell y Nelson [1984] intentaron hacer las RPC tan
parecidas a las llamadas locales como fuera posible
! Todos los procedimientos de middleware a bajo nivel
(marshalling, etc.) se ocultan al programador.
! Sin embargo, las llamadas remotas
! Tienen ms posibilidades de fallar que las locales y no se puede
determinar si fue un fallo de red o de proceso
! Las aplicaciones deben poder recuperarse de estos fallos
! Tienen una latencia mayor
! Es conveniente minimizar las llamadas remotas
29
Problemas de diseo: transparencia
+
Remote Procedure Call
! Para acceder a cada procedimiento remoto el cliente incluye
un procedimiento stub (cabo) que realiza el marshalling y
(en vez de ejecutar el procedimiento) enva la peticin
! Y espera por y realiza el unmarshalling de la respuesta
30
Implementacin
Colouris et al. 2011
+
Remote Procedure Call
! El servidor tiene un stub por cada procedimiento de servicio
! Cuenta tambin con un nico despachador que selecciona el stub
que hay que invocar dependiendo de la peticin recibida
! Los mdulos de comunicacin (uno por proceso) direccionan
el mensaje y se encarga de posibles semnticas
(retransmisiones, timeouts, duplicados, etc.)
31
Implementacin
Colouris et al. 2011
+
Remote Procedure Call
! Diseado para la comunicacin cliente-servidor en el sistema de
ficheros en red (NFS) de Sun [Srinivasan, 1995]
! Presente en sistemas UNIX
! IDL: Sun XDR
! En principio slo para marshalling, evolucion para interfaces
! Muy primitivo y limitado (comparado con CORBA IDL o Java)
! Utiliza un servicio local para comunicacin (port mapper)
que corre en un n de puerto conocido
! En todos el mismo puerto " problemas en multicast
! Permite autenticacin (tipo UNIX o firmado de mensajes)
32
Caso de estudio: Sun RPC
+
Remote Method Invocation
! Extensin de RPC para objetos distribuidos: un objeto puede
invocar un mtodo de un objeto remoto.
33
RPC y RMI
Caractersticas comunes Caractersticas distintas
Se basan en interfaces RMI permite explotar en un SD
todo el poder de la orientacin a
objetos (clases y objetos,
herencia, etc.)
Se construyen sobre un protocolo
bsico peticin-respuesta,
ofreciendo variaciones semnticas
(al-menos-uno, como-mucho-uno)
Nivel similar de transparencia:
misma sintaxis que una llamada
local, pero algunos aspectos
distintos (p. ej. excepciones
remotas, latencia, etc.)
En RMI los objetos pueden
pasarse como argumento como
cualquier otro tipo " ms riqueza
semntica (paso por referencia a
objetos)
+
Remote Method Invocation
! Aspectos a tener en cuenta
! Atributos: en un modelo orientado a objetos, se puede acceder a
atributos del objeto directamente
! Referencias a objetos: cuando accedemos a un objeto, lo
hacemos a travs de referencias.
! Interfaces: definicin de un mtodo sin especificar su
implementacin
! Excepciones: si un mtodo falla de manera controlada, puede
lanzar una excepcin, pasando el control de la ejecucin al objeto
que lo invoc
34
Problemas de diseo: el modelo de objetos
+
Remote Method Invocation
! ! Referencias a objetos: un objeto puede invocar mtodos
de un objeto remoto si tiene acceso a la referencia del objeto
remoto
! Slo puede acceder a mtodos, nunca a atributos
! ! Interfaces: cada objeto remoto tiene una interfaz remota
especificando qu mtodos pueden invocarse remotamente
! Excepciones: si un mtodo falla por razones relacionadas con
el hecho de que el objeto invocado est en un proceso o
nodo distinto del invocador, debe lanzar una excepcin
remota
35
Problemas de diseo: el modelo de objetos
distribuido
+
Remote Method Invocation
36
Problemas de diseo: interfaz remota
Datos
Mtodos
m1
m2
m3
m4
objeto remoto
interfaz
remota
m1
m2
+
Remote Method Invocation
37
Problemas de diseo: invocacin remota
B
A
invocacin
remota
C
E
invocacin
local
F
invocacin
remota
D
invocacin
local
Nodo 1
Nodo 2
Proceso 1-1
Proceso 2-1
Proceso 2-2
A-F son objetos

Una invocacin remota
es tanto entre nodos
como entre procesos
+
Remote Method Invocation
38
Problemas de diseo: instanciacin remota
M
P
invocacin
remota
L
K
invocacin
remota
N
instancia
Si un objeto ejecuta un
mtodo de un objeto
remoto que instancia un
tercer objeto, este se
crea en la ubicacin del
objeto remoto

Se instancia un objeto
por invocacin
instancia
+
Remote Method Invocation
39
Implementacin
B
A
mdulo de
comunicacin
Nodo 1
Nodo 2
Proceso Cliente
Proceso Servidor
mdulo de
referencias remotas
Proxy
de B
mdulo de
referencias remotas
mdulo de
comunicacin
peticin
respuesta
esqueleto y
despachador
de B
instancia
sirviente
+
Remote Method Invocation
! Software RMI: capa de software entre el nivel de aplicacin
y los mdulos de comunicacin y referencias remotas
! Proxy: hace la invocacin remota transparente al cliente,
comportndose como un objeto local, pero en vez de ejecutar el
mtodo invocado, lo manda en un mensaje al servidor. Hay un
proxy por objeto remoto invocado
! Despachador: recibe mensajes de peticin del mdulo de
comunicacin, selecciona el mtodo adecuado y pasa la peticin
al esqueleto
! Esqueleto: implementa los mtodos de la interfaz remota,
recibiendo una peticin del despachador, realizando el
unmarshalling e invocando al sirviente
40
Implementacin
+
Remote Method Invocation
! Sirviente:
! Instancia de una clase que provee el cuerpo de un objeto remoto
! Es el que realmente ejecuta las peticiones remotas
! Mdulo de referencias remotas:
! Traduce las referencias locales a remotas (o viceversa)
! Crea referencias remotas
! Contiene una entrada por cada objeto remoto y por cada proxy
! Mdulo de comunicacin: llevan a cabo el protocolo de
peticin-respuesta
! Cuando llega una peticin, el mdulo de comunicacin del servidor
traduce la referencia remota en una referencia local mediante el
mdulo de referencias remotas
! Manda la referencia local junto con el mensaje al despachador
41
Implementacin
+
Remote Method Invocation
42
Implementacin
B
A
mdulo de
comunicacin
Nodo 1
Nodo 2
Proceso Cliente
Proceso Servidor
mdulo de
referencias remotas
Proxy
de B
mdulo de
referencias remotas
mdulo de
comunicacin
(1) peticin
respuesta
despachador
y esqueleto
de B
ref remota
ref local
(3) peticin
(4) peticin/mtodo
(5) unmarshalling
sirviente
(6) ejecucin
+
Remote Method Invocation
! Afortunadamente, la generacin de proxies, despachadores,
esqueletos y sirvientes se genera automticamente y de
manera relativamente trasparente
! Binder: servicio independiente que mantiene una tabla con
mapeos de nombres textuales de servicios a referencias de
objetos remotos
! El servidor registra sus servicios en el binder
! El cliente consulta el binder en busca de servicios
43
Implementacin
+
Remote Method Invocation
! Los objetos remotos deben implementar una interfaz que
herede de la clase Remote
! Los mtodos de esta interfaz sern accesibles va remota
! Estos mtodos deben lanzar la excepcin RemoteException
44
Caso de estudio: Java RMI
/**
* Interfaz para un servicio RMI de corredores de bolsa
* Debe heredar de java.rmi.Remote
* Debe manejar RemoteException en sus mtodos
*/
public interface CorredorDeBolsa extends Remote
{
String listarTitulos() throws RemoteException;
void comprar(String nombre, int cantidad) throws RemoteException;
void vender(String nombre, int cantidad) throws RemoteException;
}
+
Remote Method Invocation
! RMIregistry: es el enlazador para Java RMI. Debe haber una
instancia corriendo en cada servidor que ofrezca objetos
remotos
! Los nombres textuales son similares a una URL
! //nombreHost:puerto/nombreObjeto
! Se arranca con LocateRegistry.createRegistry(int port); o
desde un terminal con rmiregistry [port]
! Los servidores/clientes lo usan a travs de la clase Naming
! void rebind(String name, Remote obj) para publicar un
objeto remoto en el RMI registry, y darle un nombre
! Remote lookup(String name) para obtener la referencia
remota a un objeto asociado a dicho nombre
45
Caso de estudio: Java RMI
+
Remote Method Invocation
46
Caso de estudio: Java RMI
Objeto B
Objeto A
Nodo 1
Nodo 2
Proceso Cliente
Proceso Servidor
R
M
I
r
e
g
i
s
t
r
y

Naming.rebind (1)
implements
Interfaz
Remote
extends
nombre stub
Naming.lookup (2)
proxy de B
47
+
Referencias
! G. Colouris, J. Dollimore, T. Kindberg and G. Blair. Distributed
Systems: Concepts and Design (5
th
Ed). Addison-Wesley, 2011
! Captulo 4 para middleware de bajo nivel
! Captulo 5 para invocacin remota
! Sobre Java RMI
! Seminario JavaRMI.pdf en la pgina web de la asignatura
48
http://substack.net/posts/85e1bd/DNode-Asynchronous-Remote-Method-Invocation-for-Node-js-and-the-Browser
49

Das könnte Ihnen auch gefallen