Pesquisar este blog

terça-feira, 9 de dezembro de 2014

Apache ZooKeeper Notificações e Watches

Apache ZooKeeper Notificações e Watches

Como o ZooKeeper é tipicamente acessado como um serviço remoto, o acesso aos znodes todas as vezes que um cliente precisa saber algum dado do znode, tornaria muito custosa a manutenção, aumentaria muito o tempo de latência (tempo gasto entre a chamada e a resposta) e ainda iria implicar em mais operações durante a instalação do ZooKeeper.

Watches (Notificador)

O ZooKeeper pode te notificar quando um znode, ou algum de seus filhos, forem modificados. Para registrar um notificador no seu znode você deve utilizar os comandos get ou stat para acessar o conteúdo atual ou os metadados daquele znode, e com isso passar um novo parâmetro registrando o notificador. Para registrar um notificador em um znode filho , voce deve passar o mesmo parametro que foi usado ao pegar o filho com o comando ls.
create /demo/notifique data
Created /notifique
get /demo/notifique true
data
Ao modificar este znode, ou algum filho dele, você verá a seguinte mensagem no console:
 WATCHER 
WatchedEvent state:SyncConnected type:NodeDataChanged path:/notifique
Atente ao detalhe de que um notificador só é disparado uma vez, com isso, se você quiser  ser notificado nas próximas notificações você deverá resetar o notificador a cada modificação. O notificador permite que você utilize o ZooKeeper para implementar um sistema assíncrono, baseado em eventos, e notificar os nós quando a sua cópia local dos dados estiver ultrapassada/desatualizada.