• Nenhum resultado encontrado

6 ARQUITETURA DO DASE

6.3. Balanceamento de Carga

O DASE possui balanceamento de carga, equilibrando as requisições recebidas a partir dos nós de um ambiente de dados. Este recurso é ativado e configurado através do ambiente de dados.

O balanceamento de carga do DASE funciona da seguinte forma: o agente cliente localiza através do agente JADE DF o agente DASEServiceLocator referente ao ambiente de dados a partir do qual deseja obter dados. O agente

DASEServiceLocator encaminha a solicitação de acesso a dados do agente cliente a

um agente DASEDataProvider, para que este lhe preste o serviço de requisição de dados. Cada nó do ambiente de dados possui um agente DASEDataProvider, e é através da escolha deste agente que o balanceamento de carga ocorre. Todo o processo de prestação de serviço do agente DASEDataProvider ao agente cliente, intermediado pelo agente DASEServiceLocator, ocorre de acordo com o protocolo

Para realizar o balanceamento de carga, o agente DASEServiceLocator não escolhe diretamente o agente DASEDataProvider, e sim um nó. Para isso três fatores são considerados:

1. Primeiro é dada prioridade a um contêiner indicado pelo agente cliente. 2. Caso o contêiner indicado não faça parte do ambiente de dados, então

é dada prioridade ao próprio nó de onde partiu a requisição, ou seja, o nó onde está o agente cliente.

3. Caso o contêiner onde está o agente cliente também não faça parte do ambiente de dados, então um algoritmo de balanceamento de carga é adotado para que um determinado nó seja o indicado.

Na maioria dos casos o melhor nó a ser indicado é o nó em que está o agente cliente, pois isso evitaria uma sobrecarga com troca de mensagens adicionais na rede. No entanto, o agente cliente pode não estar em um nó participante do ambiente de dados. Assim, não é sempre que haverá um agente DASEDataProvider local ao agente cliente. Isto justifica a importância do balanceamento de carga e o papel do agente DASEServiceLocator.

Para aplicar um algoritmo de balanceamento de carga, é necessário que o agente DASEServiceLocator obtenha informações atualizadas e constantes sobre o estado dos agentes DASENode, ou seja, se cada nó do ambiente de dados está muito sobrecarregado ou não. Entretanto, o agente DASEEnvironment já possui parte dessas informações, além de possuir o AID de todos os agentes DASENode. Por isso, é na realidade o agente DASEEnvironment que executa o algoritmo de balanceamento de carga e indica ao agente DASEServiceLocator qual é o nó escolhido.

Atualmente só existe um algoritmo de balanceamento de carga implementado, chamado de Round Robin, ou circular. Tal algoritmo é extremamente simples e consiste em um revezamento seqüencial e circular dos nós que atenderão a requisições. Assim que o último nó for indicado, o primeiro será o próximo a receber uma indicação, em seguida o segundo e assim sucessivamente.

A figura 19 ilustra a arquitetura do sistema considerando um ambiente de dados disposto sobre dois nós, separados na figura através de uma linha tracejada vertical. Nesta figura os círculos representam agentes, com exceção de “CP” e ”DB”,

que são objetos e representam respectivamente ConnectionProvider e o DataBridge, ambos descritos na seção 6.1. O agente “AC” é um agente cliente, enquanto que todos os demais agentes são agentes DASE. Os agentes JADE foram omitidos nesta figura apenas para simplificar a ilustração.

Os retângulos representam o conjunto de agentes DASE, um em cada nó. Os dois tambores, na parte inferior da figura, representam dois nós do SBD distribuído acessado por agentes clientes através do DASE. As setas representam em seqüência a comunicação entre os agentes durante uma requisição de dados realizada por um agente cliente.

Algumas setas são bidirecionais, portanto são numeradas duas vezes. Esta figura ilustra um caso em que o balanceamento de carga do DASE está ativado e o controle de concorrência está desativado, por isso a ausência de agentes

ConcurrencyController e Scheduler. A tabela 5 explica o que cada seta significa.

Tabela 5 - Explicação das setas da figura 19.

Seta(s) Explicação

1 e 7

Agente cliente solicita serviço Service Dispatch ao agente

DASEServiceLocator(seta 1). Assim, o agente cliente obtém o

objeto MessageTemplate (seta 7) necessário para identificar a resposta da requisição de acesso a dados (Data Request) a ser realizada em seguida.

2, 3, 4 e 5 Indicam a interação entre o agente DASEServiceLocator, o agente DASEEnvironment e um ou mais agentes DASENode. Tal interação ocorre devido ao balanceamento de carga.

6 e 12

A seta de número seis representa o papel intermediário do agente DASEServiceLocator durante a execução do serviço

Data Request (requisitado indiretamente pelo agente cliente),

enquanto que a seta de número 12 representa o resultado da prestação deste serviço, obtido pelo agente

DASEDataProvider.

8, 9, 10 e 11

Tais setas ilustram o trabalho do agente DataBridge a partir de uma solicitação do agente DASEDataProvider, considerando um ambiente de dados em que o controle de concorrência está desativado. Considera-se que o objeto DataBridge já havia obtido previamente uma conexão com o SBD, graças ao auxílio do objeto ConnectionProvider.

Duas observações são importantes quanto ao balanceamento de carga do DASE:

o Indicação de nós: o agente DASEServiceLocator aceita requisições de agentes clientes contendo a indicação de um nó. Assim, sempre que o agente cliente indicar um nó juntamente com a requisição de acesso a dados, e tal nó pertencer de fato ao ambiente de dados, então o nó escolhido será o indicado pelo agente cliente , anulando, ou condicionando, o balanceamento de carga.

o Técnica de distribuição de dados: O balanceamento de carga do DASE considera que a localidade física dos dados distribuídos (replicados e segmentados) ao longo dos nós do SBD não é importante, o que ocorre quando a distribuição é feita utilizando distribuição circular (round robin), por hashing, ou qualquer outra técnica que não considere a semântica dos dados durante a

distribuição, como por faixa de valores. Esta restrição é importante porque não será vantajoso direcionar carga a um determinado nó se ele não tiver as melhores condições de acesso aos dados, ou mesmo se ele não contiver os dados. Pelo fato de o DASE não conhecer detalhes sobre a localidade dos dados do SBD8, a técnica de balanceamento de carga circular torna-se a mais adequada, independentemente de ser a única disponível atualmente. Entretanto, conforme dito no item anterior, existe a possibilidade de as requisições serem processadas no nó em que foram submetidas, o que faria com que a responsabilidade de escolha do melhor nó fosse transferida aos agentes clientes.