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 pedido resposta 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 pedido resposta respost a resposta pedido resposta pedido
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 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. 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
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 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 OBS: Para desfazer totalmente as configurações (apagar), apague a pasta.jxta
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/jxtajxse/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