Compartilhamento de tecnologia

Estrutura de dados do Zookeeper

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

O modelo de dados do ZooKeeper possui características semelhantes a uma estrutura de árvore de sistema de arquivos, mas é projetado especificamente para aplicativos distribuídos.

A seguir estão os principais recursos das estruturas de dados do ZooKeeper:

  1. Namespace hierárquico : o ZooKeeper fornece um namespace hierárquico, semelhante a um sistema de arquivos. Cada nó possui um caminho exclusivo na hierarquia.

  2. Nó Z : Cada nó de dados no ZooKeeper é chamado de ZNode (semelhante a um arquivo ou diretório em um sistema de arquivos). ZNode pode ter nós filhos, formando uma estrutura hierárquica.

    1. Nó persistente : nós persistentes são o tipo de nó mais comum. Uma vez criados, eles persistem, a menos que sejam explicitamente excluídos pelo cliente. Mesmo que o serviço ZooKeeper seja reiniciado, os nós persistentes não serão perdidos.

    2. Sequencial Persistente : O nó sequencial persistente é uma extensão do nó persistente e possui natureza sequencial. Quando criado, o ZooKeeper anexará um número de sequência mantido pelo nó pai ao final do nome do nó para garantir a exclusividade global. Esse tipo de nó geralmente é usado para implementar cenários que exigem organização ordenada, como filas distribuídas.

    3. Efêmero : o ciclo de vida do nó temporário está vinculado à sessão do cliente. Se uma sessão do cliente expirar devido a problemas de rede ou falha do cliente, o ZooKeeper excluirá automaticamente todos os nós temporários criados pela sessão. Esse recurso torna os nós efêmeros ideais para implementar mecanismos de bloqueio e eleição de líderes.

    4. Sequencial Efêmero : nós sequenciais temporários combinam os recursos de nós temporários e nós sequenciais persistentes. Eles têm uma vida útil limitada e recebem um número de série quando são criados. Isso os torna muito úteis na implementação de tarefas distribuídas de sincronização e coordenação, como implementação de bloqueios ou outras primitivas de sincronização.

    5. Nó de contêiner (contêiner) : um nó contêiner é um ZNode especial que não armazena dados, mas pode conter nós filhos. Esses nós podem ser usados ​​para organizar e estruturar dados, semelhante a diretórios em um sistema de arquivos.

    6. Nó Interior : os nós internos são nós pais no ZooKeeper e podem conter nós filhos. Eles diferem dos nós folha porque os nós folha são normalmente usados ​​para armazenar dados, enquanto os nós internos são usados ​​para manter hierarquias.

    7. Nó da folha : os nós folha são os nós finais da hierarquia ZNode e geralmente são usados ​​para armazenar dados. Eles não têm nós filhos.

    8. Nó TTL (tempo de vida) : os nós TTL são um novo recurso introduzido no ZooKeeper versão 3.5.0. Eles permitem que os nós definam um tempo de vida (TTL). Quando o TTL expirar, se o nó for temporário, será excluído; se for um nó persistente, se tornará um nó temporário e será excluído.

  3. ACL (lista de controle de acesso):ZNode pode definir diferentes permissões de acesso para controlar quais usuários ou grupos de usuários podem ler ou modificar nós.

  4. Mecanismo de observador : O cliente pode definir o Watcher no ZNode. Quando o ZNode muda (como alterações de dados, nós filhos aumentam ou diminuem, etc.), todos os clientes com o Watcher configurado receberão notificações.

  5. persistência : os nós podem ser persistentes, o que significa que os nós persistentes ainda existem mesmo se o serviço ZooKeeper for reiniciado. Se o nó for temporário, ele será excluído automaticamente quando a sessão do cliente que o criou terminar.

  6. armazenamento de dados : Cada ZNode pode armazenar dados, como valores de string ou dados binários. Os clientes podem ler e gravar esses dados.

  7. sequencialidade : ao criar um nó sequencial, o ZooKeeper anexa um número ao nome do nó, que começa em 0 e aumenta cada vez que um novo nó é criado. Isso garante nomes de nós exclusivos e pode ser usado para implementar a ordem FIFO.

  8. controle de versão : Cada ZNode possui um número de versão Sempre que os dados do nó forem modificados, o número da versão será incrementado. Isso pode ser usado para verificar se um nó foi modificado após ser lido.