Comunicação em Grupo e Tolerância a Falhas


A abstração de Comunicação em Grupo (ou "Group Communication") tem por objetivo resolver problemas básicos de inconsistências na comunicação entre processos distribuídos que cooperam para a execução de uma tarefa. Nesse sentido, um grupo é apenas um conjunto de processos que cooperam. Na forma mais geral de Comunicação em Grupo, um determinado processo pode pertencer a diferentes grupos. Ou seja, grupos podem se sobrepor ("overlap"). A comunicação entre processos que formam um grupo é feita através de difusão. Uma mensagem a ser transmitida é enviada a todos os participantes do grupo. Em geral, protocolos de Comunicação em Grupo (CG) garantem que uma mensagem, uma vez entregue a um processo de determinado grupo, seja também entregue a todos os outros processos em funcionamento do mesmo grupo (atomicidade), mesmo que o processo que originou a mensagem falhe antes de finalizar a transmissão. Outra propriedade, em geral garantida pela abstração de CG, é a ordem em que mensagens são entregues a diferentes processos. Por exemplo, um protocolo de ordem total entrega mensagens na mesma ordem para todos os processos de um grupo. Além de atomicidade, outras propriedades de tolerância a falhas também podem ser garantidas por protocolos de CG. Por exemplo, o protocolo pode garantir consistência mesmo diante de um particionamento temporário do grupo.

Além de facilitar a implementação de outras abstrações, Comunicação em Grupo tem também sido defendida como mecanismo básico para a programação de aplicações distribuídas de caráter geral.