Emprego de Agentes Inteligentes no Balanceamento de Carga
na Interface de um site de Educação a Distância
Rafael Timóteo De Sousa Júnior
desousa@unb.br
Aclair Rodrigues Braga
aclairbraga@yahoo.com.br
Ricardo Staciarini Puttini
puttini@unb.br
Mamede Lima-Marques
mamede@unb.br
Laboratório de Engenharia de Redes de Comunicação – LabRedes
Universidade de Brasília - Departamento de Engenharia Elétrica
http://www.redes.unb.br
(Texto original com imagens: clique aqui)
RESUMO
A Internet e o computador permitem diferentes abordagens para a educação, nas quais os estudantes podem estudar em qualquer lugar no mundo, a qualquer momento e da maneira mais coneveniente para eles. A Internet possibilita um rápido acesso a dados reais em todo o mundo, assim como interações sociais do estudante com o corpo docente e outros estudantes. Entre outras razões, isso leva a rede a apresentar crescimento explosivo do tráfego e da carga nos servidores e, para um site de educação a distância, não é mais possível confiar todas as requisições a um único e poderoso servidor web. Escalabilidade e disponibilidade são duas premissas básicas em arquiteturas de sites web, onde requisições de clientea devem ser atendidas por múltiplos servidores e de forma transparente ao usuário. O objetivo deste trabalho é a apresentação e a implementação de um modelo de balanceamento de carga do tráfego web utilizando agentes inteligentes para um site de educação a distância. Com base em comportamentos relacionados a alterações do sistema e em conhecimentos adquiridos, os agentes tomam a decisão de roteamento da requisição do cliente para o servidor web que melhor possa atender àquele pedido.
PALAVRAS-CHAVE
Educação e Treinamento a Distância Mediados por Computadores; Tecnologias e ferramentas para infraestrutura; Ambientes Interativos de Aprendizagem; balanceamento de carga; agentes inteligentes.
Abstract
The internet and the computer enable different approaches to education, in which students can study anyplace in the world, at any time, and in a manner most convenient to them. The Internet allows for rapid access to real data from across the world, as well as continual social interaction with faculty and other students. This way, the network presents explosive growth in traffic and server load and, for a distance education website, it’s no longer viable to trust all the requisitions to one single and powerful webserver. Scalability and availability are two basic requirements in web site architectures, where client requests must be met by multiple servers in a transparent way to the user. The purpose of this paper is the presentation and implementation of a web traffic load balance model using intelligent agents for an education website. Based on behaviors related to system changes and knowledge, the agents make the best decision of what route to take for the client requisition to reach the most appropriate web server.
keywords
distance education, distance education technologies and tools, interactive learning environments, load balancing, intelligent agents.
1. INTRODUÇÃO
O número de usuários e de redes conectados à Internet global está crescendo exponencialmente. Esse crescimento está causando problemas de escala, que podem limitar o acesso de usuários a sites populares, em especial os sites de educação a distância, cuja carga é gerada a partir de solicitações de usuários em qualquer parte do mundo e a qualquer hora, sendo assim imprevisível.
O balanceamento de tráfego entre servidores é um recurso que permite distribuir tráfego de rede em direção a um cluster de servidores web, levando em conta o grau de utilização e disponibilidade de cada servidor. Nesse ponto, atuam os mecanismos que possibilitam aos servidores/aplicações informar seus níveis de uso e suas premissas de qualidade de serviço.
Dessa forma, os componentes de controle de carga podem distribuir o tráfego de maneira diferenciada. Além disso, eles possuem mecanismos próprios de verificação de disponibilidade e integridade de servidores. Assim, é possível identificar de forma dinâmica em tempo real qual servidor está com menos carga ou apresentando menor tempo de resposta e, então, direcionar uma parte maior do tráfego da rede para ele.
Uma alternativa para controle dinâmico consiste da arquitetura utilizando agentes inteligentes, proposta neste trabalho, onde existe um gerente de carga interagindo com agentes em servidores web, realizando assim o roteamento de uma requisição cliente para o servidor web mais apropriado, baseado em informações, comportamentos e alterações coletadas e indentificadas pelos agentes inteligentes.
Assim, apresenta-se neste artigo um trabalho objetivando o desenvolvimento e implantação de um sistema de balanceamento de carga, denominado Smart Balance, na interface de um site de educação a distância e que, utilizando agentes inteligentes, automatize e maximize essa tarefa. O sistema automático foi realizado com características de adaptabilidade e possibilidade de ajuste a situações especiais, constituindo-se um sistema de inteligência artificial distribuída particularmente útil em ambientes nos quais o problema tratado é imprevisível. O sistema de agentes implementado emprega agentes com diferentes arquiteturas, todos escritos em linguagem JAVA, usando a linguagem KQML para comunicação entre agentes.
3. WEBQUEST
O WEBQUEST [1] é o site de educação a distância onde se emprega o balanceamento de carga utilizando agentes inteligentes. O WEBQUEST foi desenvolvido como aplicação prática para defesa de tese de mestrado na UnB. É um ambiente orientado para atividades de pesquisa no contexto de um processo de ensino, obedecendo aos seguintes princípios gerais:
· algumas ou todas as informações tratadas no ambiente são consideradas como recursos provenientes da Internet.
· com o WEBQUEST pode-se trabalhar em diferentes áreas do currículo escolar. Trabalha-se em forma de projetos, utilizando a idéia de aprendizagem colaborativa. A mesma abordagem pode ser empregada em situações de aprendizagem extracurriculares também.
· o WEBQUEST adota uma estratégia para incentivar a aprendizagem, em que o objetivo instrucional é a aquisição e integração do conhecimento, procurando colocar o aluno em contato com uma gama de novas informações que, inclusive, podem ser compartilhadas entre professores e alunos de diferentes escolas. A idéia básica é dotar o ambiente de funcionalidades que possibilitem trabalhar dentro de uma única disciplina ou de um projeto interdisciplinar. As escolas, professores e alunos podem ser fornecedores de informações, valorizando, assim, seu potencial e trabalho. Assim, procura-se criar um espaço na Web que irá facilitar e enriquecer o uso da Internet por professores e alunos.
A obediência a tais princípios é motivada pela intenção de fazer do WEBQUEST um ambiente de apoio eficiente nos processos de ensinos reais ou, pelo menos, como de experimentação de conceitos.
4. KQML
O protocolo ou linguagem KQML faz parte de um projeto de maior abrangência chamado DARPA Knowledge Sharing Effort que trabalha no desenvolvimento de técnicas e ferramentas para promover a distribuição do conhecimento entre agentes inteligentes [2].
A KQML é uma linguagem para trocar informações e conhecimentos entre agentes e caracteriza-se tanto por uma formatação de mensagens como por um protocolo para manipular essas mensagens que suportam, em tempo de execução, o compartilhamento de conhecimento e de informações entre agentes [3].
Na especificação da KQML, os agentes, que participam de um processo de comunicação por meio da troca de mensagens, podem ser comparados com entidades que possuem comportamento próprio e autônomo, agindo em sociedade por intermédio da interação com outros agentes. Esse comportamento está intimamente ligado ao seu estado mental que pode ser representado por uma base de conhecimento em que informações que descrevem suas crenças e objetivos estão armazenadas. As crenças do agente representam as informações sobre si próprio e sobre o ambiente externo, incluindo as bases de conhecimentos de outras entidades [2].
Deve-se ressaltar que a KQML não soluciona ou sugere como deve estar estruturada a implementação dos agentes. Dessa forma, ela se identifica como uma linguagem de propósito geral na qual, independentemente do ambiente ou estrutura dos agentes, é possível usá-la para prover a comunicação num sistema multiagentes [4].
5. ARQUITETURA DO MODELO
O Smart Balance utiliza a arquitetura de um distribuidor HTTP, em que um distribuidor centralizado recebe todas as requisições de entrada e as distribui entre os servidores web disponíveis, por meio do mecanismo de redirecionamento fornecido pelo protocolo HTTP. Esse protocolo permite ao distribuidor redirecionar uma requisição, especificando o código de status apropriado na resposta e indicando, em seu cabeçalho, o endereço do servidor no qual o cliente pode conseguir o documento desejado. Tal redirecionamento é transparente para os usuários que podem, no máximo, perceber um aumento no tempo de resposta. Essa solução não exige a modificação do endereço IP dos pacotes que alcançam ou deixam o cluster de servidores web. A Figura 1 mostra a arquitetura de funcionamento do Smart Balance evidenciando os seus principais módulos, assim descritos:
· os agentes BroadcastAgent, instalados nos servidores Web, ficam coletando informações do estado de cada servidor segundo solicitação do ControlAgent.
· as informações de estado dos servidores são roteadas de acordo com a determinação do ControlAgent ao agente DeciderAgent em que são armazenadas e processadas;
· o agente DeciderAgent realiza inferências a fim de determinar qual servidor está mais disponível no momento e informa ao ListenerAgent o nome desse servidor;
· o agente ListenerAgent recebe conexões http do mundo Internet e redireciona a requisição ao servidor mais disponível no momento;
· todas as mensagens transmitidas entre os agentes são no formato KQML e passam sempre pelo RouterAgent;
· se um servidor se torna indisponível, por qualquer que seja o motivo, ele deixa de enviar informações para o distribuidor, o qual não lhe enviará mais requisições.
6. DEFINIÇÃO, IMPLEMENTAÇÃO E CONFIGURAÇÃO DOS AGENTES
Os agentes inteligentes de software foram desenvolvidos utilizando a linguagem Java, com o objetivo de possibilitar a aplicação prática para resolver problemas do mundo real, pois isso torna fácil adicionar um agente inteligente a uma aplicação Java já existente.
Os agentes devem manter capacidade relativamente sofisticada de processamento por eventos. Os agentes necessitam de ter habilidade para lidar com eventos provenientes do mundo exterior, de outros agentes e de eventos usados como sinais de aplicações externas. O JDK tem características de um novo e poderoso modelo de processamento de eventos chamado Delegation Event Model. Esse modelo é baseado em eventos sources e eventos listeners. Existem muitas classes diferentes de eventos com diferentes níveis de granularidade. Além disso, é possível a adição de conhecimento de domínio (domain knowledge) ao agente, usando as regras if-then que podem ser exploradas por um mecanismo de inferência para tirar conclusões sobre o ambiente.
No protótipo realizado, conforme já citado, existem quatro tipos de agentes com propósitos diferentes: BroadcastAgent, DeciderAgent, ListenerAgent e ControlAgent. Esses agentes foram construídos utilizando a camada do roteador (Router Layer) do JATLite [5], em que todos os recursos dessa e das camadas inferiores, KQML Layer, Base Layer e Abstract Layer são utilizados.
Os agentes BroadcastAgent são responsáveis pela coleta de informações de estado dos servidores. Como descrito anteriormente, ele utiliza as classes contidas nos pacotes Abstract.*, KQMLLayer.* e RouterLayer.AgentClient.* do JATLite. Esses agentes residem nos servidores web e realizam a coleta das informações de CPU, memória e conexões ativas do servidor web por meio dos métodos getCPU( ), getMem( ) e getCnx( ).
Os dados coletados pelo agente BroadcastAgent são enviados ao roteador de mensagens KQML, chamada RouterAction e contida na camada Router Layer, pelo método sendResult(String Receiver) por meio de mensagens KQML.
O agente ListenerAgent recebe as requisições HTTP externas. Esse agente também utiliza as classes contidas nos pacotes Abstract.*, KQMLLayer.* e RouterLayer.AgentClient.* do JATLite. Sua comunicação com a camada Router Layer ocorre por meio de mensagens KQML.
Esse agente realiza a interface com o mundo externo, ou seja, é responsável por receber as requisições http e direcioná-las ao servidor que estiver mais disponível no momento. As linhas de código, descritas abaixo, são da classe ListenerAgent e descrevem esse mecanismo de redirecionamento.
try {
ServerSocket ss = new ServerSocket(localport);
while (true) {
if (listener.getBestChoice() != null) {
HTTPRedirector redir = new HTTPRedirector(ss.accept(), listener.getBestChoice());
redir.start();
}
else continue;
}
}
O agente DeciderAgent reside no distribuidor e sua função é selecionar o servidor que está mais disponível no momento para fazer a distribuição de requisições. Esse agente, além de utilizar as classes dos pacotes Abstract.*, KQMLLayer.* e RouterLayer.AgentClient.*, utiliza, também, as classes do pacote com.rule.* do JATLite.
Nesse agente se concentra toda a inteligência do sistema. Ele se utiliza de mecanismos de regras de inferência e lógica de predicados para determinar a melhor escolha. Ele recebe os dados dos agentes de coleta de dados por meio dos agentes ControlAgent, alimenta uma base de regras com esses dados e dispara uma inferência sobre esses dados utilizando encadeamento para frente (forward chaining):
public void forwardChain() {
Vector conflictRuleSet = new Vector() ;
conflictRuleSet = match(true);
while(conflictRuleSet.size() > 0) {
Rule selected = selectRule(conflictRuleSet);
selected.fire();
conflictRuleSet = match(false);
}
}
A classe RuleBase define um conjunto de RuleVariables e Rules junto com os métodos de alto nível para encadeamento para frente (forward chaining). As regras são dadas pelo método initRuleBase e seu código fonte é dado a seguir.
private void initRuleBase() {
rb.goalClauseStack = new Stack();
rb.variableList = new Hashtable();
spread = new RuleVariable("spread");
spread.setLabels("0-25 25-50 50-75 75-100");
rb.variableList.put(spread.name, spread);
serverLoad = new RuleVariable("serverLoad");
serverLoad.setLabels("bad regular good optimal");
rb.variableList.put(serverLoad.name, serverLoad);
Condition cEquals = new Condition("=");
Condition cNotEquals = new Condition("!=");
//define rules
rb.ruleList = new Vector();
Rule first = new Rule(rb, "first", new Clause(spread, cEquals, "0-25"), new Clause(serverLoad, cEquals, "optimal"));
Rule second = new Rule(rb, "second", new Clause(spread, cEquals, "25-50"), new Clause(serverLoad, cEquals, "good"));
Rule third = new Rule(rb, "third", new Clause(spread, cEquals, "50-75"), new Clause(serverLoad, cEquals, "regular"));
Rule forth = new Rule(rb, "forth", new Clause(spread, cEquals, "75-100"), new Clause(serverLoad, cEquals, "bad"));
}
O agente ControlAgent utiliza as classes Abstract.*, KQMLLayer.* e RouterLayer.AgentClient.* do JATLite. É responsável por solicitar aos agentes de coleta BroadcastAgent, em intervalos determinados, a coleta de dados dos servidores HTTP.
8. CONCLUSÃO
A necessidade de uma solução utilizando agentes inteligentes que tomam decisões é a proposta do Smart balance. Em virtude dos aspectos mencionados neste trabalho, pode-se aqui dizer que é importante o fornecimento de uma infra-estrutura web de alta disponibilidade. A proposta de uma solução de balanceamento de carga utilizando agentes inteligentes atende quanto à qualidade, performance, escalabilidade e alta disponibilidade dos servidores Web. Verificou-se, durante a realização da pesquisa, que os agentes possuem todo um embasamento teórico por meio de seus conceitos, arquiteturas, linguagens, sendo fonte de pesquisas recentes direcionadas às mais diversas áreas.
Dentro desse modelo, foram estudadas as principais arquiteturas e algoritmos de balanceamento de carga de servidores Web, os conceitos de agentes inteligentes e a linguagem de comunicação entre agentes denominada KQML mostrou-se bastante eficiente no que diz respeito a funcionalidade do processo de interação dentro do sistema de agentes.
O JATLite foi utilizado para a construção do Smart Balance e sua estrutura em camadas demonstrou tratar-se de uma ferramenta que tem um campo de aplicação muito abrangente para construção de aplicações distribuídas.
Ainda que o objetivo deste trabalho tenha sido atingido, existem funcionalidades a serem implementadas, pois o assunto é extenso e, apesar das dificuldades de se encontrar literatura específica sobre o tema, objetivos futuros como alta disponibilidade do Smart Balance, segurança, aprendizagem dos agentes e outras metas mais audaciosas deverão ser conquistadas.
9. Bibliografia
[1] RIBEIRO, G.S.N e SOUSA JR., R.T. Webquest: Protótipo de Um Ambiente de Aprendizagem Colaborativa a Distância Empregado a Internet. VIII Congresso Internacional de Educação a Distância - ABED2001. Brasília. Brasil. Agosto 2001.
[2] FININ, T.; WEBER, J. Specification of the KQML Agent-Communication Language - The DARPA Knowledge Sharing Initiative, 1993.
[3] FININ, T.; LABROU, Y. A Proposal for a new KQML Specification - University of Maryland Baltimore County(UMBC), 1997.
[4] FININ, T.; LABROU, Y. A semantics approach for KQML - a general purpose communication language for software agents - University of Maryland Beltimore County., 1992a.
[5] JATLite. http://jatlite.stanford.edu