SearchWiki:

Seções:

Recent Changes Printable View Page History Edit Page

Fase 2 - Membership

Nessa fase do trabalho foi implementado um protocolo de comunicação entre os servidores que permitem que eles se monitorem, identificados quais estão ativos e quais não estão.

Cada servidor ativo envia regularmente para os outros servidores uma mensagem de "hello", utilizando o protocolo UDP. Cada servidor ativo ao receber as mensagens de "hello" de outros servidores, adiciona em um vetor o ID do servidor que enviou o hello e um timestamp com o momento em que a mensagem foi recebida. No caso de IDs? já presentes no vetor, simplesmente é atualizado o timestamp. Regularmente esse vetor é verificado e entradas com um timestamp maior do que um determinado valor são retiradas.

Adicionalmente foi criado um protocolo de comunicação entre cliente e servidor permitindo que o cliente envie as seguintes mensagens: ping, alivelist, peerlist, valor e try. O servidor responde com um "pong", a lista de servidores ativos, a lista com todos os servidores conhecidos, o valor atual armazenado, respectivamente. Para uma mensagem try o servidor inicia um 2 phase commit e responde com o resultado de tal operação (commited ou aborted).

O código do servidor e do cliente esta disponível logo abaixo:

Servidor

membership.py

msghandler.py

mysender.py

myserver.py

server.py

serverconf.py

twophasecommit.py

Cliente

client.py

clientconf.py

arquivo de configuracao

config.ini

Exemplo de execução

 macalan: python server.py -f config.ini  -i macalan
 {}
 {}
 msg from  ('200.17.202.57', 43990)  arrived at  Sat Nov 18 13:08:02 2006  with content {'type': 'hello', 'id': 'talisker'}
 {'talisker': 1163862482.036097}
 msg from  ('200.17.202.57', 43990)  arrived at  Sat Nov 18 13:08:04 2006  with content  {'type': 'hello', 'id': 'talisker'}
 ...

 talisker: python server.py -f config.ini  -i talisker
 msg from  ('200.17.202.6', 44819)  arrived at  Sat Nov 18 13:08:05 2006  with content  {'type': 'hello', 'id': 'macalan'}
 {'macalan': 1163862485.4113801}
 msg from  ('200.17.202.6', 44819)  arrived at  Sat Nov 18 13:08:08 2006  with content  {'type': 'hello', 'id': 'macalan'}
 ... 

 macalan: ./client.py -f config.ini -i macalan -m alivelist
 {'talisker': 1163862815.495404, 'macalan': 1163862815.533375}

 macalan: ./client.py -f config.ini -i macalan -m peerlist
 {'bowmore': ('bowmore', 45007), 'montecristo': ('montecristo', 45008), 'talisker': ('talisker', 45006)}

Edit Page - Page History - Printable View - Recent Changes - WikiHelp - SearchWiki
Page last modified on November 18, 2006, at 01:14 PM