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á