Localización de Objetos Distribuidos
Gonzalo Mena Mendoza
Arquitectura de Modelos de Componentes Distribuidos
Maestría en Ingeniería de Software Distribuido
Facultad de Informática
Universidad Autónoma de Querétaro
Fuente
Emmerich, Wolfgang. "Engineering Distributed Objects", cap. 8, Locating Distributed Objects. Wiley (2000)
Introducción
- La transparencia de localización es una característica clave de un sistema distribuido.
- Métodos principales por medio de los cuales los objetos servidores publican referencias para que los clientes las encuentren:
- Nombramiento de objetos: basado en nombres externos.
- Negociación de objetos: basado en tipos de servicios ofrecidos.
- object naming
- nombramiento de objetos
- object trading
- negociación de objetos
Contenido
- Nombramiento de Objetos
- Principios de nombramiento de objetos
- El servicio de nombres de CORBA
- Los apodos de COM
- El registro de Java/RMI
- Negociación de Objetos
- Principios de negociación de objetos
- El servicio de negociación de CORBA
Principios de Nombramiento de Objetos
- Nombre: secuencia de identificadores atada a una referencia de un objeto.
- Espacios de nombres estructurados jerárquicamente
- Estructura jerarquica lograda con la anidación de contextos de nombres.
- Nombres compuestos.
- Operaciones: atadura, resolución y enumeración.
- Servidores de nombres
- No todos los objetos servidores requieren un nombre.
- Un mismo objeto puede tener varios nombres.
- Los servidores de nombres deben almacenar persistentemente sus espacios de nombres.
- Los servidores de nombres deben realizar la resolución eficientemente.
- Federaciones de servidores de nombres.
- Documentación de los espacios de nombres
- Libreta que documente la semántica de los nombres, activación y desactivación del servidor de nombres,
el perfil de desempeño del servidor y la estrategia para administrar la ubicación de los objetos de contexto de nombres.
- bind
- atar
- resolve
- resolver
- list
- enumerar
El servicio de nombres de CORBA
- Construido como otros servicios basados en un ORB.
- Interfaz del servidor de nombres especificada en el IDL de OMG.
- Interfaces de nombres:
- CORBA no especifica una sitaxis concreta para los nombres.
- Operaciones:
bind
, resolve
, unbind
, destroy
y list
.
- El cliente arranca obteniendo la referencia al contexto de nombres raiz.
- Las fallas lanzan excepciones de tipos específicos.
- Alternativas de uso:
- Uso directo del cliente.
- Empleo de un apoderado (proxy).
- Mecanismo de herencia.
- Con CORBA una sola operación
resolve
se requiere para recorrer desde la raiz hasta un hoja de un espacio de nombre.
- ORB
- Object Request Broker (agente para peticiones de objetos)
- IDL
- Interface Definition Language (lenguaje para definiciónd e interfaces)
Los apodos de COM
- Los apodos (monikers) son los primitivos de nombramiento de COM.
- Implementados sobre primitivos existentes, como CORBA.
- Manejan una estructura jerárquica de espacios de nombres.
- No emplean un tipo de datos compuesto, sino delimitadores predefinidos, p.e. '\'.
- El nombramiento no es ortogonal a otras operaciones de COM.
- Resolución de nombres es considerablemente más complicada que en CORBA.
El registro de Java/RMI
- Ligeramente menos sofisticado que los servicios de nombres de CORBA y COM.
- Todas las operaciones necesarias:
lookup
, bind
, rebind
, unbind
, y list
.
- Los clientes arrancan utilizando métodos estáticos locales de la clase
LocateRegistry
en lugar de una interfaz remota.
- Un registro Java/RMI no puede modificarse desde un sistema remoto.
- Los registros Java/RMI no están anidados jerárquicamente.
- Con Java/RMI se requieren de tantas llamadas a
lookup
como contextos de nombres existan para recorrer desde la raiz hasta un hoja de un espacio de nombre.
- registry
- Registro. Sistema que proporciona servicios de registro.
Negociación de objetos
- Principios:
- Los clientes no siempre pueden identificar a los servidores por nombre.
- El negociador elige al servidor a nombre del cliente, basado en la especificación de las características del servicio deseado.
- Tres componentes: exportador, el importador y el negociador de los servicios.
- Especificación de tipos de servicio:
- Los tipos de servicio definen funcionalidad y calidad de los servicios.
- Funcionalidad del objeto que proporciona el servicio definida por las operaciones que el objeto exporta.
- Calidad de servicio definida por propiedades, compuestas por un nombre y un valor.
- Las propiedades se consideran instancias de tipos de propiedades de servicio, compuestas por un nombre, tipo y modo (p.e. obligatoria u opcional, sólo de lectura o modificable).
- trader
- negociador, agente o corredor.
Negociación de objetos (cont.)
- Proceso de negociación:
- Operaciones principales: registro, retiro, consulta y cambio.
- El exportador registra una oferta y obtien del negociador un identificador único.
- El negociador mantiene una base de datos de ofertas de servicio.
- El importador proporciona al negociador un nombre de tipo de servicio y valores para una serie de propiedades.
- Lenguaje de definición de restricciones utilizado por el importador para especificar al negociador las restricciones a utilizar al seleccionar un exportador.
- El negociador utiliza una serie de políticas para manejar y presentar los resultados.
- Federaciones de negociadores.
- trader
- negociador, agente o corredor.
El servicio de negociación de CORBA
- Negociadores implementados como objetos CORBA.
- Interfaces completamente especificadas en el IDL de CORBA.
- Lenguaje estándar para la definición de restricciones.