2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ZooKeeper é um serviço de coordenação distribuída altamente disponível amplamente utilizado em sistemas distribuídos para resolver o problema de consistência de sistemas distribuídos. A seguir serão apresentados em detalhes os princípios subjacentes do ZooKeeper, incluindo sua arquitetura, modelo de dados, mecanismo central e protocolo de consistência.
O ZooKeeper adota uma arquitetura mestre-escravo, que geralmente consiste em um Líder e vários Seguidores. Existem também nós Observadores como nós sem direito a voto para compartilhar a pressão das solicitações de leitura.
O ZooKeeper armazena dados em uma estrutura de árvore semelhante a um sistema de arquivos, e cada nó é chamado de znode.
Uma sessão é estabelecida entre cada cliente e o cluster ZooKeeper para manter o estado da conexão e gerenciar nós temporários. O ZooKeeper detecta o status da conexão do cliente por meio do mecanismo de pulsação. Se nenhuma pulsação for recebida dentro de um determinado período de tempo, a sessão será considerada desconectada.
Para garantir a consistência dos dados de cada nó, o ZooKeeper adota um mecanismo de sincronização de dados. Quando o nó Líder processa uma solicitação de gravação, ele enviará a operação de alteração a todos os nós Seguidores. O nó Seguidor confirmará após aceitar a operação de alteração e o nó Líder decidirá, em última instância, se a operação de alteração foi bem-sucedida.
ZooKeeper suporta o mecanismo Watch. O cliente pode registrar Watch no znode especificado. Quando os dados ou nós filhos do znode mudam, o ZooKeeper notificará o cliente.
O ZooKeeper usa um protocolo de consistência chamado ZAB (Zookeeper Atomic Broadcast) para garantir a consistência dos dados. O ZAB consiste em duas fases: a fase eleitoral e a fase de transmissão.
Quando o cluster ZooKeeper é iniciado ou o nó Líder falha, uma eleição é necessária para determinar um novo Líder. A fase eleitoral é dividida principalmente nas seguintes etapas:
Após a determinação do Líder, entra-se na fase de transmissão. O Líder é responsável por processar a solicitação de gravação do cliente e transmitir a operação de mudança para todos os nós Seguidores. As etapas específicas são as seguintes:
A seguir está um exemplo simples usando o ZooKeeper, mostrando como criar nós, ler os dados do nó e registrar o Watch.
existir pom.xml
Apresente a dependência do cliente ZooKeeper.
xmlCopiar código