Comunicação em Grupos em Sistemas Distribuídos

Piercarlo Guinzani
4 min readJul 5, 2020

Em um mundo globalizado como o de hoje os computadores estão por toda parte e a comunicação entre entre eles é imprescindível. Usando diferentes protocolos tanto em ambiente de rede local como ambiente de redes de longa distância, a comunicação entre os computadores pode acontecer de diversas formas e com diferentes implementações.

Num sistema distribuído várias máquinas dividem a tarefa de executar um processo e a comunicação entre elas exerce um papel crucial. O primeiro passo para se estabelecer uma comunicação entre dois computadores é a definição do protocolo que será utilizado. O protocolo nada mais é do que a regra que os processos que estão se comunicando tem de seguir, análogo a um idioma com todas as regras gramaticais.

Comunicação entre dois sistemas.

Um caso particular de comunicação entre sistemas distribuídos é a Comunicação em Grupos, que diferente das demais, separa a complexidade de controle e gerenciamento das mensagens da complexidade da aplicação, tratando os diversos computadores como sendo pertencentes a um grupo.

Nela, a comunicação pode ser de um para vários ou de vários para vários e os processos são organizados em grupos distintos, se comunicando através do envio de mensagens para os grupos de forma confiável e ordenada aos membros desse grupo.

Uma analogia à comunicação em grupo é o conceito de uma lista de transmissão do WhatsApp, onde um remetente envia uma mensagem para uma parte (a lista de transmissão) e vários usuários (membros da lista) recebem a mensagem. Os grupos permitem que os processos lidem com coleções de processos como uma abstração. Idealmente, um processo deve enviar apenas uma mensagem a um grupo e não precisa saber ou se importar com quem são seus membros.

Listas de transmissão do WhatsApp.

A comunicação pode ser implementada usando-se:

  • Multicast
    Pacotes são enviados de uma só vez para todos os processos de um grupo.
Multicast
  • Broadcast
    Pacotes são enviados para todas as máquinas e somente os processos que fazem parte do grupo não os descartam.
Broadcast
  • Unicast
    Transmissão ponto-a-ponto, processo tem que enviar mensagem para cada membro do grupo.
Unicast

Propriedades da Comunicação em Grupos

Atomicidade

Uma propriedade muito importante no mecanismo de comunicação em grupo é a atomicidade. Através dessa propriedade, quando uma mensagem é enviada para um grupo, ela chega corretamente para todos os membros do grupo ou não chega para nenhum membro.

Com esta propriedade, o processo remetente receberá uma mensagem de erro se um ou mais integrantes do grupo teve algum problema no recebimento da mensagem. Os demais vão ignorar esta mensagem.

Ordenação das mensagens

Diferentes requisitos podem ser impostos na ordem de entrega das mensagens aos membros de um grupo, em função das necessidades da aplicação. Dentre os modos de ordenação, podemos citar:

  • Sem Ordenação
    As mensagens são enviadas ao grupo sem a preocupação de ordenamento. Tem o menor overhead pois não necessita controle algum de sequência, porém pode não ser adequado para muitas aplicações.
  • FIFO (First In First Out)
    Esquema de ordenação onde as mensagens enviadas por um membro do grupo são entregues na ordem de envio a qualquer outro membro do grupo que estiver funcionando corretamente.
FIFO.
  • Ordenação Causal
    Esquema de ordenação em que um membro do grupo responde uma mensagem enviada ao grupo, e os membros do grupo que funcionam corretamente receberão a resposta após a mensagem que a originou. Existe uma relação de causalidade entre as mensagens.
Ordenação Causal.
  • Ordenação Total
    Esquema de ordenação onde as mensagens serão entregues na mesma ordem a todos os membros do grupo que estiverem funcionando corretamente.
Ordenação Total.
  • Ordenação Universal
    Todas as mensagens são recebidas na ordem exata em que são enviadas. Deve existir um único tempo global e, portanto, os relógios dos processos envolvidos devem estar sincronizados.

Referências Bibliográficas:

COULOURIS G.; DOLLIMORE J.; KINDBERG T. Distributed Systems Concepts and Design. 3.ed. Harlow, England: Addison Wesley, 2001.

TANENBAUM, Andrew S. Distributed operating systems. Prentice-Hall: 1995.

--

--

Piercarlo Guinzani

Software Engineer at Telehealth Center (NTS) of the University Hospital of the Federal University of Maranhão (HU-UFMA)