Sistemas Distribuídos Distribuidos... · P2P, no entanto, para iniciar uma comunicação, um...

25
Sistemas Distribuídos P2P Peer to Peer Fonte: Carlos Alberto Kamienski e Webaula Estácio

Transcript of Sistemas Distribuídos Distribuidos... · P2P, no entanto, para iniciar uma comunicação, um...

Page 1: Sistemas Distribuídos Distribuidos... · 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

Sistemas Distribuídos

P2P – Peer to Peer

Fonte: Carlos Alberto Kamienski e Webaula Estácio

Page 2: Sistemas Distribuídos Distribuidos... · 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

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

Page 3: Sistemas Distribuídos Distribuidos... · 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

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

Page 4: Sistemas Distribuídos Distribuidos... · 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

Modelo Cliente/Servidor

pedido

resposta

pedido resposta

pedido

resposta

Page 5: Sistemas Distribuídos Distribuidos... · 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

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.

Page 6: Sistemas Distribuídos Distribuidos... · 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

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

Page 7: Sistemas Distribuídos Distribuidos... · 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

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

Page 8: Sistemas Distribuídos Distribuidos... · 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

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

Page 9: Sistemas Distribuídos Distribuidos... · 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

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.

Page 10: Sistemas Distribuídos Distribuidos... · 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

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

Page 11: Sistemas Distribuídos Distribuidos... · 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

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

Page 12: Sistemas Distribuídos Distribuidos... · 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

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

Page 13: Sistemas Distribuídos Distribuidos... · 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

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

Page 14: Sistemas Distribuídos Distribuidos... · 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

JXTA - Camadas

Page 15: Sistemas Distribuídos Distribuidos... · 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

JXTA

Page 16: Sistemas Distribuídos Distribuidos... · 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

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

Page 17: Sistemas Distribuídos Distribuidos... · 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

JXTA – Utilizando o JXTA Shell 2.4

• Insira o nome do Peer e a senha, com 8

caracteres, no mínimo

Page 18: Sistemas Distribuídos Distribuidos... · 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

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

Page 19: Sistemas Distribuídos Distribuidos... · 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

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

Page 20: Sistemas Distribuídos Distribuidos... · 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

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.

Page 21: Sistemas Distribuídos Distribuidos... · 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

JXTA – Utilizando o JXTA Shell 2.4

•O console JXTA é inicializado,

esperando por comandos. Exemplo de

chat básico de mensagens à seguir

Page 22: Sistemas Distribuídos Distribuidos... · 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

JXTA – Utilizando o JXTA Shell 2.4

•O console JXTA é inicializado,

esperando por comandos. Exemplo de

comandos de chat básico de mensagens

à seguir

Page 23: Sistemas Distribuídos Distribuidos... · 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

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

Page 24: Sistemas Distribuídos Distribuidos... · 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

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/

Page 25: Sistemas Distribuídos Distribuidos... · 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

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