Publicado el 27 de Noviembre del 2020
777 visualizaciones desde el 27 de Noviembre del 2020
1,7 MB
56 paginas
Creado hace 13a (01/03/2012)
Tema 4:
Desarrollo de soluciones de SSDD
Sistemas Distribuidos
Marcos López Sanz
[Curso 2011-2012]
Índice
Middleware para SSDD
RMI (genérico)
CORBA 2
Java RMI
Enterprise JavaBeans
Middleware para sistemas Peer-to-Peer
Ejercicios
Dudas
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Soluciones de SSDD
Middleware
Objetivo:
Ofrecer una abstracción de programación de alto nivel para el desarrollo
de SSDD y, mediante capas, ocultar la heterogeneidad de la
infraestructura subyacente para mejorar la interoperabilidad y la
portabilidad
Alternativas
Middleware de objetos distribuidos
• Modelo de programación OO
• Comunicación por RMI (mayormente)
• Beneficios: encapsulación, abstracción de datos, soluciones flexibles y dinámicas
• Ej.: Java RMI, CORBA
Middleware de componentes distribuidos
• Retos: evitar dependencias implícitas (referencias en/a interfaces), complejidad
de programación, falta de separación de aspectos distribuidos (seguridad,
gestión de errores, concurrencia…), falta de estrategias de despliegue
• Ej.: EJB, DCOM, Fractal
Otras alternativas:
• Sistemas Peer-to-Peer
• Servicios Web
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
RMI (Remote Method Invocation)
Extensión de las RPC (p.ej. Sockets) para un entorno orientado a
objetos
Reto: que un objeto local sea capaz de invocar un método de un
objeto potencialmente remoto
Similitudes RPC vs. RMI:
Programación con interfaces
Construidos sobre protocolos Request-Reply
Nivel de transparencia equivalente: misma sintaxis para invocación local
y remota
Diferencias RPC vs. RMI
Con RMI se pueden usar técnicas (patrones y metodologías) orientadas a
objetos para su programación
Semántica de parámetros más “rica”
posibilidad de usar OIDs como parámetros
• Beneficio en el paso por referencia
invocación a través del OID remoto en vez de enviar el objeto completo
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
RMI. Cuestiones de diseño
Modelo de objetos
Conceptos: objeto/clase/métodos/atributos
Propiedades: encapsulación/abstracción/modularidad
Referencias de objetos: nombre.método (parámetros)
Interfaces: definición de las signaturas de los métodos
Acción: resultado de la invocación de un método (cambio
de estado, instanciación de un nuevo objeto, etc.)
Excepciones: manejo de errores (throw/catch)
‘Recolector de basura’: eliminación de objetos que ya no
se utilizan
Estado: valores de las variables instanciadas
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
RMI. Cuestiones de diseño
Objetos distribuidos
Arquitectura tradicional: cliente/servidor
Servidor: maneja los objetos ‘invocables’
Comunicación (típica) basada en el paso de mensajes de
invocación y respuesta
• Alternativas: replicación o migración de objetos
Importante en RMI: encapsulación del estado remoto
• Acceso a los atributos sólo por los métodos concurrencia
• Ocultación de los tipos de datos internos utilizados
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
RMI. Cuestiones de diseño
Modelo de objetos distribuidos
Premisa: cada proceso contiene una colección de objetos que
pueden recibir invocaciones locales o remotas
Conceptos básicos:
• Objeto remoto: aquél que puede recibir invocaciones remotas
(aquellos que se ejecutan en procesos diferentes)
• Referencias a objetos remotos: forma de conocer el objeto remoto
al que se puede invocar OID remoto
• Interfaz remota: describe los métodos que pueden invocarse de
forma remota
» La clase de un método remoto implementa los métodos
publicados en su interfaz
» Lenguaje del interfaz: IDL (en CORBA), Java RMI
» Lenguaje de la implementación del IDL: Java, Python, C++, etc.
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
RMI. Implementación
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Extraído de Coulouris et al. Distributed Systems: Concepts and Design. 2012
Objetos y Componentes Distribuidos
RMI. Implementación
Módulo de comunicación
Implementan el protocolo de petición-respuesta (p.ej. sobre HTTP o
directamente sobre TCP o UDP)
Parámetros (tipo Java): messageType, requestId, operationId
Modulo de referencia remota
Transforma las referencias a objetos remotos en referencias locales y viceversa
(marshalling/unmarshalling)
Uso de una tabla interna para almacenamiento de correspondencias
‘Servant’: clase en el servidor remoto que ejecuta la petición remota
(instanciación remota)
Software RMI (middleware):
Proxy (cliente): ofrece transparencia de acceso (invocación remota como local).
Un proxy por cada objeto remoto invocado. Intermediario
Dispacher (servidor): recibe las peticiones del módulo de comunicación y las
traslada al ‘skeleton’
Skeleton: clase que implementa los métodos de la interfaz remota. Se encarga
de hacer de intermediario entre la representación ‘pública’ y el objeto real del
servidor (‘servant’)
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
RMI. Implementación
Generación de proxies, dispatchers y skeletons
Compilador de interfaces (Orbix en CORBA)
• Genera el código C++ o Java a partir de un interfaz
• Interfaces: IDL o interfaz Java
Elementos adicionales
Binder: mantiene una tabla de nombres textuales-
referencias a objetos remotos:
• CORBA: CORBA Naming System
• Java RMI: RMIregistry
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
CORBA
Estándar del OMG (1989)
Motivación
Que los programas (distribuidos) se pudieran programar en
cualquier lenguaje
Premisas:
Metáfora: ORB (Object Request Broker) ayudar a un cliente
a invocar un método en un objeto siguiendo las premisas del
estilo RMI
Fases: localizar el objeto remoto, activar el objeto remoto,
comunicar la petición del objeto cliente al objeto remoto y
devolver su respuesta
Versiones
CORBA 2: orientado a objetos
CORBA 3 (CCM): basado en componentes
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
CORBA 2
Elementos
Un lenguaje de definición de interfaz: IDL
Una arquitectura
Una representación de datos externa (mensajes): CDR
Una forma estándar de identificar referencias de objetos
remotos
Un conjunto de servicios genéricos útiles para
aplicaciones distribuidas
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
CORBA 2. CORBA RMI
Modelo de objetos de CORBA
CORBA Object = objeto remoto que:
Implementa una interfaz IDL,
•
• Tiene una referencia de objeto remoto
• Es capaz de responder a las invocaciones referidas a las operaciones definidas en su interfaz
• Está programado en un lenguaje que no necesariamente es OO
El concepto de clase no está implementado en IDL, sólo tipos de datos
CORBA IDL
Un interfaz IDL especifica un nombre y un conjunto de métodos
Ofrece facilidades para especificar módulos, tipos, atributos, signaturas de
métodos e interfaces
La gramática es un subconjunto de ANSI C++
Otras características de CORBA
Existen problemas a la hora de hacer los mappings IDLlenguaje de
implementación
Existe la posibilidad de definir RMI con CORBA de forma asíncrona (llamadas no
bloqueantes)
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
CORBA 2. Ejemplo pizarra compartida
Interfaz IDL
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
CORBA 2. Arquitectura
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Extraído de Coulouris et al. Distributed Systems: Concepts and Design. 2012
Objetos y Componentes Distribuidos
CORBA 2. Arquitectura
ORB Core
Incluye toda la funcionalidad de comunicación
Ofrece una interfaz adicional con varias operaciones:
• Parar e iniciar el ORB
• Convertir referencias de objetos remotos y strings
• Listas de argumentos para invocaciones dinámicas
Adaptador de objetos
Sirve de puente entre los objetos CORBA con interfaces IDL y los
interfaces de programación de las clases ‘servant’ que realmente
ejecutan el código remoto invocado
Tareas:
• Crear referencias remotas a objetos CORBA
• Repartir cada petición RMI hecha a un skeleton al ‘servant’ adecuado
• Activar y desactivar ‘servants’
POA (Portable Object Adapter): permite interconectar aplicaciones y
‘servants’ sobre ORBs de diferentes proveedores
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
CORBA 2. Arquitectura
Skeletons
Se generan en el lenguaje del servidor mediante un compilador IDL a
partir de un interfaz IDL
Deserializa (unmarshall) las peticiones RMI y serializa (marshall) las
excepciones y respuestas
Stubs cliente (proxy)
Se generan en el lenguaje del cliente mediante un compilador IDL a
partir de un interfaz IDL
También serializan/deserializan
• Proxy: para clientes programados en lenguajes OO
• Stub: para clientes programados en otros lenguajes procedurales
Repositorio de implementación
Activa y localiza (mapea) servidores registrados correspondientes a los
adaptadores conocidos por el ORB
Repositorio de interfaces
Ofrece información acerca de las interfaces IDL registradas en el ORB
Sistemas distribuidos – Curso 2011-2012
www.kybele.es
Objetos y Componentes Distribuidos
CORBA 2. Servicios
Servicio de nombr
Comentarios de: Tema 4: Desarrollo de soluciones de SSDD (0)
No hay comentarios