Pesquisar este blog

sábado, 29 de novembro de 2014

Apache ZooKeeper diferentes modos de Nós

Nós Sequenciais

Além dos nós comuns do ZooKeeper, existem os nós sequenciais e para criá-los você deve usar os argumentos -s durante a criação de um nó. Também é possíve alterar o tipo de um zode para estes tipos. Um nó sequencial será criado com um sufixo numérico adicionado ao nome e o ZooKeeper garante que nunca existirão dois nós com a mesma numeração, mesmo que eles sejam criados em paralelo.
[zk: localhost:2181(CONNECTED) 9] create -s /exemplo/sequencial um
Created /exemplo/sequencial0000000002
[zk: localhost:2181(CONNECTED) 10] create -s /exemplo/sequential dois
Created /exemplo/sequencial0000000003
[zk: localhost:2181(CONNECTED) 11] ls /exemplo
[sequencial0000000003, sequencial0000000002]
[zk: localhost:2181(CONNECTED) 12] get /exemplo/sequencial0000000002

Os znodes sequenciais são bem úteis para criar znodes com nomes únicos e para saber qual foi a sequencia de criação dos znodes.

Tipos de nós

Existem dois tipos de nós, os efêmeros e os persistentes, os persistentes são aqueles que são armazenados e somente serão apagados quando chamamos o comando delete.

Nós Persistentes

Os nós persistentes são utilizados para armazenar dados que são utilizados pelo aplicativo e precisam ser preservados mesmo quando o aplicativo é reiniciado ou o seu criador não faz mais parte do sistema. Por exemplo um nó master percisa controlar quais trabalhos foram enviados para quais clientes, e estes dados precisam ser recuperados pelo novo master em caso de uma falha do master. Com isso estes dados são armazenados em znodes persistentes.

Nós Efêmeros

Os nós efêmeros podem ser criados através do argumento -e, usado no comando de criação. Um nó efêmero será apagado se o cliente que criou aquele nó parar. Os nós efêmeros são úteis para armazenar aspectos da aplicação, por exemplo dados da sessão.
Um belo exemplo de utilização de um znode efêmero é nos masters do zookeeper, eles criam um znode efêmero master, e enquanto este znode estiver lá, o master está funcionando. Com isso é possível detectar quando o master não está mais disponível e com isso criar uma nova instância dele. Isto também poderá ser utilizado para os clientes e isso torna bem mais simples a construção de um sistema distribuído com controle de falhas.
Um nó efêmero pode ser deletado em dois casos, quando a sessão expira ou é explicitamente fechada, ou quando o comando de delete é executado.
Como os nós efêmeros são apagados assim que a sessão expira, não é possível criar filhos nestes nós.

Nenhum comentário:

Postar um comentário