Comunicación en grupo
Published: 2020-06-29 17:57:53

---
title: Comunicación en grupo
published: true
description: 
tags: 
//cover_image: https://direct_url_to_image.jpg
---
# Comunicación en grupo
Vamos a empezar explicando lo que es un grupo.
> Un **grupo** es una colección de usuarios u objetos compartiendo un interés común o trabajando hacia un objetivo común.

Un ejemplo de grupo, por ejemplo, en el área de sistemas distribuidos seria: un conjunto de servidores replicados formando un servicio altamente disponible.

## Clasificación de grupos:
- Por si la composición de miembros es fija o variable:
  - **Cerrado**: cuando su membresia permanece sin cambios.
  - **Abierto**: cuando la membresia cambia de vez en cuando.
- Por la naturaleza de comunicación:
  - **De igual a igual** (peer to peer): cuando todos los miembros tienen los mismos derechos y privilegios. Los miembros se comunican con sus pares para sustentar las actividades del grupo.
  - **Jerárquico**: donde un miembro es distinguido del resto, y la comunicación toma lugar entre el miembro distinguido y el resto del grupo.

Los miembros de un grupo se comunican uno con otro usando alguna forma de **multidifusion** (comunicación uno a muchos) que esta restringida a los miembros de ese grupo. Un mensaje enviado por cualquier miembro debe ser recibido por cada miembro o por ninguno de ellos. Esta propiedad de *atomicidad* esta en el corazón de la comunicación en grupo, pero hay otros problemas también. Esto incluye:
- Complejidad de la comunicación.
- La habilidad para tolerar varios tipos de fallos.
- Tolerancia de partición de red.
- Cuando un miembro cambia de una forma planeado o no, ciertas garantías deben mantenerse para preservar la integridad de los servicios del grupo.

## Multidifusion atómico
Una multidifusion en un grupo es llamado atómico, es cuando el mensaje es recibido por cada miembro no defectuoso (es decir, en funcionamiento) o por ningún miembro. Es un requerimiento básico de las actividades orientadas a grupos.

### Fallos
Los fallos juegan un rol prominente en la implementacion de multidifusion atómica. En consecuencia, consideraremos dos clases amplias de multidifusión atómica: 
- **Básica**: descarta bloqueos del proceso (o no proporciona ninguna garantía cuando los procesos fallan).
- **Confiable**: toma el proceso bloqueado en cuenta y proporciona las garantías.

Si se descartan las fallas, cada multidifusión básica es trivialmente atómica. Las multidifusiones atómicas confiables deben satisfacer las siguientes tres propiedades:
- **Validez**: si un proceso correcto multidifunde un mensaje m, eventualmente entrega m.
- **Acuerdo**: si un proceso correcto entrega m, todos los procesos correctos eventualmente entregan m.
- **Integridad**: cada proceso correcto entrega un mensaje m como máximo una vez, solo si algún proceso en el grupo multidifunde ese mensaje. Se descarta la recepción de mensajes espurios.

La entrega de un mensaje afecta el estado del destinatario y la aplicación que admite.

## Multidifusion IP
Es una popular técnica para multidifusion en la capa de red.

## Capa de aplicación multidifusion
Mientras multidifusion IP es eficiente con el ancho de banda y varios routers están equipados con esta facilidad, un significante impedimento significativo es el tamaño creciente del espacio de estado que cada enrutador debe mantener por grupo. La multidifusión de capa de aplicación es un enfoque alternativo que supera este problema. Las multidifusiones a nivel de aplicación se implementan como una serie de mensajes punto a punto. La red solo necesita proporcionar la entrega básica sin estado, unidifusión y el mejor esfuerzo. La desventaja es un aumento en el consumo de recursos de red como el ancho de banda, ya que el mismo mensaje puede enrutarse varias veces a través de un enlace.

## Multicast ordenado
En los grupos de multidifusión, hay dos problemas ortogonales:
- **Confiabilidad**: garantizar que cada miembro reciba todos los mensajes enviados por los otros miembros a pesar de las fallas del proceso.
- **Orden**: incluso si la comunicación subyacente es confiable, garantizar el orden de entrega del mensaje puede estar lejos de ser trivial.

Los siguientes son los tres tipos principales de ordenamientos que se han estudiado en el contexto de la multidifusión ordenada:
- Multidifusión de orden local (también llamada FIFO de fuente única).
- Multidifusión de orden causal
- Multidifusión total de pedidos

## Multidifusion de orden causal
Esta implementacion usa vectores de marca de tiempos con una modificación menor. El vector es un manejador de eventos. En el algoritmo están involucrados 2 vectores, el vector propio del proceso que envía el mensaje y el vector propio del proceso que recibe el mensaje.
- **Envío**: Para enviar el mensaje a todos, el miembro que envía debe incrementar su posición del vector, y agregar el vector actualizado al mensaje.
- **Recepción**: Para decidir si aceptar el mensaje este mensaje, el miembro que recibe tiene que decidir el orden causal de este mensaje con respecto a otros mensajes. Para eso debe cumplirse que mensaje[enviador] == vector