next up previous contents
Next: Sistemas Open-Source Up: Blocos Básicos em Sistemas Previous: Entrega Confiável de Mensagens   Sumário

Broadcast de Mensagens

Nas seções anteriores, foi discutida a comunicação ponto-a-ponto confiável como um dos blocos básicos. Apesar de comunicação ponto-a-ponto ser suficiente para muitas aplicações, há muitas aplicações que necessitam que um nó envie uma mensagem para vários nós. Broadcast é a forma de comunicação onde um nó envia uma mensagem a todos os outros nós do grupo. Como a primitiva básica de comunicação suportada por uma rede é ponto-a-ponto6, esta primitiva deve ser usada para implementar broadcast. Desta forma, a implementação está suscetível a falhas de nós e de comunicação, e isto não é aceitável em sistemas tolerantes a falhas. Basicamente, há três propriedades que interessam quando mensagens são enviadas a diferentes nós: Esta seção descreverá cada um destes requisitos em broadcasts, e então métodos para suas implementações. Supõe-se que falhas não particionam o cluster.
Broadcast Confiável Broadcast confiável possui uma propriedade básica: uma mensagem enviada deve ser recebida por todos os nós operacionais, mesmo na ocorrência de falhas. Esta propriedade deve ser válida mesmo se o nó transmissor falhar após enviar a mensagem para apenas alguns nós. Duas possíveis soluções para este problema seriam:
Broadcast Atômico Um paradigma de broadcast atômico é mais estrito que o broadcast confiável: ele não só implica que uma mensagem enviada por um nó é recebida por todos os nós operacionais, como também que mensagens enviadas por nós diferentes devem ser entregues nos nós receptores na mesma ordem. Para compreender sobre esta ordem de entrega, é necessário entender a diferença entre receber e entregar mensagens: receber uma mensagem significa que o nó a recebeu usando sua interface de rede; após receber a mensagem, o nó (ou o sistema operacional) precisa entregar a mensagem ao processo que irá consumi-la. Protocolos de broadcast atômico devem garantir que as mensagens sejam entregues na ordem correta, mesmo que não tenha sido esta a ordem de recebimento das mensagens. Dois métodos conhecidos para se implementar este protocolo são:
Broadcast Causal Em broadcasts atômicos, a ordem na qual as mensagens eram entregues não era importante; desejava-se somente que qualquer que seja esta ordem, ela deve ser a mesma em todos os nós. Tal requisito pode ser suficiente para várias aplicações, mas pode existir a necessidade de que as mensagens sejam entregues de acordo com a casualidade de seus eventos. Ou seja, se a mensagem $m_1$ foi enviada antes de $m_2$, então $m_1$ deve ser entregue antes de $m_2$ também. Para isso, define-se a relação ``aconteceu antes'' (representada por $\rightarrow$) que define a casualidade de eventos. Isto é, $e_1 \rightarrow e_2$ significa que o evento $e_1$ pode casualmente afetar o evento $e_2$. Ainda, esta relação cria uma ordem causal onde $e_1$ acontece antes de $e_2$. Para resolver este problema, duas abordagens podem ser usadas:
Os protocolos acima descritos são apenas breve descrições de seus funcionamentos. Para maiores detalhes, consulte [1].
next up previous contents
Next: Sistemas Open-Source Up: Blocos Básicos em Sistemas Previous: Entrega Confiável de Mensagens   Sumário
Nelio Pereira 2002-07-10