Uma arquitetura multi-agente de balanceamento de carga para aplicação de objetos distribuídos - Andreia Carniello (2009)
Diante da necessidade de prover equilíbrio de carga aos sistemas distribuídos, este trabalho de pesquisa propõe um serviço de balanceamento de carga que atua em aplicações de objetos distribuídos denominado arquitetura MABal arquitetura Multi-Agente Distribuída de Balanceamento de Carga para Aplicações de Objetos Distribuídos. A arquitetura MABal realiza o balanceamento de carga de um sistema com base nos níveis de carga dos nós e, diferentemente de outras abordagens de balanceamento de carga, preocupa-se com o tráfego de rede gerado durante a comunicação entre os objetos distribuídos de uma aplicação para a realização de um caso de uso, ou seja, para o provimento de uma determinada funcionalidade da aplicação ao usuário. Esta arquitetura é constituída por um grupo de agentes, modelados segundo a metodologia de Engenharia de Software Orientada a Agentes MESSAGE: (i) agentes gerenciadores; (ii) um agente neural, que utiliza uma rede neural Perceptron de Múltiplas Camadas como mecanismo de raciocínio; e (iii) agentes de balanceamento de carga, que realizam migrações e replicações de objetos servidores. Estes agentes atuam de forma cooperativa, a cada invocação de serviço de um objeto, para selecionar o nó mais apropriado para executar o objeto provedor do serviço requisitado. Esta seleção do nó mais apropriado é guiada por um conjunto de políticas que visam oferecer uma solução de balanceamento de carga orientada a caso de uso aos sistemas distribuídos. A arquitetura MABal teve o seu comportamento simulado pela ferramenta de simulação SimBal, desenvolvida neste trabalho de pesquisa. Os resultados desta simulação foram comparados aos resultados da simulação da execução de um mesmo caso de uso aplicando-se o Serviço de Nomes da especificação CORBA. Os resultados desta comparação mostraram-se favoráveis ao serviço de balanceamento de carga da arquitetura MABal, pois esta arquitetura apresentou menor tempo de execução e menor quantidade de acessos à rede durante a execução do caso de uso considerado.