Comunicación Indirecta

Anuncio
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
Descargar