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
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
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).
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.
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.
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
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.