Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Introdução
 
 
Acadêmico(a): Alexandre Helfrich
Título: Protótipo Software para Consulta Base de Dados XML Através Processo Distribuído Usando Agentes Móveis em Ambiente Peer-to-peer (P2P)
 
Introdução:
Os limites impostos pelo desenvolvimento de tecnologias que possibilitem um aumento significativo no poder computacional de um processador doméstico, ou mesmo em supercomputadores, inviabilizam a resolução de inúmeros problemas computacionais atuais. Está-se presos a limites físicos (tamanho dos transistores, temperatura de funcionamento, etc) e financeiros, já que o poder de processamento custa caro e muitas vezes o custo/benefício não justifica o gasto. Nesse contexto, muitas aplicações são tidas como inviáveis e são abandonadas, seja porque o projeto necessitaria de milhões de dólares para pagar o custo computacional, ou por conta do tempo que seria gasto com os recursos computacionais disponíveis. O usuário comum também passa por esse tipo de problema ao necessitar de um poder computacional não disponível em seu computador. Observando-se o número de computadores interligados pela internet e analisando a porcentagem de quantos destes estão sempre rodando processos pesados enquanto navegam pela rede, descobre-se ociosidade de processamento na maioria dos casos, onde há computadores que estão sempre ligados, mas passam a maior parte do tempo sem um usuário logado nem processos rodando. O poder computacional desperdiçado nessas máquinas é enorme, sem falar da energia elétrica que está sendo gasta sem nenhum objetivo que não seja a máquina estar sempre pronta para um usuário se logar. Grandes e pequenas instituições que possuem computadores em rede utilizam esta postura de não desligar seus computadores no momento que o usuário os deixa. Juntando essas informações (limites na tecnologia de processadores mais rápidos, aumento na largura de banda e no número de computadores interligados na internet e a ociosidade que a maioria deles dispõe), foi que se originou a idéia de se utilizar a ociosidade desses computadores para realizar tarefas colaborativas. O processamento distribuído funciona como um verdadeiro supercomputador virtual, no qual é possível configurar as tarefas de cada estação. Para viabilizar a existência do processamento distribuído, existe um administrador que determina o que cada computador vai processar e quando esses dados já processados serão incorporados aos resultados do processamento. A heterogeneidade entre as máquinas participantes do processamento distribuído já mostra como problema, a capacidade, em termos de poder de processamento que cada máquina do processamento distribuído possui ser diferente, já que ele pode ser um computador comum ou um supercomputador. O administrador terá que tomar decisões na hora de incorporar esses resultados, sendo que o ideal é que haja mais independência possível de um resultado para o outro. O segundo problema se refere à plataforma de cada computador participante do processamento distribuído. Programas de código aberto são bem mais desejáveis para resolver este problema. Segundo Yuri (2002), inúmeros projetos em processamento distribuído estão neste momento espalhados pelo mundo. O mais popular atualmente, e um dos primeiros a se difundir na rede é o Seti@home da Universidade de Berkeley. Para o projeto Search for Extraterrestial Intelligence (SETI, 2000), milhares de pessoas no mundo rodam um protetor de tela que analisa os sinais de rádio capturados pelo radiotelescópio. O Seti@home atualmente tem conseguido alcançar a marca de 1 zettaflop (um sextilhão de operações aritméticas por segundo). Na prática, o usuário que possui um computador, que não necessita estar constantemente ligado à internet, baixa um cliente do processamento distribuído da Seti@home compilado para sua plataforma e o instala. O usuário cria uma identificação e recebe neste momento um pequeno pacote contendo os dados que serão processados durante as horas ociosas do computador. Não é necessário, portanto estar conectado, o programa vai processando localmente e colecionando os resultados em um pacote de retorno. Concluída a operação, quando o usuário volta a se conectar na rede, o programa envia o pacote resultado do processamento e solicita um outro pacote continuando a operação off-line. Os requisitos para o processamento distribuído deste tipo de aplicação são que, os pacotes de dados e resposta sejam pequenos para não ocupar a banda de dados dos clientes, e o processamento seja leve para não afetar as tarefas na máquina cliente. Para pesquisar a existência de novos materiais na natureza, a Organização Européia de Pesquisas Nucleares (CERN, 1993), criou um consórcio mundial de laboratórios para montar um processamento distribuído para a execução de um acelerador linear. Processamento distribuído pode ser utilizado para aproveitar o poder de processamento ocioso das máquinas pela rede. Por outro lado, problemas como a heterogeneidade das máquinas (plataforma e poder computacional), interdependência entre os dados a serem processados e a infra-estrutura que coleta todos esses dados gerando um resultado final, ainda necessitam de fortes estudos e realizações. Alguns trabalhos já buscam criar projetos de processamento distribuído genéricos onde um usuário possa escolher o que vai querer processar dentro do processamento distribuído e obter seu resultado de forma transparente. Neste contexto, como proposta à utilização do processamento distribuído em um ambiente peer-to-peer, será necessária a implementação de um aplicativo servidor de nomes, responsável pelo gerenciamento e distribuição da lista de peers para os aplicativos peers conectados ao servidor de nomes e um aplicativo que será o peer, o qual se conecta ao servidor de nomes e, de posse da lista de peers solicita e disponibiliza processamento para outros peers da lista de peers distribuída pelo servidor de nomes. Neste trabalho, o aplicativo peer será executado em alguns computadores de uma rede local e o servidor de nomes será executado em um computador também da rede local. Quando um peer for executado, ele acessará o servidor de nomes. Este peer torna-se conhecido para o servidor de nomes, sendo assim incluído na lista de peers que o servidor de nomes contém, o servidor de nomes neste momento distribui a lista de peers a todos os aplicativos peers que estiverem na lista, podendo assim de qualquer peer, ser alocado o poder computacional ou ser atendido seu pedido de processamento. Quando for necessário executar um trabalho que requer bastante processamento por um peer, o peer, de posse da lista de peers, escala um ou mais peers para o processamento da tarefa. Esta troca de informações entre os computadores é o que caracteriza então a comunicação de peer-to-peer, ou seja, comunicação entre os aplicativos peer da rede de processamento, sem a necessidade de comunicação com o servidor. Como serviços que cada peer disponibilizará ao ambiente, será implementado uma base de dados, contendo uma lista de itens que podem ser pesquisados por outro peer. Sendo assim, o serviço disponibilizado será o processamento utilizado na pesquisa de um determinado item na base de dados que o peer disponibilizou para a rede.