Download Visualizar/Abrir

Transcript
5.2 Mobile Chat
5.2.2.3
100
Migração do Servidor
Inicialmente, o servidor principal (MainServer) é executado em um dos nós da
rede permanecendo neste nó até a finalização do sistema. Durante a execução do servidor,
pode ocorrer a migração do mesmo para um nó de um cliente, ou a migração entre clientes.
Neste segundo caso, o servidor já está localizado em um cliente e migrará para a máquina
de outro cliente. Além disso, estando o servidor em um cliente, este poderá migrar para
o host inicial, onde foi executado primeiramente, no servidor principal.
As migrações podem ocorrer de forma autônoma que é a migração baseada nas
informações da tabela de custo, ou deliberada que é a migração acionada pelo comando
/getserver <porta> de acordo com a vontade de algum usuário.
O Mobile Chat apresenta as seguintes formas de migração: do servidor principal
para o cliente, de cliente para cliente, do cliente para o servidor principal e a migração
baseada na tabela de custo
A migração do servidor principal para o cliente ocorre de duas formas:
através da requisição do cliente ou autonomamente com base na tabela de custo.
Quando o servidor principal migra para um nó cliente e a migração foi requisitada
pelo cliente, então, tal requisição faz com que o agente ServerAgent seja enviado ao
MainServer.
Se a migração ocorrer de forma autônoma, a partir de uma análise realizada na
tabela de custo, o agente ServerAgent também parte de um cliente tendo como destino
o MainServer. Neste caso, o nó que apresenta maior vantagem é determinado quando o
cliente se conecta através do agente SpawnMigrationAgent que dispara o ServerAgent
que é o responsável pela migração do servidor.
Esclarecendo, independente do tipo de migração o agente ServerAgent sempre é
enviado para o MainServer.
Assim que chega no MainServer, o ServerAgent informa para o servidor principal qual é o endereço do cliente que o enviou, desativa o MainServer e envia o agente
SimpleMessageAgent para cada um dos clientes conectados. Esse agente, ao chegar no
seu destino, exibe uma mensagem no shell de execução do ServerClient notificando o
usuário que o servidor vai migrar. Em seguida, o ServerAgent migra para o cliente que irá