1 / 23

JacORB Sobre JXTA

JacORB Sobre JXTA. Implementação Do JXTA Como Protocolo De Transporte Do JacORB. Objetivo do trabalho. Fazer o JacORB rodar sobre o JXTA, de modo a permitir que aquele “atravesse” possíveis firewalls presentes em aplicações distribuídas. O JacORB: É um ORB Java; Open-source, etc. O JXTA:

tejano
Download Presentation

JacORB Sobre JXTA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JacORB Sobre JXTA Implementação Do JXTA Como Protocolo De Transporte Do JacORB Ivan Bittencourt de A. e S. Neto

  2. Objetivo do trabalho • Fazer o JacORB rodar sobre o JXTA, de modo a permitir que aquele “atravesse” possíveis firewalls presentes em aplicações distribuídas. Ivan Bittencourt de A. e S. Neto

  3. O JacORB: É um ORB Java; Open-source, etc. O JXTA: Protocolo P2P aberto; Escrito em Java e em C (mas pode ser implementado em outras linguagens); Independência de plataforma O JacORB e o JXTA Ivan Bittencourt de A. e S. Neto

  4. O JXTA • Há uma série de protocolos definidos: • Peer Resolver Protocol: enviar pedidos e receber respostas de outros peers. • Peer Discovery Protocol: usado para publicar e encontrar recursos. • Pipe Binding Protocol: usado para criar um canal de comunicação entre 2 peers. • Etc... Ivan Bittencourt de A. e S. Neto

  5. Mais JXTA • Bastante diferente do modelo tradicional do TCP/IP. • Funciona de maneira meio “mágica” (API simples). • Não utiliza IPs nem portas, mas um ID e um grupo (na verdade um Advertisement) para cada recurso. • Guarda as configurações iniciais num diretório “.jxta”. • Comunicação entre peers ocorre por meio de Pipes. Ivan Bittencourt de A. e S. Neto

  6. Exemplo de Advertisement <?xml version=“1.0”?> <jxta:PipeAdvertisement> <Id>urn:jxta:uuid-DEAE73...106</Id> <Type>JxtaUnicast</Type> <Name>ExamplePipe</Name> </jxta:PipeAdvertisement> Ivan Bittencourt de A. e S. Neto

  7. Publicando um InputPipe discoverySvc = netPeerGroup.getDiscoveryService(); pipeAdvertisement = (PipeAdvertisement) AdvertisementFactory.newAdvertisement( PipeAdvertisement.getAdvertisementType()); discoveryService.publish(pipeAdvertisement); discoveryService.remotePublish(pipeAdvertisement); Ivan Bittencourt de A. e S. Neto

  8. Tipos de Peers • Rendezvous: decide se propaga mensagens que ele recebe. • Relay: faz requisições e recebe respostas em nome de outro peer. • Peer “normal”. Ivan Bittencourt de A. e S. Neto

  9. Publicação/Busca de recursos • Cada peer conhece algum(ns) rendezvous peer(s). • Cada rendezvous peer conhece alguns outros rendezvous peers. • Quando um peer publica seus recursos, ele manda informações ao seu rendezvous. • A busca de recursos ocorre somente entre os redezvous, o que agiliza bastante a busca. • Mas a comunicação entre peers é feita diretamente. Ivan Bittencourt de A. e S. Neto

  10. Um exemplo JXTA public static void main (String[] args) throws Exception { PeerGroup netPeerGroup = PeerGroupFactory.newNetPeerGroup(); DiscoveryService discovery = netPeerGroup.getDiscoveryService(); discovery.addDiscoveryListener(this); discovery.getRemoteAdvertisements(null, DiscoveryService.PEER, null, null, 5); } Sending a Discovery Message Got a Discovery Response [5 elements] from peer : unknown Peer name = suz Peer name = Frog@SF05 Ivan Bittencourt de A. e S. Neto

  11. O peer “servidor” cria um InputPipe e publica o ID deste na rede. O peer cliente obtém de algum modo o ID publicado (numa IOR, por exemplo), localiza o InputPipe e cria um OutputPipe. A conexão (unidirecional) está estabelecida. Comunicação entre peers Peer cliente Peer servidor Ivan Bittencourt de A. e S. Neto

  12. Felizmente há o JXTASocket • Mais alto nível. • Muito parecido com sockets de Java. • Permite comunicação nos dois sentidos. • Precisa do grupo e PipeAdvertisement de onde vai conectar. • Há um grande delay no estabelecimento da conexão (solucao: rendezvous peer em comum). • Há também o P2PSocket (não vem junto com o JXTA). Ivan Bittencourt de A. e S. Neto

  13. P2PSocket • Substitui o Socket e ServerSocket do Java. • Mas roda sobre JXTA. • Seu uso é muito parecido com o de sockets normais. • Usa componentes JXTA para simular uma rede TCP/IP. • Mais intuitivo que o JXTASocket. Dá até pra usar sem saber que roda sobre JXTA. Ivan Bittencourt de A. e S. Neto

  14. Atravessando firewalls/NAT • Se um peer está atrás de firewall ou NAT, é preciso que ele encontre um relay peer (o configurador do JXTA faz isso). • O relay peer recebe/envia mensagens em nome do peer inacessível. • De tempos em tempos, o peer inacessível se conecta ao seu relay peer e envia/pega suas mensagens pendentes. • Logo, o firewall tem que estar aberto em pelo menos uma porta para conexões externas (geralmente 80). Ivan Bittencourt de A. e S. Neto

  15. Travessia de firewall/NAT Ivan Bittencourt de A. e S. Neto

  16. A “ponte” entre o JacORB e o JXTA: a ETF • A ETF (Extensible Transport Framework) é suportada pelo JacORB. • Ela define (num arquivo IDL) uma série de interfaces que devem ser implementadas para adicionar um novo protocolo de transporte. • Basta estender as classes da ETF que estão no “jacorb.jar”. Ivan Bittencourt de A. e S. Neto

  17. Interfaces da ETF • Connection (ClientConnection e ServerConnection) • Profile • Listener • Factories • Handle (o JacORB já implementa) Ivan Bittencourt de A. e S. Neto

  18. ORB Plugin Factories::create_listener() Listener::set_handle() Listener::listen() JacORB e a ETF Criação de um Listener server-side: Ivan Bittencourt de A. e S. Neto

  19. ETF Profile • Contém toda informação relacionada a um endereço para um protocolo de transporte específico (no caso do JXTA, o PipeAdvertisement e o grupo) + versão GIOP + object key. • Métodos Profile <-> CDROutputStream <-> IOR. • Representa o alvo de uma conexão. Ivan Bittencourt de A. e S. Neto

  20. ETF Listener, Connection e Factories • Listener: Provê um “transport endpoint” que pode ser conectado a partir de um cliente (que possui um profile). • Factories: usado pelo ORB para criar Listeners, Connections e Profiles. • Connection: define uma interface entre o ORB e a camada de transporte. Ivan Bittencourt de A. e S. Neto

  21. Juntando tudo isso • JacORB rodando sobre JXTA. • Mas fica lento. • Bem lento mesmo! • Solução: P2PSockets? Não. • Solução2: criar grupos? Não. É o que o P2PSockets faz. • O JXTA é lento mesmo. Afinal, ele é destinado a P2P, onde não respostas imediatas não são essenciais (ou possíveis). • O que foi feito: configurado um rendezvous peer em comum. Ivan Bittencourt de A. e S. Neto

  22. Próximos passos • Testes de desempenho em vários ambientes. • Problema com JxtaSocket: objetos muito grandes. • Adicionar suporte a P2PSockets -- talvez. Ivan Bittencourt de A. e S. Neto

  23. É isso... • Mais informações em: • http://www.linux.ime.usp.br/~ivanneto/mac499/ • Perguntas, sugestões? Ivan Bittencourt de A. e S. Neto

More Related