Pesquisar este blog

terça-feira, 18 de março de 2014

Sistemas Distribuídos Comunicação Multicast

Nos posts anteriores, Comunicação socket, stream,mpi e message queue e Comunicação (protocolo de rede, rpc e dce) foram explicados os sistemas de comunicação em sistemas distribuídos, aqui será descrito o sistema de multicast

Multicast

Multicast é utilizado quando há a necessidade de difundir uma informação para vários pontos diferentes, dentro de uma mesma rede. Várias técnicas foram utilizadas para difundir as informações, incluindo espalhamento por pontos, técnicas de infecção e protocolo de fofoca.

A ideia principal no multicast feito ao nível de aplicativos é fazer com que os nós se reconheçam dentro de uma mesma rede, e com isso consigam disseminar informações.

Existem duas maneiras de se construir uma rede para multicast, na primeira delas os nós se organizarão em uma árvore, o que significa que só existirá um caminho entre qualquer par de nós. Já na outra maneira os nós são organizados em forma de malha, onde cada ponto tem múltiplas conexões com outros nós. A principal diferença entre estes dois tipos de rede é que na segunda, em forma de malha, uma falha de um nó não afeta muito a performance da rede, já que a rede não precisará se reorganizar imediatamente, ou seja ela é mais robusta. Já na primeira, em forma de árvore, cada falha de um nó, irá impedir um caminho entre dois pontos, obrigando a rede a se reorganizar.

Técnicas de infecção

As técnicas de infecção foram algorítmos criados a partir de estudos do comportamento dos vírus, de como eles fazem para se espalhar nos organismos vivos. Estes algorítmos tentam reproduzir no software o mesmo comportamento dos vírus, só que aqui este comportamento será utilizado para disseminar informações.

Um dos principais modelos de propagação é o de anti-entropia e neste modelo um nó I pega um outro nó D randomicamente e troca informações com este nó D. Neste modelo existem três formas de propagação da informação.

  1. I somente envia informações para o D 
  2. I somente recebe informações do D
  3. I recebe e envia informações com o D

No primeiro caso, as informações não serão espalhadas rapidamente, já que a informação só será espalhada pelos nós que estão contaminados (por contaminados entenda atualizados), com isso no começo poucas atualizações serão repassadas. Ao mesmo tempo, quando muitos nós estão atualizados, as chances de eles selecionarem um nó ainda não atualizado é relativamente pequena, o que faz com que demore para completar a disseminação para todos os nós.

O segundo caso trabalha muito bem quando muitos nós estão contaminados, já que as chances de se conectar a um nó não contaminado é grande.

Dentre os modelos de propagação apresentados, o mais rápido será o terceiro, onde as informações vão para os dois nós, o que faz com que ela se propague mais rapidamente.

Uma variância deste método é o chamado de método de fofoca, que funciona exatamente da mesma forma como quando conversamos sobre alguma novidade. Imagine que você gostaria de contar algo novo aos seus amigos, no inicio você liga para uma pessoa e conta a novidade.

Assim como você esta pessoa também ficará empolgada em espalhar esta atividade, até que ela tente contar a novidade para uma pessoa que já saiba o fato, isso fará com que o disseminador (leia-se fofoqueiro) desanime de contar a novidade para outras pessoas, já que isso não será mais novidade.

No modelo de fofoca, os nós vão espalhando a informação até que encontrem alguém que já foi atualizado, a partir dai este nó para de disseminar a informação. Este método é uma maneira muito boa de se espalhar as informações, porém com ela não é possível garantir que a informação será espalhada para todos os nós.

A grande vantagem dos algorítmos de epidemia é a sua escalabilidade, já que o número de sincronizações entre os processos é bem pequena.

Removendo dados

Remover dados utilizando os algorítmos de epidemia é complicado, esta complicação se dá pois após remover os dados de um nó, ele ficará vazio, e eventualmente ele irá receber uma atualização que recarregará os dados nele. 

A dica para remover dados usando um algorítmo de epidemia é gravar a remoção como sendo uma atualização de dados, com isso os dados daquele nó não serão atualizados novamente.

O grande problema desta solução é que ela é muito custosa em relação ao espaço ocupado pelas informações, uma vez que os dados apagados, não foram retirados do sistema.



Nenhum comentário:

Postar um comentário