Implementação Do JXTA Como Protocolo De Transporte Do JacORB

Slides:



Advertisements
Apresentações semelhantes
Suporte de IP Movel para IPv4 RFC 3344
Advertisements

Projeto de Sistemas de Software Luana Lachtermacher
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
2008, Edgard Jamhour IPv6 Exercício de Tunelamento 6To4 Edgard Jamhour.
1 Java: Tratamento de Exceções Alcides Calsavara.
2008 LCG/UFRJ. All rights reserved. 1 Standard Template Library STL Claudio Esperança Paulo Roma Cavalcanti.
Ronaldo Celso Messias Correia
Banco de Dados Aula 01: Conceitos Básicos
INTRODUÇÃO À COMPUTAÇÃO PARALELA
Introdução à Consulta 24/3/06. Categorias de comandos DDL : estruturação de objetos de BD Ex. create table, drop index, alter table... DML: manipulação.
XP - Continuous Integration Leonardo Pereira Demilis.
Trac é uma ferramenta open source e de interface web para controle de projetos de desenvolvimento de software. O objetivo do software é ajudar o desenvolvedor.
Prof. Marcelo Diniz Fonte:
Container Managed Persistent Bean Kellyton Brito Projeto Compose
Prof. Dr. Helder Anibal Hermini
1. Equivalência entre portas 2. Derivação de expressões booleanas 3
Criptografia Quântica : Um Estudo
Teste Funcional de Software
Protocolos Criptográficos. Múltiplas chaves em RSA Para RSA, escolhe-se dois números, e e d, tal que e. d = 1 mod (p-1).(q-1) Entretanto, também pode-se.
O que é XtremWeb(XW)? Projeto de pesquisa relacionado a light-weight Grids. Plataforma Open Source para a elaboração de grades baseadas em PCs, desenvolvida.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Aplicação GeneAl Treinamento no GRADEp Aplicação GeneAl.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço OXManager Treinamento no GRADEp Serviço OXManager OXManagerDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 Serviço Worb Treinamento no GRADEp Serviço Worb WorbDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Treinamento no GRADEp GRADEp Desktop DesktopSwing.
I Seminário Educação e Tecnologia A Informática e a Educação Escolar A GESTÃO DE LABORATÓRIOS PÚBLICOS DE INFORMÁTICA FÁBIO FERRENTINI SAMPAIO NÚCLEO DE.
Publicidade e Propaganda - Conceitos e categorias 1° PPN Lucas Vinícius.
Publicidade e Propaganda – Conceitos e Categoria
Servidores e Programação Web Redes de Computadores.
1 Oi BlackBerry. 2 Índice 1Configurando o seu aparelho BlackBerry 2Formatando o seu aparelho BlackBerry 3Solicitando senha de ativação empresarial 4Indicador.
O Fluxo de Testes © Alexandre Vasconcelos
Serviços Integrados na Arquitetura da Internet Apresentação: Fernando Nadal.
Planejando seu site Objetivos Abordagem Sílvia Dota.
Metodologias de Construção de Sites
Página de entrada A página de entrada, ou a index, representa um convite para o seu site.
Curso de Engenharia Industrial Madeireira – UFPR Prof. Umberto Klock
Erivelton Pires Guedes Técnico de Planejamento e Pesquisa - Ipea Brasília - DF.
Sistemas de Tutoria Inteligente (STI) Visam proporcionar instrução de forma adaptada a cada aprendiz. STIs adaptam o processo de instrução a determinadas.
CT-300 – Seminário de Tese 1/25 Um Framework Padrão para Simulação de Modelos de Robôs Móveis de Robôs Móveis Juliano A. Pereira Prof. Carlos H. C. Ribeiro.
Técnicas de Diagnóstico. Objetivo Caracterizar técnicas de diagnóstico para o modelo do estudante Caracterizar técnicas de diagnóstico para o modelo do.
Jumpers 1. O que são Jumpers
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Trabalho de Formatura - MAC499 Bruno Takahashi C. de Oliveira Projeto: Omnitty Orientador: Prof.
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
M e d A d m i n. Quem é o público alvo da ideia? Profissionais vinculados à área da saúde, em particular, àqueles responsáveis pela administração de medicamentos,
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
Curso em CD-ROM Técnicas de Vendas SLIDES MODELO ALEATÓRIOS.
LINGUAGENS DE PROGRAMAÇÃO
Internet Aula 03. Histórico Durante a guerra fria, os EUA tiveram a necessidade de interligar laboratórios que trabalhavam para os militares; Essa interligação.
Conceitos Básicos de Redes de Computadores e acesso a Internet
Sistemas Operacionais e Windows XP Aula 04 – DCA0302.
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes.
Programação Concorrente com Thread Java
Robótica: Sistemas Sensorial e Motor
Comunicação CLP através do Driver OPC
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
Sistemas Operacionais
Aldo Carvalho e Marcos Lubas
Usando Java no Oracle Por Edson Almeida Junior
Sincronização com Locks. Locks É um mecanismo de sincronização de processos/threads em que estas devem ser programadas de modo que seus efeitos sobre.
Anália Lima (alc5) Bruno Gentilini (bgda) Eduardo Souza (efs) Ivan França (ilfn) Infra-Estrutura de comunicação Aula Prática Programação de Sockets TCP.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
Java em Redes de Computadores
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Professor: Paulo Gonçalves CIn/UFPE.
Java Generics Adeline de Sousa Silva.
Alisson Rafael Appio SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor Alisson Rafael Appio
Transcrição da apresentação:

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

Ivan Bittencourt de A. e S. Neto 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

Ivan Bittencourt de A. e S. Neto O JacORB e o JXTA 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 A idéia do JXTA é que ele seja independente de linguagens de programação, sistemas operacionais, tipo de rede, etc. Enfim, ele deve rodar em ambientes bastante heterogêneos (qualquer dispositivo pode ser um peer JXTA). Principal proposta do JXTA: * Encontrar peers e recursos na rede mesmo que estes estejam atrás de firewalls. E ele faz isso muito bem! Ivan Bittencourt de A. e S. Neto

Ivan Bittencourt de A. e S. Neto 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

Ivan Bittencourt de A. e S. Neto 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. Não há noções de IP e porta. Cada recurso ou peer é identificado por um ID. A API é simples (pelo menos para se fazer o básico). Na tela de configuração do JXTA ele pede informações como: se o peer está ou não atrás de firewall, se aceita conexões TCP, se aceita conexões HTTP, um username/password (que serve para grupos seguros, mas ele exige mesmo que você não queira utilizar esse recurso), um possível relay peer, rendezvous peer, etc. Um pipe permite fluxo de dados em uma direção. Na documentação do JXTA eles citam um pipe bidirecional, mas que eu não encontrei. Ivan Bittencourt de A. e S. Neto

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

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

Ivan Bittencourt de A. e S. Neto 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

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

Ivan Bittencourt de A. e S. Neto 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 O método newNetPeerGroup() inicia a plataforma JXTA. Todos os peers fazem parte do grupo NetPeerGroup (eles precisam entrar nesse grupo para iniciar a plataforma JXTA e não podem sair dele, mas podem entrar em outros grupos além desse). Caso seja a primeira execução do programa, o configurador JXTA será aberto e irá gravar os dados num subdiretório “.jxta” (inclusive o peer ID gerado). Um advertisement contem um conjunto de dados e pode ser representado como um arquivo XML. Por exemplo, um peer advertisement possui o peer ID, o group ID, nome, etc. Com uma única linha você já está na rede P2P! E sem passar nenhum argumento! A partir do netPeerGroup você pode adquirir os serviços JXTA, criar outros grupos e mais coisas. Ivan Bittencourt de A. e S. Neto

Comunicação entre peers 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. Peer cliente Para criar um pipe há o PipeService.createInputPipe(PipeAdvertisement, Listener) (que pode ser obtido através do netPeerGroup). Para publicar basta chamar discoveryService.remotePublish(Advertisement) – é muito simples! Depois e so criar o OutputPipe: PipeService.createOutputPipe(PipeAdvertisement) – O JXTA se vira para achar, mesmo que estiver atras de firewall / NAT! Voce so da o advertesement e esquece (mas tambem espera). Peer servidor Ivan Bittencourt de A. e S. Neto

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). Criar um ServerSocket no servidor: new JxtaServerSocket(NetPeerGroupID, PipeAdvertisement). Criar um Socket para um servidor: new JxtaSocket(NetPeerGroupID, PipeAdvertisement). Ou seja, é só o cliente descobrir o PipeAdvertisement do servidor! Ivan Bittencourt de A. e S. Neto

Ivan Bittencourt de A. e S. Neto 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. Exceto pelo desempenho, é claro. E ainda é beta, logo nem tudo deve estar funcionando perfeitamente. Ivan Bittencourt de A. e S. Neto

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

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

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”. A implementação do IIOP do JacORB é feita seguindo a especificação da ETF. Essas classes são: Connection, Profile, Listener, Factories, Handle. Ou seja, os arquivos gerados a partir da IDL da ETF estão já no “jacorb.jar”. Ivan Bittencourt de A. e S. Neto

Ivan Bittencourt de A. e S. Neto Interfaces da ETF Connection (ClientConnection e ServerConnection) Profile Listener Factories Handle (o JacORB já implementa) Como o JacORB implementa a interface Handle eu não sei muito sobre ela. Posso dizer que serve para se comunicar com o ORB (passagem de objetos Connection). Ivan Bittencourt de A. e S. Neto

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

Ivan Bittencourt de A. e S. Neto 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. A classe profile possui métodos para transformar um Profile em uma IOR e vice-versa. Na verdade voce escreve (ou le) tudo o que precisa num stream, e o JacORB gera a IOR. O objetivo é que com um profile na mão você sabe tudo o que precisa pra se comunicar com um objeto remoto. Ivan Bittencourt de A. e S. Neto

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. A Factories é uma fábrica (design pattern) – meio óbvio. É na connection que estão métodos como read, write, flush, etc. O ORB chama esses métodos. Há também os métodos de criação/manipulação de sockets. O Listener usa o ServerJxtaConnection. Um ORB cliente usa o ClientJxtaConnection. Ivan Bittencourt de A. e S. Neto

Ivan Bittencourt de A. e S. Neto 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. O P2PSocket usa grupos específicos, não o NetPeerGroup. Mas para um peer encontrar um grupo e entrar nele demora muito do mesmo jeito. Isso pode ser ruim: mais centralizado, ponto de falha, configuração de cada peer. Mas o desempenho melhora absurdamente. Ivan Bittencourt de A. e S. Neto

Ivan Bittencourt de A. e S. Neto 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

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