Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Modelos de comunicación indirecta | Sistemas distribuidos

2 junio, 2015

Explicamos los diferentes modelos de comunicación indirecta, que son las siguientes: los grupos de
comunicación, publicación y subscripción, colas de mensajes y sistemas de memoria
compartidas.

Todos ellos para comunicarse realizan comunicación indirecta, para ello utilizan un
intermediario para realizar la comunicación entre ellos.

comunicacion indirecto

Group Commmunication

Este tipo de modelo de comunicación indirecta envía un mensaje a un grupo de
usuarios que es entregado sin conocer ni esperar la identidad del grupo de usuarios.

Envía los mensajes multicast a todos los miembros del grupo de comunicación.

Estos grupos tienes las siguientes características:

– Un sistema de difusión de Información confiable para que lleguen los mensajes
a un gran número de clientes.

– Soportan aplicaciones de colaboración, como pueden ser los juegos dónde los
eventos nuevos deben ser difundidos a todos los usuarios, dando una vista
común a todos ellos.

Tolerancia a fallos, en la que también se actualice de manera constante todos
los datos replicados.

– Apoyo a sistemas de gestión para poder supervisar el sistema. Por ejemplo
sistemas de gestión que ayuden a balancear la carga.

Podemos distinguir grupos de comunicación abiertos y cerrados, los primeros pueden
recibir mensajes desde otros sitios de fuera del grupo, mientras que los segundos no
pueden recibir mensajes de otros miembros que no sean del grupo.

Publish/subscribe

Este modelo de comunicación está basado en un sistema de publicación de eventos al
que están subscritos determinados equipos. Cuando se realiza la subscripción al
publicador estos equipos comunican cuales son los eventos a los que ellos quieren
subscribirse en particular.

Cuando el publicador publica un nuevo evento, este envía una notificación a los
equipos que están subscritos a ese evento. Así pues los equipos que están subscritos
reciben la notificación y actualizan los datos que tienen del evento que se acaba de
publicar.

Las características que tiene este tipo de comunicación es que es heterogéneo y
asíncrono
. Se envían las notificaciones heterogéneamente a todos los miembros que
estén subscritos a este evento por lo que todos los miembros recibirán la notificación.
Es asíncrono ya que se envían las notificaciones de la publicación sin necesidad de
una respuesta sincronizada en el subscriptor, además cada subscriptor recibirá x
notificaciones independientemente de los otros subscriptores, recibirá solo las
notificaciones para los que esté subscrito.

Las subscripciones, se pueden basar en múltiples categorías, entre las más comunes
se encuentran las que están basadas en canales de contenido, basados en tópicos
expresados como términos, basados en contenidos, basados en tipos de objetos.

Este modelo de comunicación puede utilizarse en arquitecturas centralizadas y
distribuidas
, en el primero habrá un publicador que será el encargado de realizar la
notificación al resto de subscriptores, aunque este tipo de arquitectura puede contribuir
a formar cuellos de botella y es poco tolerante a fallos, ya que si falla el publicador el
sistema fallará.
En el segundo utilizamos sistemas peer-to-peer dónde un mismo
equipo puede realizar las tareas de publicador y el subscripción, solventará que se
formen cuellos de botella y mejorará la tolerancia a fallos.

Como ejemplos de este tipo podemos ver los sistemas de subscripción RSS, o
algunos sistemas de actualización de software.

Message queues

A diferencia de los modelos anteriores en los que ambos utilizan sistemas de
publicación uno a muchos, las colas de mensajes proporcionan una comunicación uno
a uno, punto a punto. Este modelo utiliza las colas de mensaje como forma indirecta de
envío de mensajes.

Los procesos de producción pueden enviar mensajes a una cola de mensajes, desde
aquí los equipos cliente recogen los mensajes.

Existen tres estilos diferentes:

Bloquear al recibir, se blogueará hasta recibir un mensaje de disponibilidad.
Bloqueo al no recibir, comprobará el estado de la cola y devolverá un mensaje de
disponibilidad.
Funcionamiento por notificación, se enviará una notificación cuando un mensaje esté
disponible en la cola a la que este asociado.

La mayoría de los sistemas que utilizan la cola de mensajes como modelo de
comunicación utilizan el orden FIFO para ordenar la entrada y salida de mensajes, no
obstante se pueden utilizar otros sistemas de ordenación que corresponda mejor con
lógica de la aplicación.

Muchos de los sistemas disponibles ofrecen el envio y la recepción de mensajes
contenida dentro de una transacción, para favorecer la integridad y poder realizar una
transacción completa o descartarla completamente.

También es conveniente que soporten los cambios de codificación de mensaje, para
poder transformarlos de codificación e incluso entre diferentes sistemas de
intercambios de datos como pueden ser SOAP.

Shared memory systems

Este modelo utiliza los espacios de memoria de sistemas distribuidos virtuales para
poder comunicarse con el resto de equipos que no comparten la misma memoria
física. Utilizando los espacios de memoria compartidos para que los programas o los
programadores puedan tener accesos de lectura o escritura a espacios de memoria
compartidos
.

Los espacios de memoria se dividen en tuplas, en filas en los cuales cada proceso
puede leer o escribir dependiendo del caso.

Las propiedades generales que poseen las tuplas, es que tienen un espacio
desacoplado y que el tiempo también esta desacoplado
, por lo tanto una tupla puede
tener varios procesos que están enviando datos y varios procesos que están
recibiendo esta información. La tupla permanecerá en ese espacio hasta que sea
eliminada por lo que tanto el receptor como el emisor no tendrán problemas por
solaparse en el tiempo.