Sei sulla pagina 1di 8

III CONGRESO INTERNACIONAL

DE

COMPUTACIN

TELECOMUNICACIONES

Desenvolvimento de um sistema distribudo em sala de aula de forma colaborativa


Katia de Paiva Lopes1, Sandro Renato Dias2 Universidade Federal do Paran, Departamento de Bioinformtica Curitiba - PR, Brasil 2 Faculdade Anhanguera de Belo Horizonte, Departamento de Sistemas de Informao Belo Horizonte - MG, Brasil katiaplopes@gmail.com, sandro.dias@aedu.com
1

Resumo
Este artigo apresenta um modelo de sistema distribudo (SD) para ser utilizadas de forma didtica em disciplinas de Sistemas Distribudos, Redes de Computadores ou Sistemas Operacionais. Foi desenvolvido em sala de aula um sistema visando dividir uma tarefa entre vrios computadores a fim de termin-la mais rapidamente, de forma distribuda. Para a caracterizao e fixao dos conceitos de sistemas distribudos, a turma foi dividida em grupos que se responsabilizaram por desenvolver cada mdulo referente quela caracterstica do SD. Este trabalho apresenta o sistema desenvolvido bem como a metodologia utilizada para o seu desenvolvimento, de forma colaborativa. Os tpicos abordados no sistema so tolerncia a falhas, escalabilidade, armazenamento distribudo, dentre outros. Como resultado, foi possvel obter um sistema distribudo completo, modularizado e que permite que esses mdulos sejam utilizados em outras aplicaes. Palavras chave: Sistema distribudo, cdigo, SGBD,

Abstract
This paper presents a distributed system (DS) model that can be used as an didactic exercise in Distributed Systems, Computer Networks or Operating Systems classes. It was developed in the classroom a system to divide a task among several computers in order to finish it more quickly, in a distributed way. For distributed systems concepts characterization and determination, the class was divided into groups that were designed to develop each module related to one characteristic of DS. This paper presents the system developed and the methodology used for its development in a collaborative way. The topics covered in the system are fault tolerance, scalability, distributed storage, among others. As a result, it was possible to achieve a complete distributed system, modularized in a way that these modules can be used in other applications. Keywords: Distributed system, code, DBMS.

1. Introduo
Um sistema distribudo definido como Um sistema em que componentes de hardware e software localizados em computadores em rede se comunicam e coordenam suas aes por passagem de mensagens (COULOURIS et al. 2001). Por meio deles possvel a comunicao entre servidor e cliente, integrao de sistemas diversos, difuso de contedos, entre outras aplicaes (FERRAZ, 2002). "Um Sistema distribudo composto por um conjunto de processos, interconectados atravs de uma rede de comunicao, que realizam um processamento distribudo baseado exclusivamente na troca de mensagens. Os processos so distribudos individualmente em diferentes computadores, com diversas capacidades de processamento. (BULIGON et al. 2004). Tambm definido como () um conjunto de computadores independentes entre si
1

III CONGRESO INTERNACIONAL

DE

COMPUTACIN

TELECOMUNICACIONES

que se apresenta a seus usurios como um sistema nico e coerente (TANEMBAUM e VAN STEEN, 2002). Sistema Distribudo utilizado principalmente pela busca por maior desempenho, alto custo de supercomputadores, desenvolvimento de redes de computadores de alta velocidade, desenvolvimento tecnolgico na construo de microprocessadores e para aplicaes intrinsecamente paralelas (GPACP, 2011). utilizado em diversas situaes, dentre elas: Processamento e sobreposio de imagens, comparao de arquivos, alm de pesquisas na rea de biologia molecular, por exemplo, que envolvem elevado custo de processamento: montagem de genoma, anlise protemica ou mesmo alinhamento de sequncias de DNA. Portanto, foi desenvolvido em sala de aula, um sistema visando dividir uma tarefa entre vrios computadores a fim de termin-la mais rapidamente, de forma distribuda. Para a caracterizao e fixao dos conceitos de sistemas distribudos, a turma foi dividida em grupos que se responsabilizaram por desenvolver cada mdulo referente quela caracterstica do sistema. Como resultado, foi possvel obter um sistema distribudo completo, modularizado e que permite que esses mdulos sejam utilizados em outras aplicaes. Este artigo est organizado da seguinte maneira: Na seo 2 so apresentados trabalhos relacionados. Nas sees 3 e 4 descrita a metodologia de desenvolvimento realizada, como os grupos foram organizados e quais tarefas deveriam ser concludas. Em seguida, nas sees 5 e 6 (Resultados e Concluso), este artigo aborda os detalhes que fizeram esse trabalho ser possvel de ser desenvolvido em sala de aula de maneira colaborativa.

2. Trabalhos relacionados
Um grande projeto em sistemas distribudos desenvolvido de forma colaborativa o SIGAEPT, sistema integrado de gesto acadmica desenvolvido com tecnologias livres por vrias instituies federais no Brasil. O SIGA-EPT automatiza a gesto dos processos institucionais acadmicos atravs do SIGA-EDU (Ensino, Pesquisa e Extenso) e administrativos (Protocolo, Recursos Humanos, Almoxarifado, Compras, Patrimnio etc.) atravs do SIGAADM. Atualmente, desenvolvido pelo GSORT Grupo de Sistemas Distribudos: Otimizao, redes e tempo-real formado por pesquisadores/professores do Instituto Federal de Educao, Cincia e Tecnologia da Bahia (IFBA) (GSORT, 2011). Na literatura, encontra-se diversas aplicaes para sistemas distribudos, e dessa forma, vrias aplicaes tm sido desenvolvidas com interesse em ganho de performance, paralelizao da informao e diviso de tarefas. Portanto, o desenvolvimento de um sistema distribudo em sala de aula de maneira colaborativa tem embasamento terico e vivel, como ser descrito nos itens Metodologia e Desenvolvimento.

3. Metodologia
O objetivo inicial desse trabalho implementar um sistema distribudo visando dividir uma tarefa simples com vrias mquinas a fim de termin-la mais rapidamente. Para tanto, definiuse que a tarefa ser comparar um arquivo com vrios outros, por exemplo, 100.000 arquivos. Esta tarefa ser dividida com os variados computadores que se disponibilizarem a resolv-la, assim, os alunos tambm foram divididos em grupos e para cada um destes foi especificado uma funcionalidade a ser implementada, descritas no item 3.1. Os arquivos a serem comparados foram retirados do banco de dados de estrutura de protenas Protein Data Bank (PDB) que se encontra disponvel no seguinte endereo eletrnico: http://www.pdb.org/pdb/home/home.do (BERMAN, 2009). Atualmente, ele possui 74601 arquivos que contm informaes tridimensionais (3D) de estruturas de protenas, cidos nuclicos e conjuntos complexos, estrutura preliminar e secundria das protenas, bem
2

III CONGRESO INTERNACIONAL

DE

COMPUTACIN

TELECOMUNICACIONES

como ngulos e distncias entre os tomos. Esses dados so armazenados em um conjunto de arquivos contendo uma nomenclatura padronizada, chamados de flat files e so bem organizados, de forma que o pesquisador possa retirar as informaes necessrias. 3.1. Funcionalidades implementadas Aplicao local - Diviso em threads: Este grupo ficou responsvel por implementar a diviso da tarefa em threads no cliente, consistindo na verificao da quantidade de processadores existentes no hardware (cat /proc/cpuinfo | grep model c) e a ativao de processos filhos, caso a quantidade seja superior a 1. Implementao dos cdigos da aplicao que rodar no cliente, executando a funo de comparao dos arquivos (diff arq1 arq2 > arq3) onde o arq1 o arquivo informado pelo servidor e arq2 cada um dos arquivos que fazem parte da base de dados. Comunicao: Este grupo ficou responsvel por implementar uma funo de comunicao entre os dois mdulos (cliente e servidor) de forma que possa ser utilizado pelos outros mdulos como uma chamada de funo. Diviso entre ns: Grupo responsvel por implementar a diviso da tarefa geral entre as mquinas. Basicamente, uma lista de arquivos a serem comparados e uma lista de mquinas disponveis. O grupo dever gerenciar quais mquinas receberam a comunicao para o processamento e quais j responderam. Armazenamento: Ao se responder ao servidor, o processo do cliente informa ao processo do servidor, que houve a finalizao do processamento e envia o arquivo com o resultado do processamento em formato tar.gz (tar cf arquivo.tar diretrio/*; gzip arquivo.tar). Tolerncia a falhas da aplicao: Grupo responsvel por implementar a funcionalidade de manter a aplicao tolerante a falha (assumindo, inicialmente que o servidor muito robusto e, no morre nunca). Para tanto, ser necessrio monitorar (ou temporizar) cada envio de tarefa para verificar se a mquina parou de processar, assim, a tarefa j enviada a uma mquina volta a ficar disponvel para ser enviada a outra mquina. Escalabilidade: Este grupo ficar responsvel por implementar a escalabilidade do sistema, ou seja, a cada nova mquina que se adiciona rede, a mquina envia uma mensagem ao servidor informando da sua disponibilidade para processar. O servidor, portanto, envia a tarefa para a mquina (nome do arquivo a ser comparado com os demais). Tolerncia a falhas no cliente: Grupo responsvel por implementar a tolerncia a falhas no cliente. Se o cliente morre, ou desliga-se sozinho, ao ser reiniciado, a aplicao verificar se h alguma tarefa em processamento, se houver, retoma o processamento e avisa ao servidor quando do trmino do processamento e o resultado encontrado.

4. Desenvolvimento
O cdigo foi desenvolvido na linguagem PHP para ambiente Linux por ser Open Source, apresentar suporte para diversos sistemas de base de dados e aumentar a curva de aprendizado dos alunos em sala de aula. Posteriormente, o Sistema de Gerenciamento de Banco de Dados (SGBD) utilizado foi o MySQL. Segue abaixo, a descrio do desenvolvimento do sistema por mdulo. 4.1. Diviso em threads e entre ns Para controlar a diviso de atividades em threads participantes do sistema, a tcnica utilizada foi a adoo de uma lista de utilizao da CPU (Unidade central de processamento, em portugus) Cada terminal envia uma mensagem informando a sua disponibilidade para
3

III CONGRESO INTERNACIONAL

DE

COMPUTACIN

TELECOMUNICACIONES

execuo de uma tarefa. Esta mensagem ir conter o endereo IP da estao disponvel e ser registrada em um arquivo de log. A partir da leitura deste arquivo log, as atividades sero transmitidas estao para execuo. O grupo de diviso entre ns optou por dois arquivos de cdigos, um para o servidor e outro para o cliente. No que se trata do cdigo na mquina do cliente, ele usado apenas para indicar que o cliente est pronto para o envio do pacote a ser tratado. O cdigo do servidor faz os processos de registro de informaes de IPs de cliente ou pacotes, alm do arquivo de log com registro de cliente, data e hora de envio da tarefa. Funes especficas do PHP foram utilizadas para essa aplicao como: socket_create, socket_bind, socket_listen, socket_accept, socket_read, socket_sendto e socket_close. A figura 1 mostra um exemplo de cdigo implementado de diviso entre ns para o Cliente.

// Inicia a escuta de novas conexes

Figura 1: Cdigo de diviso entre ns: Cliente.

4.2. Comunicao A comunicao foi implementada de maneira simples onde o cliente conecta ao servidor, envia uma solicitao e recebe do servidor uma resposta por meio de mensagens. A principal caracterstica da arquitetura cliente/servidor a alocao de tarefas no nvel de aplicao, assim, necessrio que o servidor e o cliente compartilhem os mesmos protocolos de comunicao. O mdulo de comunicao atravs de troca de mensagem entre o cliente e servidor foi de suma importncia para o sistema como um todo. Atravs da programao distribuda e da separao das aplicaes entre clientes e servidores, foi possvel realizar as trocas de mensagens por meio de uma rede de computadores. Entre as vantagens citadas para o modelo de programao cliente-servidor destacam-se: Estruturao do processamento distribudo baseado no conceito de servios, atravs do modelo Servidor (provedor de servios) e Cliente (consumidor de servios). Permitir compartilhamento de recurso. Exemplo: um Servidor pode atender a vrios clientes.
4

III CONGRESO INTERNACIONAL


DE

COMPUTACIN

TELECOMUNICACIONES

Permitir a comunicao atravs da troca de mensagens, com mensagens para solicitaes (cliente para servidor) e respostas (servidor para cliente). Encapsulamento de servios. Cliente no precisa saber como servidor implementa o servio, mas apenas a interface para solicitao e resposta funciona com vrios clientes diferentes com capacidades diferentes. A forma abordada no trabalho foi atravs de um protocolo de transporte orientado conexo em que o cliente estabelece uma conexo com o servidor e ambos trocam mltiplas mensagens de tamanhos variados, sendo a aplicao do cliente quem termina a sesso.

4.3. Armazenamento Grupo responsvel por backup e armazenamento dos arquivos ao fim do processamento das tarefas, que nesse caso, o arquivo final da comparao entre os arquivos do PDB. 4.4. Tolerncia a falhas da aplicao e do cliente, incluindo disponibilidade do servidor Foi desenvolvida uma funo que permite verificar a disponibilidade das mquinas e a tolerncia a falhas. Objetivo: reduzir inconvenientes gerados por inconsistncia dos sistemas. A funo consiste em verificar pelo IP se a mquina responde s solicitaes enviadas, por meio de IP e porta especificada. Quando a mquina est inacessvel enviada uma mensagem para o servidor para que ele encaminhe a tarefa pendente para outra mquina. 4.5. Escalabilidade Paralelamente, foi desenvolvida a funcionalidade de gerao de logs para gerenciamento das mensagens enviadas entre cliente e servidor. O log armazena data e horrio com seguintes informaes: (1) Mquinas que entram no sistema; (2) Mquinas que saem do sistema; (3) Mquinas que executam tarefas e (4) Falhas de execuo. A figura 2 ilustra o processo.

Figura 2. Processo de gerao de log de um sistema distribudo. Adaptado de: ocybernauta.com

A figura 3 mostra a funo de gerar relatrio que parte do cdigo desenvolvido para gerao de log.

III CONGRESO INTERNACIONAL

DE

COMPUTACIN

TELECOMUNICACIONES

Figura 3. Funo para gerar relatrio desenvolvida em PHP.

Assim, essa funcionalidade foi concluda e pode ser utilizada no s com o sistema desenvolvido em sala, mas em outros sistemas cujo objetivo seja a gerao de logs para gerenciamento de mensagens entre cliente e servidor. Importante ressaltar, que o trabalho foi dividido de forma a permitir implementaes independentes, mas que pudessem ser integradas posteriormente para montar o sistema distribudo. Dessa forma, os grupos de alunos podem desenvolver uma funcionalidade e test-la independente das outras em desenvolvimento. Como exemplo, segue abaixo testes realizados com a funo de gerar relatrios. Para teste foi implementado uma funo que se conecta ao banco de dados e insere id, data, ip, tipo, tarefa para registrar qual mquina e qual ao foi executada, como demonstra a figura 4.

Figura 4. Funo de teste para gerar relatrio.

Como resultado, foi possvel gerar um relatrio com as tarefas realizadas entre mquina e o servidor para melhor gerenciamento do sistema e pode ser visualizado via browser (Figura 5). Como principal caracterstica de um sistema distribudo, esse mdulo registra as mensagens trocadas entre cliente e servidor, com base em comunicao, escalabilidade e armazenamento com intuito de contribuir para tolerncia a falha do sistema informando as falhas de execuo.

III CONGRESO INTERNACIONAL

DE

COMPUTACIN

TELECOMUNICACIONES

Figura 5. Teste de gerao de relatrio.

5. Resultados e discusso
A principal motivao para o desenvolvimento de um sistema distribudo em sala de aula foi para apresentao dos conceitos dessa disciplina aos alunos. A aplicao de tcnicas aprendidas relativas a Sistemas Distribudos e Computao Paralela torna o conhecimento adquirido em produto. Ao final da disciplina, os cdigos desenvolvidos foram disponibilizados a todos os alunos, e cada grupo ficou responsvel por apresentar um artigo do desenvolvimento do trabalho. Dessa maneira, os mdulos puderam ser integrados e os alunos puderam compreender de maneira eficaz os conceitos ensinados anteriormente. O fato das implementaes independentes, mas que pudessem ser integradas posteriormente para montar o sistema distribudo, tambm foi um ponto interessante porque dessa forma o sistema foi construdo totalmente de forma colaborativa. Outro fator importante foi a diviso de tarefas para no sobrecarregar apenas um grupo, visto que esse projeto foi desenvolvido em um semestre, e em sala de aula.

6. Concluso
A metodologia de ensino e desenvolvimento de um sistema distribudo totalmente colaborativo apresentados nesse artigo, mostrou-se eficaz para aprendizado e aplicao de conceitos por parte dos alunos. A aula deixou de ser excessivamente terica e passou a ser totalmente prtica, com implementao de cdigo e teste de cada funcionalidade, antes que o sistema pudesse ser finalmente, integrado. Portanto, a contribuio desse trabalho se deve principalmente metodologia abordada para desenvolvimento de um sistema distribudo de forma colaborativa e didtica em disciplinas de Sistemas Distribudos, Redes de Computadores ou Sistemas Operacionais.

Referncias
[Berman, 2000]Berman, H.M. et. al.,(2000). The Protein Data Bank, Oxford Journals, Vol. 28, No. 1 235-242, Disponvel em: < http://nar.oxfordjournals.org/cgi/content/full/28/1/235>. Acesso em: 8 nov 2009.
7

III CONGRESO INTERNACIONAL

DE

COMPUTACIN

TELECOMUNICACIONES

[Buligon et. al., 2004] Buligon C., Cechin S, Jansch-prto I. (2004). Implementando recuperao por retorno baseada em checkpointing em Sistemas Distribudos assncronos. Universidade Federal do Rio Grande do Sul, Porto Alegre/ RS. [Coulouris et. al., 2001] Coulouris G., Dollimore J., Kindberg T. (2001). Distributed Systems: Concepts and Design. 3. ed. Editora Addison-Wesley. [Ferraz, 2002] Ferraz, C. Sistemas distribudos. Pernambuco: Universidade Federal de Pernambuco (UFPE), 2002. 17 slides: color. Acompanha texto. [GPACP, 2011] GPACP, Grupo de pesquisa de aplicaes em computao paralela. Introduo Computao Paralela. So Paulo, Unesp, 2011. 18 slides: color. Acompanha texto. [GSORT, 2011] GSORT, Grupo de sistemas distribudos: otimizao, redes e tempo-real. (2011). Disponvel em: <http://www.wiki.ifba.edu.br/gsort/tiki-index.php?page=Projetos >. Acesso em: 29 jul 2011. [Tanenbaum A. S.; Steen M.V, 2002] Tanenbaum A. S.; Steen M.V. (2002), Distributed Systems: Principles and Paradigms. Editora Prentice Hall.