Sistemas Distribuídos
P2P – Peer to Peer
Fonte: Carlos Alberto Kamienski e Webaula Estácio
Evolução dos Modelos de Rede da
Internet
• A Internet era P2P no início
• Qualquer computador funcionava como cliente e
servidor
– Aplicações principais: TELNET e FTP
• A “cooperação” era o principal objetivo e o
“valor” da rede
Modelo Cliente/Servidor
• Modelo mais usado atualmente na Internet
• Dependente de servidores bem configurados em
com informação acessível
• Não explora o potencial de computação distribuída
proveniente da Rede
• A existência de um ou milhares de computadores é
indiferente na interação de um usuário típico com a
rede
• PCs clientes com capacidade razoável ficam
“escondidos” atrás do DNS
Modelo Cliente/Servidor
pedido
resposta
pedido resposta
pedido
resposta
Peer-to-Peer (P2P)
• Sistemas peer-to-peer são sistemas distribuídos que
consistem em nós interconectados com capacidade de
auto-organização em relação à topologia da rede com o
propósito de compartilhar recursos, adaptar-sea falhas e
picos de carga mantendo um nível aceitável de
conectividade e desempenho sem requerer
intermediação ou suportede um servidor central
(Androutsellis e Spinellis, 2004).
• Na arquitetura P2P não há coordenação central e,
portanto, não há um ponto de falha nem gargalo.
Nenhum peer tem uma visão global do sistema, porém
todos os dados e serviços são acessíveis de qualquer
peer.
Características
• Sem coordenação central
• Sem banco de dados central
• Sem local único de falha ou gargalo
• Nenhum ponto (peer) tem visão global do sistema
• Todos os dados e serviços são acessíveis de
qualquer ponto
• Pontos são autônomos
• Pontos e conexões não são confiáveis
Principais Vantagens
• Escalabilidade
– Não há gargalo para crescimento
• Robustez
– Não há ponto de falha único
• Flexibilidade
– Auto-configuração / configuração dinâmica
Arquiteturas P2P
• P2P Puro
– Não existe servidor centralizado.
– Os peers se comunicam diretamente
– Exemplos: Gnutella e FreeNet
pedido
resposta
pedido
resposta
pedido
resposta
pedidoresposta
Arquiteturas P2P
• P2P Híbrido
– O servidor é conectado primeiro para obter meta-informações (identidade do peer, verificar
credencias de segurança) e este então redireciona para o peer requisitado que se comunicam
diretamente
http://pt.wikiversity.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0s_Redes_de_Computadores/Protocolos_de_aplica%C3%A7%C3%A3o_%E2%80%93_princ%C3%ADpios_gerais
• Exemplos: O Windows Live Messenger e o
Yahoo Messenger e JXTA (P2P do Java) são
bons exemplos, onde usuários podem bater
papo online instantaneamente em “tempo real”.
• A comunicação desta aplicação é tipicamente
P2P, no entanto, para iniciar uma comunicação,
um usuário registra-se em um servidor, e
verifica quem da sua lista de contatos também
está registrado, para a partir de então começar
uma comunicação. Essas aplicações também
disponibilizam transferência de arquivos,
suporte a conferência e outras ferramentas.
Arquiteturas P2P
• Itermediários
– SuperPeers contém algumas informações que outros peers podem não
ter.
– Os peers então procuram informações nos SuperPeers uma vez que não
conseguiram achá-las em nenhum outro lugar.
– Exemplo: KaZaa
Plataforma de Desenvolvimento
P2P JXTA
• JXTA – Juxtapose (pronúncia = “Jucksta”)
• Permite qualquer dispositivo se comunicar
diretamente com outro dispositivo
• Conjunto de protocolos P2P simples e abertos
que habilitam os dispositivos na rede a se
comunicarem, colaborarem e compartilharem
recursos
JXTA
• P2P Híbrido
• Desenvolvido em Java, XML e JXTA, usando TCP/IP
(HTTP)
• Cada peer recebe um peer ID e está associado a um
ou mais peergroups
• Dentro dos peergroups os peers cooperam e têm
funções similares sob um conjunto unificado de
capacidades e restrições
• Provê protocolos, funções e serviços comuns para
aplicações P2P
JXTA - Camadas
• Peers JXTA têm três camadas
• Núcleo
– Gerência dos protocolos
• Serviços
– Funções gerais usadas pelas aplicações
• Aplicação
– Aplicação do usuário
JXTA - Camadas
JXTA
JXTA - Experiência
• Muitos problemas (projeto praticamente
descontinuado) !!
• Complexo
• Curva de aprendizado íngreme
• Esquema “pegar tudo ou largar”
• É um “elefante branco” ?
– Quer resolver muitos problemas, mas fica muito grande, pesado e difícil de entender
• Experiência GT-P2P / RNP
– Uso do DHT: insucesso!
– Uso do contorno do NAT: insucesso!
• Várias pessoas compartilham essa opinião
JXTA – Utilizando o JXTA Shell 2.4
• Insira o nome do Peer e a senha, com 8
caracteres, no mínimo
JXTA – Utilizando o JXTA Shell 2.4
•Marque, “Act as Rendezvous, se a sua
máquina for o “servidor JXTA
•Configura os endereços de TCP e
HTTP, bem como a porta de
comunicação.
•Se sua máquina for o cliente, marque
“Act as a Relay
JXTA – Utilizando o JXTA Shell 2.4
•Coloque as URI’s de Rendezvous ou de
Relay (dependendo de que lado você
esteja, se cliente ou servidor)
•Clique OK, quando terminado e
aguarde o console inciar
JXTA – Utilizando o JXTA Shell 2.4
•Ao ser iniciado, o console JXTA solicita
a senha para a Identidade P2P. Digite a
senha cadastrada no início da
configuração do JXTA.
JXTA – Utilizando o JXTA Shell 2.4
•O console JXTA é inicializado,
esperando por comandos. Exemplo de
chat básico de mensagens à seguir
JXTA – Utilizando o JXTA Shell 2.4
•O console JXTA é inicializado,
esperando por comandos. Exemplo de
comandos de chat básico de mensagens
à seguir
JXTA – Utilizando o JXTA Shell 2.4
• Verifica se a máquina foi configurada como RendezVous ("servidor" JXTA)
– Rdvstatus
• Criando um advertisement:
– grupoAdv = newpgrp -n grupoteste
• Vendo se grupo foi criado
– cat grupoAdv
• Instanciando (inicializando) o grupo criado
– join -d grupoAdv
• Após, crie uma identificação para o grupo
– Startando os grupos criados
– join –s
• OBS: Para desfazer totalmente as configurações (apagar), apague a pasta
.jxta
•Registrando usuário no grupo
•talk -r usuario
•Logando-se ao usuário
•talk -l usuário
•Tentando conversar com outro usuário do grupo:
•talk -u meuUsuário usuárioDestino
•Para sair da conversação, digite ponto (.).
•Para sair do programa, digite exit
JXTA – Utilizando MyJXTA
• Programa gráfico similar ao MSN
• Funciona com Peer Relay ("Cliente")
• Necessita do JXTA Shell (ou aplicativo desenvolvido),
pois precisa do peer Rendez Vous ("Servidor")
• Disponível em http://download.java.net/jxta/jxta-
jxse/2.4.1/myjxta/jxta-myjxta-2.4.1.zip
• Demais arquivos relativos ao MyJXTA disponível em
http://download.java.net/jxta/jxta-jxse/2.4.1/myjxta/
JXTA – Links Importantes
• Download do shell do JXTA
– http://download.java.net/jxta/jxta-jxse/2.4.1/jxse-shell/
• Comandos do JXTA
– http://jxta.free.fr/JXTA-SHELL/JXTA_Shell.html
• Configurações do JXTA (do livro de O'Reilly)
– http://oreilly.com/topics/java/P2P_Java
• Configuração do MyJXTA (fórum)
– http://www.java.net/node/678858