Instituto de Computação - UNICAMP

Laboratório de Sistemas Distribuídos

Islene Calciolari Garcia

Busca em sistemas Peer-to-Peer

Este projeto foi inspirado em um artigo publicado pelo Prof. Shivakant Mishra, da Universidade do Colorado.

Introdução

Sistemas peer-to-peer são sistemas descentralizados e não hierárquicos. Os membros de um sistema peer-to-peer não estão divididos claramente entre clientes e servidores (podem ser vistos como clientes e servidores ao mesmo tempo). Neste projeto, vamos ver como estes sistemas podem ser utilizados para o compartilhamento de informações. Exemplos práticos são o Gnutella e Napster.

Fase 1

Nesta fase, cada nó do sistema deverá ser capaz de armazenar um conjunto de pares do tipo (chave, valor). Todas as chaves são conhecidas no ínicio do sistema. Todas as ligações entre os nós são estáticas e todos os nós se conhecem. Qualquer nó pode disparar uma busca e obter o resultado. Não é necessário prever casos de falha.

Fase 2

Nesta fase, cada nó deverá conhecer apenas um sub-conjunto dos nós do sistema. Se um nó quiser fazer uma busca por uma chave, esta busca deverá ser propagada pelo sistema até ser encontrado o valor ou até se concluir que este valor não está armazenado no sistema. Caberá a cada grupo decidir sua estratégia de busca. Pode-se considerar que todas as chaves são conhecidas no início do sistema.

Nós também podem falhar e, neste caso, as chaves armazenadas ficarão inacessíveis (ainda que temporariamente). O sistema não deve deixar de funcionar devido à falha de um nó.

Fase 3

Nesta fase, novos nós podem entrar ou sair do sistema e novas chaves podem ser incluídas ou removidas. Um novo nó deve ser apresentado a um conjunto de vizinhos e pode receber parte das chaves armazenadas. Um nó que deseja sair do sistema deverá distribuir suas chaves pelos nós vizinhos. Um nó com muitas chaves também pode distribuí-las pelos seus vizinhos, bem como um nó com poucas chaves pode se oferecer para armazenar um número maior de chaves.

Caso o grupo tenha quatro pessoas, um tópico adicional (veja lista abaixo) já deve ser contemplado.

Sugestão de tópicos adicionais