Tutorial do Apache ZooKeeper

โšก Resumo Inteligente

O tutorial do Apache ZooKeeper apresenta o serviรงo centralizado para configuraรงรฃo, nomenclatura, sincronizaรงรฃo e serviรงos de grupo em sistemas distribuรญdos. LessOs tรณpicos abordam arquitetura, modelo de dados, observaรงรตes, conjuntos, aplicaรงรตes, vantagens e desvantagens.

  • ๐Ÿ›๏ธ Serviรงo de Coordenaรงรฃo: O ZooKeeper atua como uma base confiรกvel para a coordenaรงรฃo e o consenso de aplicaรงรตes distribuรญdas.
  • ๐Ÿ—‚๏ธ รrvore ZNode: Os dados sรฃo armazenados em um espaรงo de nomes hierรกrquico de ZNodes, semelhante a um sistema de arquivos.
  • ???? Relรณgios: Os clientes se inscrevem nos eventos do ZNode, recebendo notificaรงรตes quando os dados sรฃo alterados ou quando filhos aparecem.
  • ๐Ÿงฉ Conjunto Quรณrum: Um conjunto de servidores em nรบmero รญmpar proporciona tolerรขncia a falhas e gravaรงรตes baseadas na maioria.
  • โšก Casos de uso: Eleiรงรฃo de lรญder de poder, bloqueios distribuรญdos, descoberta de serviรงos e gerenciamento de configuraรงรฃo.
  • ๐Ÿค– AI Cluster Ajuda: Assistentes de IA explicam os modos de falha do ZooKeeper e geram configuraรงรตes de conjunto compatรญveis com o Kubernetes.

Tutorial do ZooKeeper

O que รฉ um sistema distribuรญdo?

Um aplicativo distribuรญdo รฉ um aplicativo que pode ser executado em vรกrios sistemas em uma rede. Ele funciona simultaneamente, coordenando-se para concluir uma determinada tarefa. Essas tarefas podem levar muitas horas para serem concluรญdas por qualquer aplicativo nรฃo distribuรญdo.

O que รฉ o Zookeeper?

Zelador do Zoolรณgico Apache รฉ um serviรงo de coordenaรงรฃo distribuรญda de cรณdigo aberto que ajuda a gerenciar um grande conjunto de hosts. O gerenciamento e a coordenaรงรฃo em um ambiente distribuรญdo sรฃo complicados. O Zookeeper automatiza esse processo e permite que os desenvolvedores se concentrem na construรงรฃo de recursos de software, em vez de se preocuparem com sua natureza distribuรญda.

Zookeeper ajuda vocรช a manter informaรงรตes de configuraรงรฃo, nomenclatura e serviรงos de grupo para aplicativos distribuรญdos. Ele implementa diferentes protocolos no cluster para que o aplicativo nรฃo seja implementado por conta prรณpria. Ele fornece uma visรฃo รบnica e coerente de vรกrias mรกquinas.

Por que Apache Zookeeper?

Aqui estรฃo razรตes importantes por trรกs da popularidade do Zookeeper:

  • Permite exclusรฃo mรบtua e cooperaรงรฃo entre processos de servidor
  • Ele garante que seu aplicativo seja executado de forma consistente.
  • O processo de transaรงรฃo nunca รฉ concluรญdo parcialmente. ร‰ dado o status de Sucesso ou fracasso. O estado distribuรญdo pode ser mantido, mas nunca estรก errado
  • Independentemente do servidor ao qual ele se conecta, um cliente poderรก ter a mesma visรฃo do serviรงo
  • Ajuda vocรช a codificar os dados de acordo com o conjunto especรญfico de regras
  • Ajuda a manter um namespace hierรกrquico padrรฃo semelhante a arquivos e diretรณrios
  • Computadores, que funcionam como um sistema รบnico que pode ser conectado local ou geograficamente
  • Permite ingressar/sair do nรณ em um cluster e status do nรณ em tempo real
  • Vocรช pode aumentar o desempenho implantando mais mรกquinas
  • Permite eleger um nรณ como lรญder para melhor coordenaรงรฃo
  • O ZooKeeper funciona rapidamente com cargas de trabalho em que leituras de dados sรฃo mais comuns do que gravaรงรตes

Funcionรกrio do zoolรณgico Archiestrutura: Como funciona?

Aqui estรก uma breve explicaรงรฃo sobre apache Arquitetura do tratador:

  • Zookeeper segue um cliente-servidor Archiarquitetura
  • Todos os sistemas armazenam uma cรณpia dos dados
  • Lรญderes sรฃo eleitos na startup
Archiarquitetura do ZooKeeper
Archiarquitetura do ZooKeeper

Servidor: O servidor envia uma confirmaรงรฃo quando qualquer cliente se conecta. Caso nรฃo haja resposta do servidor conectado, o cliente redireciona automaticamente a mensagem para outro servidor.

Clientes: o cliente รฉ um dos nรณs no cluster de aplicativos distribuรญdos. Ajuda vocรช a acessar informaรงรตes do servidor. Cada cliente envia uma mensagem ao servidor em intervalos regulares que ajuda o servidor a saber que o cliente estรก ativo.

lรญder: Um dos servidores รฉ designado Lรญder. Fornece todas as informaรงรตes aos clientes, bem como um reconhecimento de que o servidor estรก ativo. Ele executaria a recuperaรงรฃo automรกtica se algum dos nรณs conectados falhasse.

Seguidor: O nรณ do servidor que segue a instruรงรฃo do lรญder รฉ chamado de seguidor.

  • As solicitaรงรตes de leitura do cliente sรฃo tratadas pelo servidor Zookeeper conectado correspondentemente
  • As solicitaรงรตes de gravaรงรฃo do cliente sรฃo tratadas pelo lรญder Zookeeper.

Conjunto/Cluster: Grupo de servidores Zookeeper chamado ensemble ou a Cluster. Vocรช pode usar a infraestrutura do ZooKeeper no modo de cluster para ter o sistema no valor ideal quando estiver executando o Apache.

UI do ZooKeeper: Se vocรช quiser trabalhar com o gerenciamento de recursos do ZooKeeper, precisarรก usar WebUI. Ele permite trabalhar com o ZooKeeper usando a interface de usuรกrio da web, em vez de usar a linha de comando. Oferece comunicaรงรฃo rรกpida e eficaz com o aplicativo ZooKeeper.

O modelo de dados do Zookeeper (ZDM)

Agora, neste tutorial do ZooKeeper, vamos aprender sobre o modelo de dados do Zookeeper. A figura abaixo explica o modelo de dados Apache Zookeeper:

O modelo de dados do Zookeeper
Modelo de dados do Zookeeper
  • O modelo de dados zookeeper segue um namespace hierรกrquico onde cada nรณ รฉ chamado de ZNode. Um nรณ รฉ um sistema onde o cluster รฉ executado.
  • Cada ZNode possui dados. Pode ou nรฃo ter filhos
  • Caminhos ZNode:
    • Canรดnico, separado por barra e absoluto
    • Nรฃo use nenhuma referรชncia relativa
    • Os nomes podem ter caracteres Unicode
  • ZNode mantรฉm a estrutura estatรญstica e o nรบmero de versรฃo para alteraรงรตes de dados.

Tipos de nรณs Zookeeper

Existem trรชs tipos de Znodes:

Persistรชncia znode: Este tipo de znode permanece ativo mesmo depois que o cliente que criou aquele znode especรญfico รฉ desconectado. Por padrรฃo, no zookeeper, todos os nรณs sรฃo persistentes se nรฃo for especificado.

Efรชmero znode: Este tipo de znode zookeeper permanece ativo atรฉ que o cliente esteja ativo. Portanto, quando o cliente se desconectar do zookeeper, ele tambรฉm serรก excluรญdo. Alรฉm disso, os nรณs efรชmeros nรฃo podem ter filhos.

Seqรผencial znode: znodes sequenciais podem ser efรชmeros ou persistentes. Portanto, quando um novo znode รฉ criado como um znode sequencial. Vocรช pode atribuir o caminho do znode anexando um nรบmero de sequรชncia de 10 dรญgitos ao nome original.

ZDM - Relรณgios

Zookeeper, um evento de observaรงรฃo รฉ um gatilho รบnico que รฉ enviado ao cliente que configurou a observaรงรฃo. Ocorreu quando os dados desse relรณgio foram alterados. O relรณgio ZDM permite que os clientes recebam notificaรงรตes quando o znode for alterado. Operaรงรตes de leitura ZDM como getData(), getChidleren(), existem e tรชm a opรงรฃo de definir um relรณgio.

Os relรณgios sรฃo ordenados, a ordem dos eventos de observaรงรฃo corresponde ร  ordem das atualizaรงรตes. Um cliente poderรก ver um evento de observaรงรฃo para znode antes de ver os novos dados que correspondem a esse znode.

ZDM - lista de controle de acesso

Zookeeper usa ACLs para controlar o acesso aos seus znodes. ACL รฉ composta por um par de (Esquema: id, permissรฃo)

Construir em esquemas ACL:

mundo: tem um รบnico id, qualquer um

auth: Nรฃo usa nenhum id, representa qualquer usuรกrio autenticado

resumo: use um nome de usuรกrio: senha

host: permite que vocรช use o nome do host do cliente como identidade de ID da ACL

IP: use o endereรงo IP do host do cliente como identidade de ID da ACL

Permissรตes ACL:

  • CRIAR
  • LER
  • ESCREVA
  • EXCLUIR
  • ADMIN

Ex (IP: 192.168.0.0/16, LEIA)

O ZKS โ€“ Estados de Sessรฃo e Tempo de Vida

ZKS โ€“ Estados de Sessรฃo
ZKS โ€“ Estados de Sessรฃo
  • Antes de executar qualquer solicitaรงรฃo, รฉ importante que o cliente estabeleรงa uma sessรฃo com o serviรงo
  • Todos os clientes de operaรงรตes enviados para o serviรงo sรฃo automaticamente associados a uma sessรฃo
  • O cliente pode se conectar a qualquer servidor do cluster. Mas ele se conectarรก a apenas um รบnico servidor
  • A sessรฃo fornece โ€œgarantias de pedidoโ€. As solicitaรงรตes na sessรฃo sรฃo executadas na ordem FIFO
  • Os principais estados de uma sessรฃo sรฃo 1) Conectando, 2) Conectado 3) Fechado 4) Nรฃo conectado.

Como instalar o ZooKeeper

Passo 1) Clique em Continuar para se inscrever
Vรก para isto link e clique em 'Continuar a se inscrever'

Instale o ZooKeeper

Passo 2) Aceitar Termos e Condiรงรตes
Na prรณxima pรกgina, Aceite o Contrato de Licenรงa

Instale o ZooKeeper

Passo 3) Mensagem de agradecimento mostrada
Vocรช verรก a seguinte mensagem

Instale o ZooKeeper

Passo 4) Clique em Continuar para configurar
Atualize a pรกgina apรณs 5 minutos e prossiga para a configuraรงรฃo

Instale o ZooKeeper

Passo 5) Clique em 'Continuar para lanรงar'
Na prรณxima tela, inicie o ZooKeeper

Instale o ZooKeeper

Passo 6) Parabรฉns!
Vocรช terminou!

Aplicativos Apache ZooKeeper

Apache Zookeeper usado para os seguintes propรณsitos:

  • Gerenciando a configuraรงรฃo
  • Serviรงos de nomeaรงรฃo
  • Escolhendo o lรญder
  • Enfileirando as mensagens
  • Gerenciando o sistema de notificaรงรฃo
  • Synchronizaรงรฃo
  • Distribuรญdo Cluster e Autรดnoma

Empresas que usam o Zookeeper

  • Yahoo
  • Facebook
  • eBay
  • Twitter
  • Netflix
  • Zynga
  • Nutanix

Desvantagens de usar o Zookeeper

  • Pode ocorrer perda de dados se vocรช estiver adicionando novos servidores Zookeeper
  • Nenhuma migraรงรฃo permitida para usuรกrios
  • Nรฃo oferecer suporte para posicionamento e conscientizaรงรฃo do Rack
  • O Zookeeper nรฃo permite reduzir o nรบmero de pods para evitar perda acidental de dados
  • Nรฃo รฉ possรญvel mudar o serviรงo para hospedar a rede sem uma reinstalaรงรฃo completa quando o serviรงo รฉ implantado em uma rede virtual
  • O serviรงo nรฃo oferece suporte ร  alteraรงรฃo dos requisitos de volume apรณs o tรฉrmino da implantaรงรฃo inicial
  • Hรก um grande nรบmero de nรณs envolvidos, portanto pode haver mais de um ponto de falha
  • As mensagens podem ser perdidas na rede de comunicaรงรฃo, o que requer software especial para recuperรก-las novamente

Perguntas Frequentes

O ZooKeeper coordena aplicaรงรตes distribuรญdas fornecendo serviรงos consistentes de configuraรงรฃo, nomenclatura, sincronizaรงรฃo e eleiรงรฃo de lรญder. Ele elimina a necessidade de construir esses elementos bรกsicos do zero em cada sistema.

As ferramentas de IA geram configuraรงรตes para o ZooKeeper, sugerem dimensionamentos para o ensemble e analisam mรฉtricas do ruok e do mntr. Elas sinalizam riscos de split-brain e propรตem scripts de verificaรงรฃo de integridade para clusters de produรงรฃo.

Sim. Os assistentes de IA analisam os logs do zookeeper.out, reconhecem padrรตes de perda de quorum e recomendam ajustes no tempo limite da sessรฃo. Eles tambรฉm elaboram manuais de procedimentos para reinicializaรงรตes sequenciais e recuperaรงรฃo de snapshots.

Um ensemble รฉ um grupo de servidores ZooKeeper executados em conjunto. As operaรงรตes de escrita exigem um quรณrum majoritรกrio, portanto, a maioria das configuraรงรตes de produรงรฃo utiliza um nรบmero รญmpar de servidores, como trรชs, cinco ou sete.

Um ZNode รฉ um nรณ no namespace do ZooKeeper que armazena pequenas quantidades de dados e metadados. Os ZNodes podem ser persistentes, efรชmeros ou sequenciais, permitindo bloqueios e padrรตes de eleiรงรฃo de lรญder.

O Kafka 4.0 e o modo KRaft removem o ZooKeeper, substituindo-o por um controlador de quorum interno baseado em Raft. Novas implementaรงรตes usam o KRaft, enquanto clusters mais antigos podem continuar usando o ZooKeeper com seguranรงa.

O ZooKeeper oferece suporte ร  autenticaรงรฃo SASL, Kerberos, transporte TLS e autorizaรงรฃo baseada em ACL. Habilite esses recursos e segmente os conjuntos por locatรกrio para manter o isolamento em ambientes compartilhados.

Iniciantes compreendem o modelo de dados e a interface de linha de comando em uma semana. OperaA integraรงรฃo de snapshots, monitoramento e Kerberos em um conjunto de produรงรฃo geralmente requer de um a trรชs meses de experiรชncia prรกtica.

Resuma esta postagem com: