Sistemas Operativos Distribuidos Comunicación Indirecta Alejandro Alonso Dpto. Ing. de Sistemas Telemáticos (Octubre 2014) © DIT/UPM Comunicación indirecta Contenidos 1. Introducción 2. Comunicación de grupos 3. Editor/Suscriptor 4. Colas de mensajes (Octubre 2014) © DIT/UPM Comunicación indirecta 1. Introducción Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta Introducción Acoplamiento temporal Acoplamiento espacial Comunicación directa Desacoplamiento temporal Comunicación directa Los receptores deben Diferente existencia de existir al enviar mensajes participantes Ej.: paso de mensajes, RMI Ej.: correo electrónico Desacoplamiento El emisor no tiene que El emisor no conoce a espacial conocer a los receptores los receptores ni tienen que existir Deben existir al simultáneamente comunicarse Requiere persistencia Ej.: Multienvío IP, editar/ suscribir Ej. Colas de mensajes (Octubre 2014) © DIT/UPM Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta Servicio de gestión de grupos •Servicio de pertenencia •Detector de fallos •Notificación de miembros •Expansión de direcciones Expansión de la dirección del grupo Enviar a grupo Salir Multienvío Fallo Entrar Grupo de procesos (Octubre 2014) © DIT/UPM Comunicación indirecta Gestión de miembros del grupo 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) (Octubre 2014) © DIT/UPM Comunicación indirecta 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). (Octubre 2014) © DIT/UPM Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta 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. (Octubre 2014) © DIT/UPM Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta Orden de sincronización (Octubre 2014) © DIT/UPM Comunicación indirecta 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. (Octubre 2014) © DIT/UPM Comunicación indirecta Ejemplo de caída del que envía Correcto Correcto p falla p falla p p q q r r vista (p, q, r) Incorrecto vista (p, q, r) vista (q, r) Incorrecto p falla p p q q r r vista (p, q, r) (Octubre 2014) © DIT/UPM vista (q, r) p falla vista (p, q, r) Comunicación indirecta vista (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 (Octubre 2014) © DIT/UPM Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta Modelo Publicar/Suscribir Fuente externa Notificaciones Entidad financiera Entidad financiera Entidad financiera Fuente externa (Octubre 2014) © DIT/UPM Comunicación indirecta Características Heterogeneidad: 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 (Octubre 2014) © DIT/UPM Comunicación indirecta Modelo de programación Operaciones: Publicar (suceso) Suscribir(filtro) Notificar (suceso) CancelarSuscripción(filtro) Anunciar(filtro) editor Publicar(e1) Publicar(e2) editor Suscribir(f1) Sistema publicar/suscribir Notificar(e1) Anunciar(f1) editor (Octubre 2014) © DIT/UPM Notificar(e2) Comunicación indirecta suscriptor suscriptor suscriptor Esquemas del Filtro Canales: 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 (Octubre 2014) © DIT/UPM Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta Colas de Mensajes Sistema Cola de Mensajes productores Recibir Enviar consumidor Consultar Enviar consumidor productores Notificar productores consumidor Enviar (Octubre 2014) © DIT/UPM Comunicación indirecta Modelo de programación Muy sencillo: 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 (Octubre 2014) © DIT/UPM Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta 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 (Octubre 2014) © DIT/UPM Comunicación indirecta