Sei sulla pagina 1di 14

Plataforma de Comunicacao de Grupos: JGroups com JDraw

Kamila Araujo de Carvalho1 , Leandro da Silva Medeiros 1 , Lenin E. Abadi e 1 1 1 Otero , Maciel Calebe Vidal , Robson Silva de Souza
1

Departamento de Ci ncia da Computacao Universidade do Estado de Mato Grosso e (UNEMAT) CEP 78390000 Barra do Bugres MT Brazil
{kamila araujo 1,le1008,leerabot,robsoniabc}@hotmail.com macielcalebe@gmail.com

Resumo. Em sistemas distribudos, os processos precisam trocar informacoes, ou seja, precisam se comunicar. Muitas vezes a aplicacao precisa se comunicar com mais de um nodo ao mesmo tempo, caracterizando assim a comunicacao em grupo. Podemos denir um grupo como sendo um conjunto de processos que cooperam entre si para promover um servico. A comunicacao entre grupos pode ser implementada utilizando-se multicast, broadcast ou unicast. Este artigo apresenta um estudo mais detalhado sobre o JGroups, uma plataforma con vel a de comunicacao em grupo e o JDraw que e um aplicativo que se utiliza dos servicos oferecidos pelo JGroup. Palavras Chave: Comunicacao em Grupo, JGroups, JDraw.

1. Introducao
Entre sistemas distribudos organizar a interacao entre cada computador e essencial. A falta de informacao ou a transmiss o de uma mensagem errada pode provocar a queda do a sistema ou at mesmo da rede. e Para que os processos em um sistema distribudo cooperem para a realizacao de um servico, eles precisam trocar informacoes. A comunicacao permite a troca de informacoes entre os processos. Na maioria das vezes, a comunicacao entre processos requer sincronizacao para controlar a diferenca de velocidade existente entre os proces sos. Essa sincronizacao e vista como uma solucao para ordenar os eventos em um sistema distribudo j que n o existe rel gio global. Para ser feita essa sincronizacao e utilizado a a a o troca de mensagens. Uma comunicacao e classicada como con vel quando uma mensagem que e a enviada por um nodo chega ao outro nodo sem ser corrompida e a ordem de envio e preservada. Existem ainda algumas aplicacoes que necessitam que as mensagens sejam enviadas para mais de um nodo ao mesmo tempo, ou seja, ponto-a-multiponto. Esse tipo de comunicacao pode ser feito de duas maneiras: por difus o ou broadcast ou ent o por a a difus o em grupo ou multicast. Como iremos estudar sobre o JGroups que e um sistema a de comunicacao em grupo iremos dar mais enfase nesse tipo de comunicacao. A difus o em grupo e uma abstracao que pode ser denida como um conjunto de a processos que cooperam para realizar um servico distribudo e interagem atrav s de um e processo de comunicacao. Cada grupo possui um nome e um endereco para identic -lo. a

Existem dois tipos de grupos: Grupos fechados e Grupos abertos. Nos grupos fechados somente os membros do grupo podem mandar mensagem entre si. Nos grupos abertos qualquer processo pode mandar mensagem para membros do grupo. A seguir iremos apresentar um exemplo de sistema de comunicacao em grupo, o JGroups, desenvolvido por Bela Ban.

2. Hist rico o
No perodo de 1998-1999, Bela Ban esteve cursando um p s-doutorado na Universidade o de Cornell, ele era membro do grupo Ken Birmans. Este grupo foi autor do paradigma de comunicacao em grupo, especialmente o modelo de sincronia virtual. Neste perodo o grupo estava trabalhando em sua terceira geracao do prot tipo de comunicacao em grupo, o chamado Ensemble. O Ensemble foi escrito em OCaml, por sua vez os seus predecessores ISIS e Horus foram implementados em linguagem C (BAN, 2006). Um estudante da universidade desenvolveu uma interface em Java para o Ensemble, que permitiu a Ban a programar em Java e ele por sua vez utilizar o Ensemble. O Java exigia que uma parte do processo Ensemble estivesse rodando na mesma m quina, a ou dentro da pr pria rede, e conectaria a ele atrav s de um t nel bidirecional. Este estuo e u dante tinha desenvolvido um protocolo para conversar com o mecanismo do Ensemble, e estendeu esta estrutura para responder ao Java (BAN; 2006). No entanto, ainda se fazia necess rio compilar e instalar o Ensemble em tempo de a execucao para diferentes plataformas, por isso o Java foi desenvolvido para oferecer total portabilidade (BAN; 2006). Foi ent o que Ban comecou a escrever um simples framework, que e conhecido a atualmente como JChannel. Este permite tratar o Ensemble como sendo apenas um transporte de comunicacao em grupo. Assim, logo o Ensemble foi substitudo por uma aplicacao Java que desempenha o mesmo papel, que e o transporte de comunicacao em grupo. Nos dias atuais e conhecida como ProtocolStack (BAN; 2006). Ban dedicou o seu tempo para o estudo e desenvolvimento de c digos do JGroup, o ao inv s de escrever e publicar artigos cientcos. Ban (2006) arma sabendo que na e vida real projetos/produtos est o usando JGroups e muito mais satisfat rio do que ter um a o papel aceito em um congresso/revista. Em meados de 2000 a SourceForge acabara de criar um site, e Ban decidiu usar para hospedar o JGroups, isso ocasionou um grande impulso para o JGroups, pois outros ` a desenvolvedores teriam acesso ao c digo do JGroups, dessa maneira o acesso a p gina e o o n mero de downloads aumentou progressivamente (BAN; 2006). u No ano de 2003 Ban comecou a trabalhar junto a JBoss com o objetivo de propor cionar a expans o do JGroups, de modo a utiliz -lo em software de clusters com desena a volvimento Java (BAN; 2006).

3. JGroups
JGroup e uma ferramenta con vel para comunicacao de grupo multicasting (n o neca a essariamente IP multicasting, JGroups tamb m pode usar o transporte como o TCP). e Processos podem-se conectar a um grupo podendo assim encaminhar mensagens para

todos os membros dele ou para apenas um deles e receber mensagens de todos os membros do grupo (ponto-a-multiponto). Sendo feita a identicacao de cada grupo pelo seu nome, estes grupos n o tem que ser necessariamente criados, assim, quando o processo a se conecta a um grupo que ainda n o existe, este ser automanticamente criado. Estes a a processos podem estar num mesmo host j seja numa mesma rede local (LAN) ou numa a rede mundial (WAN) (BAN & HAD; 2002) Na Figura 1 (BAN; 2006) apresentamos a arquitetura do JGroups.

Figura 1. Arquitetura do JGroup

Esta arquitetura e formada por 3 blocos: 1. Canal (API Channel): esta camada e usada para desenvolver aplicacoes. 2. Blocos de Construcao (Building Blocks): encontrase acima da camada de canais proporcionando um maior nvel de abstracao. 3. Pilha de Protocolos (Protocol Stack): esta camada implementa as propriedades especcas. Um canal est ligado a uma pilha de protocolo. Quando a aplicacao envia uma a mensagem, o canal passa a mensagem ao inicio (topo) da pilha de protocolo, este processa a mensagem enviando-la para o protocolo de abaixo, Assim, a mensagem e entregue a partir de protocolo para o protocolo mais baixo colocando-lo no protocolo da rede. o mesmo acontece inversamente, o protocolo de abaixo (transporte) espera por mensagem da rede, quando esta e recebida, ser entregue at a pilha de protocolo at que se atinja o a e e canal. O canal guarda a mensagem em uma la at que a aplicacao a esgote. e

Quando relizada uma conex o da aplicacao no canal, a pilha de protocolo e inia cializada, e quando a aplicacao desconecta-se a pilha e nalizada. Assim, quando o canal e fechado, a pilha ser destruda e seus recusos ser o liberados. a a 3.1. Canal Segundo Ban (2006, apud MELO, 2007) um processo deve criar um canal , para entrar em um grupo e enviar uma mensagem, informando o nome do grupo ao qual deseja conectarse. Deste modo, a pilha de protocolos procura por um grupo com o mesmo nome; se encontrado, este cliente far parte do grupo. Porem, se n o for encontrado este grupo, um a a grupo novo ser criado. a No momento da criacao de um canal, este cria-se no estado desconectado. Quando este quizer enviar ou receber uma mensagem, uma execao e disparada entrando assim em estado de conectado, podendo assim enviar e receber mensagens dos membros do grupo. Quando desconectado diretamente do estado conectado, este primeiro e desconectado e depois fechado (BAN apud MELO, 2007). Na seguinte gura s o mostrados os estados que um canal pode assumir: a

Figura 2. Estados de um canal

Um canal possui um unico endereco, este e capaz de identicar os membros do mesmo grupo, armazenando os enderecos dos membros numa lista chamada lista de vis o a (view). Assim, toda vez que um processo entra ou sai de um grupo, uma nova view e enviada a todos os seus membros. Quando um processo executado por um membro e suspeito de falha, uma mensagem e enviada para todos os membros ativos (BAN apud MELO, 2006).

3.1.1. Endereco Cada membro de um grupo possui um endereco que serve para proporcionar m todos de e comparacao e ordenacao dos mesmos para determinar se um endereco e multicasting. A interface para um endereco e a Address.

3.1.2. Mensagem Dados enviados entre membros s o enviados em forma de mensagens. De tal modo, uma a mensagen pode ser enviada por um membro para outro ou para o grupo em geral A composicao de uma mensagen possue cinco partes: Endereco de destino. Endereco de envio. Flags. Buffer. Cabecalho.

Esta mensagem e parecida com um pacote IP (dados, enedereco de origem e endereco de destino). Qualquer mensagen que colocada na rede, e roteada para a entrega ao seu destino assim como as suas r plicas ao endereco de origem. e

3.1.3. Eventos Os protocolos do JGroups conversam entre si atrav s da implementacao de eventos. Ene quanto as mensagens trafegam entre membros de um grupo da rede, eventos apenas trafegam entre as camadas da pilha.

3.1.4. Vis o a vis o, como jah foi dito, e uma lista dos membros do grupo. Consiste em indicador a (ViewId) que identica a vis o e a lista dos membros. Toda vez que um membro se a conecta, desconecta ao grupo, as vis es s o atualizadas automaticamente pela pilha de o a protocolo. Os membros de um mesmo grupo s o ordenados da mesma meneira a trav s de a e uma funcao de comparacao. Comumente o primeiro membro da lista e o coordenador encarregado de transmitir as novas vis es. Assim, quando um conjunto de membros o muda, este pode identicar ao coordenador sem a necesidade de contatar outro membro. 3.2. Blocos de Construcao Os blocos de construcao s o localizados entre o Canal e a Aplicacao. Estes blocos precis a sam de uma classe que implementam a interface transporte sem necesidade de um canal. Permitindo que trabalhem em qualquer tipo de grupo de transporte que sigue esta interface (BAN & HAT; 2002). A aplicacao, seria ent o, usar os blocos sem precissar usar os canais. Os blo a cos de construcao al m de proporcionam uma API mais sosticada, eles tamb m podem e e oferecer acesso ao canal de baixo; caso o n o oferecer determinada tarefa, o canal pode a ser acessado de uma maneira direta. Os blocos de construcao armazenan-se no pacote org.jgroups.blocks (BAN; 2002).

3.3. Pilha de Protocolos O JGroups disponibiliza duas implementacoes de canal, um canal pr prio baseado na o pilha de protocolos Java e um canal baseado no Ensemble. O primeiro e uma pilha de protocolos contendo um n mero de canal em uma lista bidirecional. u Todas as mensagens que trafegam pelo canal necessitam atravessar a pilha de protocolos. As camadas podem modicar, reordenar, pular ou acrescentar um cabecalho em uma mensagem e a camada de fragmentacao pode quebrar uma mensagem em v rias a mensagens menores, adicionando um identicador no cabecalho de cada fragmento, e reagrupar os fragmentos no lado receptor (BAN apud MELO; 2002). Uma importante caracterstica do JGroups e a disponibilidade para que o usu rio a oferecido adapte a pilha de protocolos de forma a melhor atender suas necessidades. E suporte a uma gama de protocolos (UDP (IP Multicasting), JMS, TCP, etc.), provendo, entre outras funcionalidades, fragmentacao de mensagens longas, transmiss o de men a sagens Unicasting e Multicasting de forma con vel, detec o de falhas, entre outras. O a a usu rio pode ainda elaborar e congurar os seus pr prios protocolos a o Um arquivo XML dene quais camadas ser o utilizadas e os par metros de a a conguracao para cada uma delas. Em geral n o s o necess rios conhecimentos sobre a a a a pilha de protocolos quando a aplicacao utiliza canais. Tais conhecimentos somente ser o necess rios quando se deseja denir uma pilha de protocolos personalizada para a a aplicacao (BAN, 2006). 3.4. Interfaces Algumas interfaces mais utilizadas pelo JGroups s o: a 3.4.1. Transport A interface de transporte dene pequenas funcionalidades de um canal, essencialmente, os m todos para envio e recebimento de mensagens. A implementacao de uma interface e o e portabilidade dos blocos de construcao (BAN, de transporte aumenta a generalizaca 2006). 3.4.2. MessageListener Esta interface prov m todos para os casos em que a entidade a ser noticada do recebie e mento de uma mensagem necessite chamar um m todo de retorno quando a mensagem e acabar de ser recebida (BAN, 2006). 3.4.3. MembershipListener A interface MembershipListener e parecida com a interface MessageListener. Toda vez que uma nova vis o, uma mensagem de suspeita ou um evento de bloqueio e recebido, o a m todo correspondente da classe que implementa MembershipListener e chamado (BAN, e 2006).

3.4.4. ChannelListener A interface ChannelListener disponibiliza para as classes que a implementam a possibil` idade de se registrarem a um canal e obter informacoes sobre o status e mudancas no canal. Quando um canal for fechado, aberto ou desconectado, ser invocado um m todo a e de retorno (BAN, 2006).

3.4.5. Receiver Esta interface pode ser utilizada para receber todas as mensagens relevantes e observar mudancas no push-style. 3.5. Classe de Utilidades A classe org.jgroups.util.Util prov uma gama de funcionalidades gerais para e comunicacao em grupos com JGroups. Dentre elas, est o: a objectToByteBuffer(), objectFromByteBuffer(): O primeiro m todo e frequentee mente usado para inserir, de forma serial, uma mensagem no buffer. O segundo m todo retorna a reconstrucao do objeto do buffer. e activeThreads(): retorna uma string contendo a lista de threads ativas. printMembers(): retorna uma string composta pelos enderecos dos membros de um grupo.

4. Conguracao
O JGroup pode ser encontrado na vers o bin ria e de c digo fonte. A bin ria e JGroupsa a o a 2.x.x.bin.zip, j o de c digo fonte e JGroups-2.x.x.src.zip. O JGroups bin rio est o cona o a a tidos arquivos JAR necess rios para a conguracao. Uma vez no JGroup de c digo a o fonte possui arquivos JAR e tamb m os arquivos fontes. Estas duas vers es pode e o ser utilizadas como bibliotecas para o desenvolvimento de aplicativos que utilizam do paradigma de comunicacao em grupo. O download do JGroup pode ser encontrado na URL: http://jgroup.sourceforge.net/download.html (BAN; 2009). O protocolo da camada de transporte utilizado pelo JDraw nesta conguracao foi o UDP (User Datagrama Protocol), que permite uma comunicacao r pida, por m n o a e a con vel na entrega dos pacotes. a

Figura 3. Protocolo UDP

4.1. Windows XP/Vista Para que o JGroup trabalhe na plataforma Windows, independente da vers o, se faz a necess rio primeiramente a instalacao e a conguracao do Java Development Kit (JDK), a ele pode ser encontrado no endereco: http://java.sun.com/j2se/1.4/download.html. A instalacao do JDK (BAN; 2003)n o e preciso informar algum par metro, se resume em a a NEXT e YES. A pasta padr o de instalacao ca localizada no diret rio raiz do sisa o tema, e o seu nome ser a vers o do JDK. a a Depois de instalado e preciso congurar as vari veis onde o Java ir pesquisar por a a padr o suas bibliotecas. Segundo Steil (2009)Os passos a serem seguidos s o: a a 1. Clique em Iniciar Painel de Controle Sistema; 2. Clique na aba Avancado e depois no bot o Vari veis de Ambiente; a a

Figura 4. variaveis de ambiente

3. Insira uma vari vel com o nome JAVA HOME e com o valor do endereco da pasta a do JDK;

Figura 5. Variavel JAVA HOME

4. Insira outra vari vel com o nome CLASSPATH e a .;%JAVA HOME%;<endereco do arquivo jgroups-all.jar>;

com

valor

Figura 6. Variavel CLASSPATH

5. Edite a vari vel PATH adicionando no nal do campo valor o seguinte comando: a %PATH%;%JAVA HOME%//bin;

Figura 7. Variavel PATH

Terminada esta conguracao reinicie o computador, assim o Java ir carregar as a biblioteca do JGroup no sistema. Para executar o JDraw que vem junto ao arquivo jgroupall.jar execute os seguintes passos: 1. Clique em Iniciar Executar 2. Digite cmd e clique em OK

Figura 8. Executar

3. Digite o comando javaorg.jgroups.demos.Draw e pressione ENTER

Figura 9. Comando para executar JDraw

Abrir a janela para o usu rio desenhar o que deseja enviar para o grupo, e cona a seq entemente receber o desenho do grupo u

Figura 10. Janela do JDraw

4.2. Linux A conguracao do JGroup no Linux, assim como no Windows ca dependente da instalacao do Java. O instalador do Java Development Kit (JDK) pode ser encontrado na mesma URL: http://java.sun.com/j2se/1.4/download.html. Ap s ter feito o download o do JDK, copie o instalador para a pasta /opt, utilizando o comando cp -vf <nome do arquivo> /opt no terminal. Abra o diret rio /opt executando o comando cd /opt no tero minal. Transforme o arquivo em execut vel utilizando o comando chmod +x <nome do a arquivo> no terminal, ap s este passo execute o arquivo utilizando o comando ./<nome o do arquivo>, aceite os termos de uso, e est concluda a instalacao. Crie uma pasta dentro a do diret rio /opt com o nome java executando o comando mkdir java, mova a pasta criada o pela instalacao do JDK que se encontra dentro do diret rio /opt para a pasta /opt/java, e o por m reinicie o sistema. Para fazer a conguracao do JDK de modo que possa rodar programas que neces site de bibliotecas externas, execute os seguintes comandos no terminal:

1. 2. 3. 4. 5. 6. 7. 8.

JAVA HOME=/opt/java/<pasta criada pela instalacao> export JAVA HOME PATH=$PATH:$JAVA HOME/bin export PATH CLASSPATH=$JAVA HOME/lib:<endereco do arquivo jgroups-all.jar> export CLASSPATH. MANPATH=$MANPATH:$JAVA HOME/man export MANPATH.

O JAVA HOME e o diret rio onde JDK est instalado, o PATH e o diret rio dos o a o execut veis, o CLASSPATH e o diret rio das bibliotecas que ser o utilizadas pelos proa o a gramas e o MANPATH e o diret rio onde est localizado o manual. o a A gura abaixo exemplica os comandos mencionados acima.

Figura 11. Comando de conguracao do JDK

Ap s executar estes comandos, as conguracoes das vari veis do sistema estar o o a a carregadas, com isto est nalizada a instalacao e a conguracao do JDK e suas vari veis. a a Vale ressaltar que os comandos de conguracao das vari veis conforme descritos nos a passos acima devem ser executados sempre que o sistema iniciar, para que ocorra o carregamento das mesmas. Para executar o JDraw no Linux utiliza-se o comando java org.jgroups.demos.Draw. Como o Linux j vem como padr o habilitado o a a enderecamento IPV6, o JDraw n o consegue trabalhar com a interface se esta es a tiver com os dois enderacamentos habilitados, ent o se faz uso do comando java a -Djgroups.bind addr=<endereco IPV4 da interface> org.jgroups.demos.Draw.

Figura 12. Comando do JDraw no Linux

Para criar ou participar de diferentes grupos, poder utilizar o comando java a org.jgroups.demos.Draw -groupname <nome do grupo>.

Figura 13. Comando do JDraw utilizando um grupo personalizado

Figura 14. Nome do cluster personalizado

O JDraw e aplicacao gr ca desenvolvida em Java, que utiliza dos recursos de a comunicacao em grupo do JGroups. Esta aplicacao tem como objetivo interagir o desenho de um usu rio com o desenho do grupo no qual ele pertence. a

Figura 15. Janela do JDraw no Linux

Com estes passos e comandos o JGroups est congurado e pronto para ser utia lizado, tanto como o JDraw, quanto qualquer outra aplicacao que venha a utilizar do JGroup. 4.3. Protocolo de Transporte Refere-se ao protocolo ao fundo da pilha de protocolo que e o respons vel pelo envio e a recepcaodos mensagens para a rede. Existe uma s rie de protocolos de transportes em e JGroups, aqui descreveremos os mais importantes (BAN; 2006).

4.3.1. UDP Este e um protocolo de transporte. Ele usa IP multicast para enviar mensagens para todos os membros de um grupo, ou membros individuais (datagramas UDP unicast). Quando comeca, ele abre um socket unicast e multicast: o socket unicast e usado para enviar e receber mensagens unicast, assim como, o socket multicast envia e recebe mensagens multicast. O endereco do canal ser o endereco e o n mero da porta o socket unicast a u (BAN; 2006).

4.3.2. TCP Protocolo de transporte usa TCP (TCP/IP) para enviar mensagens unicast e multicast, neste ultimo caso ele envia m ltiplas mansagens unicast (um para cada membro) (BAN; u 2006). E uma substituicao de UDP como camada inferior baseado em IP multicast caso UDP n o desejado. Este pode ser o caso quando operam numa WAN, onde descartar a a roteadores IP MCAST. Como regra base, o UDP e usado coo transporte para LANs, enquanto que TCP e usado para WANs.

5. Consideracoes Finais
Conslu-se que o JGroup e uma ferramenta muito con vel para comunicacao de grupo a multicasting. Os processos podem ingressar em um grupo e enviar ou encaminhar mensagens para um ou todos os membros do grupo assim como tamb m pode receber mene sagens de todos os membros do grupo. Esses processos podem estar no mesmo host, como por exemplo, em uma rede local ou pode estar em uma rede mundial. Foi demonstrado que a arquitetura do JGroups e basicamente formada por 3 blo cos: Canal, Blocos de Construcao e Pilha de Protocolos. A camada de canais e utilizada para o desenvolvimento de aplicacoes. A camada Bloco de Construcao encontra-se acima da camada de canais e possibilita um maior nvel de abstracao. Por m temos a camada de Pilha de Protocolos onde s o implementadas as propriedades especcas. Quando a a aplicacao deseja enviar uma mensagem o canal ca respons vel em passar essa men a sagem para o incio da pilha de protocolos que por sua vez processa a mensagem e envia para o protocolo de baixo e assim sucessivamente at chegar ao protocolo da rede. No ree cebimento de mensagens acontece o inverso a mensagem chega no protocolo mais baixo da pilha de protocolos e vai sendo processado at alcancar o canal. e O JGroups se utiliza tanto do protocolo UDP quanto do TCP e al m disso ele e ainda traz a possibilidade de voc utilizar um outro protocolo que melhor atenda as suas e necessidades ou se preferir voc pode criar o seu pr prio protocolo e o

6. Refer ncias e
BAN, Bela; JGroups tutorial, 2009. Disponvel em: <http://www.jgroups.org/tutorial/html single/index.html>. Acessado em 17 de junho de 2009. Ban, Bela; Reliable Multicasting with the JGroups Toolkit, 2006. Revision 1.12. Disponvel em <http://www.jgroups.org/manual/pdf/manual.pdf>. Acesso em: 18 de junho de 2009. MELO Silva, Alex de. Desenvolvimento de um weaver din mico distribudo a baseado em comunicacao de grupo. Ponticia Univesidade Cat lica de Minas Gerais. o 2007. AMBROSIO S., Hugo Vinicius, JGroups, Universidade Estadual de Rio de Janeiro, 2006. Disponvel em <http://www.ime.uerj.br/alexszt/cursos/topesp inter/trabs/061/g05/JGroups.ppt> Acesso em 22 junho de 2009. STEIL, Rafael; Classpath, entendendo o que e e para que serve, 2003. Disponivel em: <http://www.guj.com.br/article.show.logic?id=108>; Acesso em 16 de junho de 2009. STEIL, Rafael; Instalando e congurando o JDK no Windows, 2003. Disponivel em: <http://www.guj.com.br/article.show.logic?id=12>, Acessado em 16 de junho de 2009.

Potrebbero piacerti anche