SISTEMAS DISTRIBUÍDOS Comunicação coletiva Modelo Peer-to-Peer Slide 6 Nielsen C. Damasceno
Introdução Os modelos anteriores eram realizado entre duas partes: Cliente e Servidor. Com RPC e RMI não é possível a comunicação de um processo com outros processos ao mesmo tempo. Grupo: é uma coleção de processos que agem juntos em um sistema, de tal forma que quando uma mensagem é enviada para o grupo, todos os membros do grupo a recebem.
Introdução A Figura mostra a comunicação ponto-aponto, na qual a mensagem é enviada do processo S ao processo R.
Introdução A Figura mostra a comunicação coletiva, na qual a mensagem é enviada do processo S a todos os processos R. Isso faz com que a mensagem chegue a vários processos apenas com um envio.
Comunicação coletiva Os grupos são dinâmicos, ou seja, novos grupos podem ser criados e grupos existentes podem ser eliminados. Um processo pode entrar para o grupo ou o deixá-lo. Um processo pode ser membro de diversos grupos simultaneamente. A ideia de grupo de processos é similar a ideia de grupos de emails, no qual, um usuário pode ser membro de várias listas de emails (grupos).
Forma de Implementação Multicasting: Endereço especial que múltiplas máquinas podem receber, como por exemplo o range de IPs entre 224.x.x.x e 239.x.x.x. Com multicasting, a implementação é direta. Basta atribuir a cada grupo um endereço multicasting diferente.
Forma de Implementação Broadcasting: Pacotes contendo certos endereços são enviados para todas as máquinas. Menos eficiente que multicasting(todas as máquinas recebem as mensagens enviadas por broadcasting e o software precisa verificar se o pacote é para ele). Também necessita de somente um pacote para atingir todos os membros do grupo.
Forma de Implementação Unicasting: Transmissão separada de pacote para cada membro do grupo, sendo que para um grupo formado por n processos, serão necessárias n mensagens, uma para cada processo.
Comunicação coletiva Multicasting
Comunicação coletiva Broadcasting
Comunicação coletiva Unicasting
Características da Comunicação coletiva Uma característica importante é se um processo fora do grupo pode enviar uma mensagem ao grupo. Neste sentido, temos dois tipos de grupos: abertos e fechados. Em um grupo fechado um processo que não pertence ao grupo não pode enviar mensagens ao grupo. Ele pode enviar mensagens aos processos do grupo individualmente, mas não pode enviar uma mensagem coletiva ao grupo.
Grupo fechado
Características da Comunicação coletiva Já em grupos abertos, um processo que não pertence ao grupo pode enviar mensagens coletivas aos grupos. Isso faz com que haja interferência externa. Geralmente, utilizamos grupos abertos quando processos externos ao grupo geram requisições / carga de trabalho aos processos do grupo, como no caso de servidores replicados.
Grupo aberto
Hierarquia entre grupos Outra característica importante está relacionada à hierarquia dos processos dentro de um grupo. Temos dois tipos de grupos: de iguais e hierárquicos.
De iguais Todos podem executar tarefas e decidir quem as executará. Uma vantagem deste tipo de grupo é que não há um ponto crítico de falha. Porém, para tomar uma decisão é mais demorado, já que os processos precisam entrar em consenso.
Grupos hierárquicos Há um processo que é o coordenador do grupo, sendo que ele é o responsável por decidir quem executará as tarefas e por coordenar a execução delas.
Grupos hierárquicos A vantagem deste tipo de grupo é que a tomada de decisão é mais rápida. Porém, há um ponto crítico de falha, que é o coordenador. Se ele sair do ar, o grupo perderá o processo que controla o grupo.
Ordenação de mensagens Com relação à ordenação das mensagens, temos: Global Time Ordering Consistent Time Ordering
Global Time Ordering Todas as mensagens chegam na ordem exata em que foram enviadas. Isso não é fácil de ser implementado, já que necessita que todos os processos estejam sincronizados fisicamente com o clock.
Consistent Time Ordering Se duas mensagens são enviadas em tempos próximos, o sistema adota uma delas como sendo a primeira e envia a todos os membros do grupo segundo esta ordem, garantindo assim que as mensagens cheguem a todos os membros do grupo na mesma ordem, que pode não ser a ordem real. Porém, todos os processos concordarão com a mesma ordem de envio.
Modelo Peer-To-Peer Aplicações Peer-to-Peer distribuem a informação entre seus nós membros em vez de concentrar em um único servidor. Isso a torna muito diferente do modelo Cliente/Servidor que estamos acostumados a utilizar. Neste modelo, não há a necessidade de nenhum elemento coordenador ou centralizador de recursos, havendo certo grau de anonimato para o proprietário do recurso.
Modelo Peer-To-Peer Todos os nós membros possuem a mesma capacidade de compartilhar informação com os demais membros da rede, sendo que todos podem ser ao mesmo tempo clientes e servidores de dados. Cada usuário torna seu repositório de informações disponível para distribuição e pode estabelecer conexão direta com outro usuário.
Modelo Peer-To-Peer Há dois tipos de modelos Peer-to-Peer: Puro. Híbrido. O modelo Peer-to-Peer híbrido mescla características de Cliente/Servidor e comunicação entre os peers.
Modelo Híbrido (Messenger)
Modelo Híbrido (Messenger) O Messenger que é um exemplo de Peer-to-Peer híbrido, em que a autenticação e a base de índices estão no servidor e a comunicação ocorre exclusivamente entre os pares, sem a interferência do servidor. A grande vantagem deste modelo é que a busca é mais rápida, já que a base de índices está centralizada em um servidor. Porém, caso o servidor saia do ar, nada funcionará, já que os pares não saberão onde estão os dados para a comunicação.
Modelo Peer-To-Peer No modelo Peer-to-Peer puro, não há servidor com base de índices. Neste modelo, todos os pares (peers) possuem a sua própria base de índices e de dados, sendo que a comunicação pode ocorrer entre qualquer subconjunto de pares.
Modelo Peer-To-Peer
Modelo Peer-To-Peer A grande vantagem deste modelo é que ele possui altíssima disponibilidade, gerando uma rede que funciona praticamente cem por cento do tempo, já que não há ponto crítico de falha. A desvantagem é que a busca é mais lenta.
Requisitos dos modelos Peer-to- Peer Escalabilidade Global: há grande quantidade de computadores conectados à rede. Balanceamento de carga: torna a distribuição igualitária entre os peers, possibilitando o download de diferentes peers, em função de sua carga e a otimização das interações locais entre peers vizinhos. A ideia é buscar vizinhos mais próximos, evitando a latência da comunicação.
Requisitos dos modelos Peer-to- Peer Dinamicidade dos computadores: peers podem entrar e sair do sistema a qualquer momento. Quando entram, devem ser integrados ao sistema global. Quando saem (voluntariamente ou não) o próprio sistema deve detectar e adequar à nova carga.
Requisitos dos modelos Peer-to- Peer Segurança dos dados em um ambiente heterogêneo: autenticação e criptografia. Anonimato: capacidade de negar o compartilhamento de um arquivo e a possibilidade de não realizar download de conteúdo protegido.
Exemplos O primeiro exemplo é um modelo Peer-to- Peer híbrido, no caso o Napster. Ele foi o primeiro sistema Peer-to-Peer a ser altamente popularizado. Ele é um sistema de troca exclusiva de músicas, principalmente em formato MP3 e funciona em uma arquitetura centralizada.
Napster
Rede GNUtella O segundo exemplo utiliza o modelo Peer-to- Peer puro, no caso a rede GNUtella. Este modelo possui alta disponibilidade, alta dispersão e alto nível de balanceamento de carga, sendo praticamente impossível de ser eliminada. Neste modelo não há garantias de que o arquivo exista em um dos N peers atingíveis a partir do peer de origem.
Rede GNUtella Na busca, para ela não ser infinita, há uma variável chamada TTL (Time To Live). Esta variável informa a quantidade máxima de níveis que ela estará ativa. Como a busca ocorre em uma estrutura de árvore cada vez que descemos um nível na árvore, esta variável é incrementada em uma unidade.
Rede GNUtella
Rede GNUtella Neste modelo, cada peer funciona como cliente, servidor e gateway (realizando encaminhamento de mensagens). Cada peer conhece, pelo menos, 1 peer vizinho. A consulta é feita pelo peer de origem e a ela é atribuída um TTL (em geral até 6 ou 7 níveis). O peer vizinho realiza a consulta localmente e encaminha a consulta para seus vizinhos, incrementando o TTL.