Você está na página 1de 4

Chat de Arquitetura Hibrida - Cliente/Servidor e P2P

David Endrew, Eneias Monteiro, Fabrcio Almeida, Leidiane Lima


Universidade Federal do Oste do Para - UFOPA, Santarem, PA, Brasil
Instituto de Engenharia e Geociencia - IEG
Programa de Computaca o, Sistemas Distribuidos
david-andrew@hotmail.com, fabricio30@hotmail.com, eneiasm@hotmail.com, leidiane@hotmail.com

ResumoEste trabalho apresenta a implementaca o de um chat


em java. Essa aplicaca o busca apresentar conceitos de Sistemas
Distribudos - SDs, como arquitetura do sistema foi utilizado o
modelo hbrido (uma combinaca o da arquitetura peer-to-peer
com a cliente/servidor) e Invocaca o de Metodos Remotos -RMI
para a implementaca o da comunicaca o entre os usuarios.

1. Introduca o
A manipulaca o de um grande volume de dados na rede
mundial de computadores, e os avancos de pesquisas nos
paradigmas de distribuica o e disponibilizaca o de recursos e
informaco es via internet sao campos de estudos que envolvem a tematica dos Sistemas Distribudos (SDs).
Segundo [2] um sistema distribudo e aquele no qual os
componentes de hardware ou software, localizados em computadores interligados em rede se comunicam e coordenam
suas aco es apenas passando mensagens. Esses componentes
nao precisam, necessariamente, estar no mesmo local.
A utilizaca o desses recursos resulta no estudo e
implementaca o de metas de projetos de Sistemas Distribudos, metas essas que tambem deixam transparentes
aos usuarios a divisao do programa, em diversas partes
planejadas, para balanceamento de carga, processamento,
armazenamento de sistemas distribudos, dando a impressao
de ser um programa so. Caractersticas essas que entram
em conformidade com [1], que afirma que um sistema
fortemente distribudo e capaz de se apresentar a usuarios e
aplicaco es como se fosse um u nico sistema.
Outra parte importante, para o desenvolvimento de
aplicaco es que adotem as caractersticas de sistemas distribudos, e a forma como as partes da aplicaca o se comunicam e como e que a arquitetura do sistema esta definida,
pois elas ajudam a projetar quais e como as tecnologias se
comunicarao e funcionarao. Em relaca o a arquitetura podese citar a arquitetura cliente/servidor, a peer-to-peer e a
hbrida (composta pelas duas anteriores) ja, em relaca o a
comunicaca o.
Diante desses conceitos que cercam os sistemas distribudos e que, atualmente, sao fortemente necessarios
para o desenvolvimento de aplicaco es de cunho mais complexo, o trabalho busca desenvolver uma aplicaca o com
tais caractersticas. Nesse caso, apresenta-se neste trabalho, a implementaca o de um chat de arquitetura hbrida e

utilizando Invocaca o de Metodos Remotos- (RMI) para a


implementaca o da comunicaca o entre os usuarios.

2. Trabalhos Relacionados
Ao pesquisar sobre trabalhos relacionados foram identificados artigos como Desenvolvimento De Um Sistema
Distribudo Utilizando Socket que demonstra o desenvolvimento de uma aplicaca o distribuda de Chat, com base
na arquitetura Cliente-Servidor, utilizando a linguagem de
programaca o Java. [3]
O artigo BUBBLE CHAT sera de grande contribuica o
para a elaboraca o deste projeto. O BUBLE CHAT e um
prototipo que tem como objetivo demonstrar o desenvolvimento de uma aplicaca o distribuda com base na arquitetura Cliente/Servidor, visto que a utilizaca o de aplicaco es
distribudas vem crescendo com o tempo e a necessidade
de processamento mais rapido e eficiente, contribuiu para
o crescimento dos sistemas distribudos como uma ferramenta muito importante nos processos de comunicaca o,
sincronizaca o de dados [4].
Numa terceira abordagem podemos citar o artigo
Exemplos praticos do uso de RMI em sistemas distribudos que explora exemplos de programas que utilizem
a estrutura RMI (Remote Method Invocation). Para isso,
serao abordados dois exemplos praticos distribudos: um
chat e uma calculadora, tracando-se um paralelo entre suas
implementaco es sockets e RMI na linguagem Java. (RODRIGUES et al, 2009) [5].
An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol - Este artigo tem como objetivo identificar
o funcionamento do cliente para VoIP Skype, descrevendo
o processo de autenticaca o, a transferencia de arquivos de
mdia, o estabelecimento da chamada, CODECs etc, alem
do comportamento desta ferramenta quando executado em
redes com NAT e/ou firewall. O Skype e um cliente de
VoIP, desenvolvido pelo KaZaa, esta relacionado ao trabalho aqui descrito pois e uma aplicaca o que atua sobre
uma rede sobreposta ponto-a-ponto e possui dois tipos de
nos: nos comuns (ordinary host) e SN (Super Nodes). Os
nos comuns representam aplicaco es Skype que podem estar
estabelecendo ligaco es telefonicas ou enviando mensagens
de texto; ja os SNs atuam como ponto de conexao da rede
Skype, alem de executarem as mesmas aplicaco es que os

nos comuns. Nos comuns conectados a` Internet atraves de


IPs publicos e que disponham de recursos de processamento,
memoria e rede disponveis sao candidatos a SNs. O processo de autenticaca o ocorre entre os nos da rede Skype e
um conjunto de servidores especficos, denominados Skype
Login Server. A figura 1 descreve esse ambiente. Os autores
acreditam que os nos Skype usam uma variaca o do protocolo STUN (Simple Traversal of User Datagram Protocol
Through Network Address Translators RFC 3489) com
intuito de determinar o tipo de NAT ou de firewall que possa
estar entre o cliente Skype e a Internet [6].
Desenvolvendo aplicaco es peer-to-peer em JAVA com
JXTA - A aplicaca o de chat desenvolvida neste estudo,
demonstra os recursos da plataforma JXTA, alem das principais APIs java utilizadas para construca o de aplicativos
P2P. O funcionamento da aplicaca o e baseado no envio de
mensagens simples de texto para todos os participantes do
chat, e contem uma a rea que possibilita a exibica o das novas
mensagens enviadas. A arquitetura de comunicaca o utilizada
e P2P, totalmente descentralizada, sem a necessidade de um
servidor central que replique as mensagens para todos os
participantes do chat. Qualquer novo usuario que realizar
o login na aplicaca o de chat, tera sua entrada notificada
para os outros participantes atraves da publicaca o de um
advertisement, definido especificamente para esta aplicaca o.
A descoberta de novos usuarios, bem como a verificaca o
se todos os participantes do chat ainda estao disponveis,
e feita periodicamente por cada programa cliente. O envio
de mensagens so e possvel para todos os participantes do
chat, nao sendo possvel o envio de mensagens reservadas
nem direcionadas apenas para um usuario.[Incluir numero
da citaca o]
Estes artigos acima citados demonstram resultados de
implementaca o de aplicaco es distribudas, onde pode-se
identificar a melhor forma de desenvolvimento e utilizandoas como sugestoes para os problemas que surgirao.

3. Referencial Teorico
Para o desenvolvimento da aplicaca o em questao (o
chat) foi necessario o entendimento de alguns conceitos
relacionados a comunicaca o e arquitetura para sistemas distribudos. Como arquitetura, utilizou-se o modelo hbrido,
composto pela arquitetura cliente/servidor e a peer-to-peer
(Tanenbaum 2007 p.31) [1]. E, para a comunicaca o entre
cliente e o servidor e cliente e cliente (P2P) o trabalho utiliza
a tecnologia RMI ( Remote Method Invocation).

Figura 1. Comunicaca o entre cliente e servidor (Tanenbaum 2007, p. 22 ).

Figura 2. Modelo de arquitetura P2P.

esse processo de distribuica o. Segundo [1], essas arquiteturas de software nos dizem como varios componentes de
software devem ser organizados e como devem interagir.
Como ja argumentado acima, o modelo arquitetural
utilizado neste projeto foi o padrao hbrido. Uma forma
de organizar arquiteturas centralizadas (cliente/servidor) e
descentralizadas (P2P) juntas.
3.1.1. Cliente/Servidor. A arquitetura cliente/servidor trabalha, basicamente, com dois componentes da aplicaca o.
Uma aplicaca o servidora que e responsavel por receber e
responder solicitaco es. E uma aplicaca o cliente que realiza
requisico es da aplicaca o servidora. A figura 1, apresenta os
processos de comunicaca o entre um cliente e um servidor
(requisica o e resposta).

3.1. Arquitetura

3.1.2. Peer-to-Peer. A arquitetura Peer-to-Peer se diferencia da arquitetura cliente/servidor porque nesta, os dois
nos (maquinas) que estao se comunicando exercem funca o
de cliente e de servidor. De acordo com [2], em uma
aplicaca o P2P todos os processos envolvidos em uma tarefa
ou atividade desempenham funco es semelhantes interagindo
cooperativamente com os pares (peers), sem distinca o entre
processos clientes e servidores, nem entre os computadores
em que estao sendo executados.

Um dos maiores desafios para o desenvolvimento de


sistemas distribudos e a organizaca o das funcionalidades
que, por caracterstica desses sistemas, estao localizadas
em maquinas diferentes. Para organizar diversas partes da
aplicaca o e necessario uma organizaca o arquitetural bem
precisa para que os componentes de softwares possam conversar de maneira eficiente e transparecer ao usuario todo

3.1.3. Arquitetura Hibrida. Na aplicaca o proposta e feita


uma associaca o das duas arquiteturas ja citadas, como mostra a figura 3. Sao aplicadas as duas formas de arquitetura
para que a aplicaca o consiga cumprir com os objetivos.
Nesse caso, cada no precisa realizar requisico es ao servidor para autenticaca o, o que e caracterstico do padrao
cliente/servidor. Uma vez registrado, cada no pode enviar

Figura 5. Componentes do chat.

Figura 3. Modelo de arquitetura hbrida.

Figura 4. Funcionamento do RMI.

e receber requisico es diretamente (desde que o outro no


tambem tenha sido registrado), funcionando de modo P2P.

3.2. Comunicaca o

4. Implementaca o do sistema
O sistema foi desenvolvido com o uso da tecnologia
Java, para a implementaca o da logica interna, e Java RMI,
para implementaca o da comunicaca o entre os componentes.
Ele e composto por dois componentes servidor e cliente, a
figura 5 mostra as partes do sistema e rotas de comuncaca o.
O sistema utiliza uma combinaca o das arquiteturas
cliente-servidor e peer-to-peer. Onde o programa servidor
e responsavel pelo gerenciamento e armazenamento de
informaco es dos usuarios e o programa cliente e responsavel
por executar chamadas de servicos do servidor e gerenciar a
conexao com outras aplicaco es clientes. De forma simplificada o sistema se comporta da seguinte maneira: o servidor
inicia a execuca o e espera conexoes de clientes, esses por
sua vez fazem requisico es de servicos tais como se cadastrar,
buscar clientes online e definir status (online ou offline),
todos esses servicos sao definidos como funco es na interface
remota do servidor.

4.1. Componentes do Sistema


Para a implementar a comunicaca o entre os processos
na aplicaca o (chat) foi utilizado o modelo de programaca o
baseada em objetos. Segundo [1], o modelo da programaca o
baseada em objetos permite que objetos de diferentes processos possam se comunicar por intermedio da invocaca o
de metodos remotos (RMI, Remote Method Invocation). A
RMI e uma extensao da invocaca o de metodo local que
permite a um objeto que esta em um processo invocar os
metodos de um objeto que esta em outro processo.
3.2.1. Remote Method Invocation - RMI. A tecnologia
RMI permite que objetos java se comuniquem atraves de
aplicaco es distribudas orientados a` objetos.
Geralmente uma aplicaca o que utiliza invocaca o de
metodos remotos esta dividida em duas partes: a parte servidora e a cliente. O servidor disponibiliza servicos para serem
acessados remotamente e o clientes utilizam os metodos que
estiverem precisando.
Com essa forma de trabalhar o RMI consegue fazer com
que varias maquinas java localizadas em locais diferentes se
comuniquem sem qualquer problema.

Nesta seca o sao definidos os componentes do chat e suas


funco es.
4.1.1. Servidor. Implementa o programa que armazena a
lista de clientes onlines, direciona a comunicaca o entre
clientes e armazena as tabelas de clientes cadastrados no
sistema. Sua execuca o se da da seguinte maneira:
O servidor inicia sua execuca o e espera por requisico es
de servicos, assim que recebe um requisica o ele executa
a tarefa e retorna o resultado para o programa cliente. As
opco es de servicos sao:

Cadastrar o cliente enviar suas informaco es tais


como nome, senha, nickname, telefone e e-mail, o
sevidor entao armazena esses dados em um banco
de dados e retorna uma confirmaca o se o cadastro
foi executado com sucesso.
Buscar clientes online o servidor retorna a lista de
usuarios online. Caso a tarefa seja executada com
sucesso a lista contendo o ip de todos os clientes
onlines e retornada. A lista de cliente onlines contem

Figura 7. Diagrama de classe da aplicaca o cliente.

Figura 6. Diagrama de classe do servidor.

o endereco ip desses clientes e e enderecada pelo


nickname do usuario.
Definir status O servidor adiciona o cliente na lista
de usuarios online e o programa cliente se disponibiliza para receber mensagens de outros usuario.

4.1.2. Cliente. Implementa o programa que e utilizado pelo


usuario final para fazer requisico es ao servidor para se cadastrar, buscar clientes online ou se disponibilizar para receber requisico es (define status online), tambem e responsavel
por gerenciar as comunicaco es com outras aplicaco es clientes. Possui uma interface remota que e usada para troca
de mensagens entre usuarios, essa interface possui um u nica
funca o: enviar mensagem que envia um texto a outro cliente.

4.2. Construca o da redes sobreposta peer-to-peer


A rede sobreposta e construda na tabela de usuarios
online, ao qual contem o endereco ip de todos os clientes
participantes da rede P2P. Um cliente e adicionado na rede
assim que se disponibiliza para receber requisico es, isso
acontece na invocaca o do metodo remoto para definir status
do servidor. Um cliente e retirado da rede de mesmo modo,
nesse caso o servidor apenas o remove da lista de usuarios
online.

5. Resultados
O desenvolvimento do sistema foi realizado com base
nos conceito definidos no referencial teorico, RMI para
troca de informaco es entre cliente e servidor e clientecliente e arquitetura hibrida para que se tenha um maior
aproveitamento dos recursos na rede P2P.
As figura 6 e 7 mostram os diagramas de classe para
a aplicaca o servidora e cliente, respectivamente. Na figura
6 e possvel observar que o programa servidor e composto
por uma interface (remota) que define os metodos que sao
utilizados pelos clientes, uma classe que implementa essa
interface e uma classe que armazena os dados dos usuarios.
A figura 7 mostra elementos que compoes a aplicaca o
cliente, estes sao: a interface do servidor, utilizada para a
comunicaca o com o servidor, a classe que implementa o
programa cliente, a interface (remota) que contem os metodo

utilizado para troca de mensagens entre clientes e a classe


que implementa essa interface.
Na execuca o do sistema, assim que um cliente e incluindo na tabela de cliente online este recebe a lista contendo os ips de usuario online e com isso ele pode trocar
mensagens diretamente com outros usuario, nao necessitando assim que a comunicaca o passe por um elemento intermediador (servidor), o que e possvel devido a arquitetura
hibrida do sistema.
A figura [incluir numero da figura] mostra o processo
de comunicaca o entre cliente-servidor e cliente-cliente. Em
nossa implementaca o a comunicaca o entre cliente e servidor
ocorre somente durante o processo de login e na requisica o
de usuarios online. No restante de execuca o do sistema
toda a comunicaca o e executada diretamente de cliente para
cliente.

Referencias
[1] A. S. Tanenbaum e M. V. Steen, Sistemas Distribudos: Princpios e
Paradigmas, 2nd. ed. Sao Paulo: Pearson Pretice Hall, 2007.
[2] G. Coulouris, J. Dollimore e T. Kindberg, Sistemas Distribudos:
Conceitos e Projeto, 4 ed. Porto Alegre: Bookman, 2007.
[3] R. S. T. Santana et al, DESENVOLVIMENTO DE UM SISTEMA
DISTRIBUIDO UTILIZANDO SOCKET, Apresentado no 80 Forum
de Ensino, Pesquisa, Extensao e Gestao. [Online]. Disponvel em:
http://www.fepeg2014.unimontes.br/sites/default/files/rsumos/arquivo
pdf anais/desenvolvimeto de um sistema distribuido utilizando
socket.pdf
[4] A. G. S. Alves et al, BUBBLE CHAT: UM SISTEMA DISTRIBUIDO

DE COMUNICACAO
USANDO SOCKETS EM UMA
ARQUITETURA CLIENTE-SERVIDOR, Apresentado no 90 Forum
de Ensino, Pesquisa, Extensao e Gestao. [Online]. Disponvel em:
http://www.fepeg.unimontes.br/sites/default/files/resumos/arquivo
pdf anais/bubble chat um sistema distribuido de comunicacao
usando sockets em uma arquitetura cliente-servidor.pdf
[5] E. M. Rodrigues et al, Exemplos praticos do uso de RMI em sistemas
distribudos, Disponvel em: http://www.protrilha.com/etapasCamp/
2009 9.pdf. Acesso em 15 de setembro de 2015.
[6] S. A. Baset e H. Schulzrinne, An Analysis of the Skype Peer-to-Peer
Internet Telephony Protocol Disponvel em: http://www2.ic.uff.
br/eoliveira/Disciplinas D.Sc/Redes MM/Skype04 Resumo.pdf.
Acesso em 15 de setembro de 2015.
[7] K. Vekaria e C. Clack,Selective Crossover em Algoritmos Geneticos:
Um estudo Emprico, (Eds.): PPSN V, LNCS 1498, pp. 438-447,
1998.