Sistemas Operativos Distribuidos Comunicación Indirecta Alejandro Alonso Dpto. Ing. de Sistemas Telemáticos
Contenidos 1. Introducción 2. Comunicación de grupos 3. Editor/Suscriptor 4. Colas de mensajes
1. Introducción Comunicación entre entidades en un SD a través de un intermediario sin acoplamiento directo entre emisores y receptores Facilita la adaptación a cambios, aunque introduce retrasos Propiedades: Desacoplamiento espacial: El emisor no necesita conocer al receptor y viceversa. Mayor libertad para tratar cambios: los participantes se pueden reemplazar, actualizar, replicar o migrar. Desacoplamiento temporal: Los participantes pueden tener existencias independientes No necesitan existir al mismo tiempo para comunicarse
Introducción Acoplamiento espacial Desacoplamiento espacial Acoplamiento temporal Comunicación directa Los receptores deben existir al enviar mensajes Ej.: paso de mensajes, RMI El emisor no tiene que conocer a los receptores Deben existir al comunicarse Ej.: Multienvío IP, editar/ suscribir Desacoplamiento temporal Comunicación directa Diferente existencia de participantes Ej.: correo electrónico El emisor no conoce a los receptores ni tienen que existir simultáneamente Requiere persistencia Ej. Colas de mensajes
2. Comunicación de Grupos El mensaje se manda a un grupo y se difunde a todos los miembros del mismo El emisor no conoce a los receptores Abstracción respecto al multienvío, con: Todos los procesos correctos reciben los mismos mensajes Los mensajes se reciben en un orden preestablecido. Es una base importante para: Diseminación fiable de información a muchos clientes Apoyo a aplicaciones colaboradoras, para que los usuarios tengan la misma vista del sistema Apoyo a estrategias de tolerancia a fallos, como para mantener coherente información replicada Apoyo a sistemas de monitorización y gestión
Modelo de programación Los grupos tienen un conjunto de miembros Generalmente son procesos, Pueden unirse y abandonar el grupo Implementan multienvío: Los mensajes enviados al grupo se difunden a todos Los mensajes no suelen estar estructurados En un grupo cerrado sólo pueden enviar mensajes los miembros. En un grupo solapado sus miembros puede pertenecer a varios grupos. La comunicación suele ser síncrona
Servicio de gestión de grupos Expansión de la dirección del grupo Servicio de pertenencia Detector de fallos Notificación de miembros Expansión de direcciones Enviar a grupo Salir Multienvío Fallo Gestión de miembros del grupo Grupo de procesos Entrar
Gestión de grupos Primitivas de creación, adhesión y salida. CreaGrupo(grupo) JuntaGrupo(grupo) (podría ser a varios) SalGrupo(grupo) (implícito en caídas) Detector de fallos: clasifica el estado de fallo (supuesto). Notificación de vistas. Expansión de direcciones (síncrona con la vista)
Gestión de grupos y particiones Partición principal: Es la que continúa funcionando. Tiene la mayoría. Las demás deben estarse quietas. Particionable (ej.: videoconferencia).
Fiabilidad El envío se realiza con ciertas garantías en la entrega: Acuerdo sobre los mensajes que reciben los miembros y en su orden. Fiabilidad: se define mediante dos propiedades: Integridad: El mensaje que se recibe es el mismo que se envió Validez: los mensajes enviados se entregan en algún momento Fiabilidad en multienvío, incluye además: Acuerdo: si el mensaje se entrega a un proceso, se entrega a todos los del grupo
Ordenación La comunicación de grupo demanda garantías sobre el orden relativo de entrega de mensajes La ordenación no la garantizan las primitivas de bajo nivel de comunicación Se ofrece multienvío ordenado, con las siguientes opciones: FIFO: preservar el orden desde la perspectiva del emisor Causal: se consideran relaciones causales entre los mensajes. Total: Si un mensaje se envía antes que otro, entonces este orden se preserva para todos los procesos Estas propiedades son ejemplos de coordinación y acuerdo en sistemas distribuidos.
Notificación de vistas Una vista es una lista ordenada de procesos. Las vistas crecen y decrecen en un proceso. Las vistas cambian por entrada/salida voluntaria y por sospecha de caída. Los cambios de vista se entregan en orden total. Los cambios de vista se difunden con orden de sincronización (los mensajes de una vista se entregan antes de la notificación de cambio de vista). Son la base para: proporcionar garantías adicionales en el envío de los mensajes permite a los procesos tomar decisiones con información local
Requisitos de la notificación de vistas Orden: Si p entrega v(g) y luego v (g), entonces ningún proceso p q entrega v (g) antes que v(g) Integridad: Si p entrega v(g), entonces p v(g) No-trivialidad: Si q entra en un grupo y está accesible, entonces eventualmente q estará en las vistas entregadas por p
Orden de sincronización
Comunicación síncrona con las vistas Integridad Un proceso entrega cada mensaje una sola vez. Si un proceso entrega un mensaje, lo envió un miembro de su vista. Acuerdo Los procesos correctos entregan los mismos mensajes en cada vista. Si un proceso entrega m en v(g) y luego entrega v (g), todos los procesos de v(g) v (g), entregan m en v(g). Validez (grupos cerrados) Los procesos correctos entregan los mensajes que envían. Si falla la entrega de m a q, los que entregan m reciben inmediatamente una notificación de vista sin q.
Ejemplo de caída del que envía Correcto Correcto p falla p q r vista (p, q, r) vista (q, r) p falla p q r vista (p, q, r) vista (q, r) Incorrecto p p falla Incorrecto p p falla q q r r vista (p, q, r) vista (q, r) vista (p, q, r) vista (q, r)
Transferencia de estado Grupos colaborativos El que se incorpora puede necesitar estado común Al incorporarse, todos suspenden su actividad El primero en la vista envía el estado al nuevo El nuevo multienvía orden de continuación
3 Publicar/Suscribir También llamados sistemas distribuidos basados en sucesos (events) Concepto: Los editores publican sucesos estructurados a un servicio Los suscriptores expresan interés por un tipo particular de sucesos El servicio: casa las suscripciones frente a los sucesos publicados asegura el envío correcto de notificaciones de sucesos Un suceso se envía a un conjunto de suscriptores Ejemplos: La especificación DDS de OMG
Modelo Publicar/Suscribir Fuente externa Notificaciones Entidad financiera Entidad financiera Entidad financiera Fuente externa
Heterogeneidad: Características Facilita que componentes variados trabajen juntos Sólo hay que conocer los sucesos de interés y que alguien los publique Asincronía: Las notificaciones se envían asíncronamente a los suscriptores Así se evita que estén acoplados Problemas si no se mandan mensajes o nadie escucha Las notificaciones se pueden entregar con garantías: Garantías laxas Requisitos de multienvío fiable Requisitos de tiempo Requisitos de orden
Operaciones: Modelo de programación Publicar (suceso) Notificar (suceso) Anunciar(filtro) Suscribir(filtro) CancelarSuscripción(filtro) editor Publicar(e1) Suscribir(f1) suscriptor editor Publicar(e2) Sistema publicar/suscribir Notificar(e2) suscriptor editor Anunciar(f1) Notificar(e1) suscriptor
Canales: Esquemas del Filtro Los sucesos se publican en un canal Los suscriptores se suscriben a un canal Basados en asunto o tema: Es uno de los campos del suceso La suscripción se define con respecto a este dato Los asuntos pueden ser jerárquicos Basados en contenido Condición lógica sobre los valores de los atributos del suceso Basada en tipos: Tipos de sucesos compatibles con un tipo o subtipo de un filtro Se pueden integrar en lenguajes de programación
4. Colas de Mensajes Las colas de mensajes distribuidas describen un servicio punto a punto El concepto de cola de mensaje fundamenta la indirección Proporcionan desacoplamiento espacial y temporal Se usa para integrar aplicaciones o como base de sistemas de procesamiento de transacciones Ejemplos: IBM WebSphere MQ, Microsoft MSMQ, Oracle Streams Advanced Queuing
Colas de Mensajes Sistema Cola de Mensajes productores Enviar Recibir consumidor productores Enviar Consultar consumidor productores Enviar Notificar consumidor
Muy sencillo: Modelo de programación Los emisores mandan mensajes a la cola Los receptores leen mensajes de la cola Tres estilos de receptores que se suelen proporcionar: Recepción bloqueante Recepción no bloqueante Notificación: se manda un suceso cuando llega un mensaje Las colas tienen un orden FIFO o por prioridades. Se puede seleccionar un mensaje por sus características Los mensajes tienen un destino, metadatos y cuerpo
Modelo de programación Los mensajes son persistentes Se almacenan indefinidamente, hasta que se leen Se garantiza un envío fiable, pero no cuando se hace Pueden proporcionar funcionalidades adicionales: Los mensajes pueden formar parte de una transacción: o se realizan todas las acciones o ninguna Transformaciones de mensajes al llegar a la cola. Se pueden realizar cambios para adaptar el formato de la información Seguridad: transmisión confidencial de los mensajes
Bibliografía G. F. Coulouris, J. Dollimore, T. Kindberg y G. Blair. Distributed Systems. Concepts and Design. Quinta edición. Addison Wesley. Mayo 2011. Capítulo 6 Capítulo 18: detalles adicionales sobre los grupos