Explicar Ao Tratador Do Jardim Zoológico Apache

Estou a tentar entender o guardião do zoo, como funciona e o que faz. Existe alguma aplicação que seja comparável ao tratador de jardins zoológicos?

Se sabe, como descreveria o tratador de Jardim zoológico a um leigo?

Tentei apache wiki, guardião do Zoo sourceforge...mas ainda não consigo relacionar-me com isso.

acabei de ler através http://zookeeper.sourceforge.net/index.sf.shtml então, não há mais serviços como este? É tão simples como replicar um serviço de servidor?

Author: codeforester, 2010-09-07

6 answers

Em poucas palavras, o guarda-zoológico ajuda-o a construir aplicações distribuídas.

Como funciona

Pode descrever o Guarda Do Jardim zoológico como um serviço de sincronização replicado com consistência. É robusto, uma vez que os dados persistidos são distribuídos entre múltiplos nós (Este conjunto de nós é chamado de "conjunto") e um cliente se conecta a qualquer um deles (ou seja, um "servidor" específico), migrando se um nó falha; enquanto uma maioria estrita de nós estão funcionando, o conjunto de Os nós do zoo estão vivos. Em particular, um nó mestre é escolhido dinamicamente por consenso dentro do conjunto; se o nó mestre falha, o papel do mestre migra para outro nó.

Como as escritas são tratadas

O mestre é a autoridade para as escritas: desta forma, as escritas podem ser garantidas para ser persistidas em ordem, isto é, as escritas são lineares. Cada vez que um cliente escreve para o conjunto, a maioria dos nós persistem a informação: estes nós incluem o servidor para o conjunto cliente, e obviamente o mestre. Isto significa que cada escrita torna o servidor atualizado com o mestre. Isso também significa, no entanto, que você não pode ter escritas simultâneas.

A garantia de escrita linear é a razão para o fato de que o tratador de Zoológico não funciona bem para as cargas de trabalho write-dominante. Em especial, não deve ser utilizado para o intercâmbio de dados de grande dimensão, como os meios de comunicação social. Desde que a sua comunicação envolva dados partilhados, o tratador do Jardim zoológico ajuda-o. Quando os dados podem ser escritos ao mesmo tempo, o tratador de Zoológico realmente fica no caminho, porque impõe uma ordem rigorosa de operações, mesmo que não estritamente necessário, a partir da perspectiva dos escritores. Seu uso ideal é para a coordenação, onde as mensagens são trocadas entre os clientes.

Como é que se lida com as leituras

É aqui que o ZooKeeper se destaca: as leituras são simultâneas uma vez que são servidas pelo servidor específico ao qual o cliente se conecta. No entanto, esta é também a razão para a eventual consistência: "ver" de um cliente pode estar desatualizado, uma vez que o mestre atualiza o servidor correspondente com um atraso limitado, mas indefinido.

Em pormenor

A base de dados replicada do guardião do Jardim zoológico inclui uma árvore de znodes, que são entidades que representam aproximadamente nós do sistema de ficheiros (pense neles como directórios). Cada znode pode ser enriquecido por uma matriz de bytes, que armazena dados. Além disso, cada znode pode ter outros znodes sob ele, praticamente formando um sistema de diretório interno.

Znodos sequenciais

Curiosamente, o nome de um znode pode ser sequencial, o que significa que o nome que o cliente fornece ao criar o znode é apenas um prefixo: nome completo é também dada por um número sequencial escolhido pelo grupo. Isto é útil, por exemplo, para fins de sincronização: se vários clientes querem obter um bloqueio em um recurso, eles podem criar simultaneamente um znode sequencial em um local: quem recebe o menor número tem direito ao bloquear.

Znodes efémeros

Também, um znode pode ser efêmero : isto significa que ele é destruído assim que o cliente que o criou se desconecta. Isto é principalmente útil para saber quando um cliente falhar, o que pode ser relevante quando o próprio cliente tem responsabilidades que devem ser tomadas por um novo cliente. Tomando o exemplo do bloqueio, assim que o cliente que tem o bloqueio desliga, os outros clientes podem verificar se têm direito ao bloquear.

Relógios

O exemplo relacionado com a desconexão do cliente pode ser problemático se precisarmos de pesquisar periodicamente o estado de znodes. Felizmente, ZooKeeper oferece um sistema de eventos onde um relógio pode ser definido em um znode. Estes relógios podem ser configurados para desencadear um evento se o znode é especificamente alterado ou removido ou crianças novas são criadas sob ele. Isto é claramente útil em combinação com as opções sequenciais e efêmeras para znodes.

Onde e como para o utilizar

Um exemplo canônico de Uso de Zookeeper é a computação de memória distribuída, onde alguns dados são compartilhados entre nós clientes e devem ser acessados/atualizados de uma forma muito cuidadosa para contabilizar a sincronização.

O ZooKeeper oferece a biblioteca para construir os seus primitivos de sincronização, enquanto a capacidade de executar um servidor distribuído evita o problema de um ponto de falha que você tem ao usar um repositório de mensagens centralizado (como corretor).

O Guarda Do Jardim zoológico é recurso-luz, o que significa que mecanismos como a eleição do líder, bloqueios, barreiras, etc. não estão já presentes, mas podem ser escritos por cima dos primitivos do tratador do zoológico. Se a API C / Java for demasiado pesada para os seus fins, deve confiar em bibliotecas construídas sobre tratadores de Jardim zoológico, tais como jaulas e especialmente curador.

Onde ler mais

À parte a documentação oficial, o que é bastante bom, sugiro que se Leia o Capítulo 14 de Hadoop: o Guia Definitivo tem ~35 páginas explicando essencialmente o que ZooKeeper faz, seguido por um exemplo de um serviço de configuração.
 438
Author: Luca Geretti, 2018-07-27 20:33:01

Zookeeper é um dos melhores servidores de código aberto e serviço que ajuda a coordenar de forma confiável processos distribuídos. Zookeeper é um sistema CP (refer CAP Theorem) que fornece consistência e tolerância de partição. A replicação do Estado Guardião do zoológico em todos os nós torna-o um serviço distribuído consistente.

Além disso, qualquer líder recém-eleito irá actualizar os seus seguidores com propostas em falta ou com um instantâneo do estado, se os seguidores tiverem muitas propostas. ausente.

O tratador do Jardim zoológico também fornece uma API que é muito fácil de usar. Este post, Zookeeper Java API examples, tem alguns exemplos se você estiver procurando por exemplos.

Então, onde usamos isto? Se o seu serviço distribuído necessitar de uma gestão de configuração centralizada, fiável e consistente, bloqueios, filas, etc, você vai encontrar Zookeeper uma escolha confiável.
 10
Author: Binu George, 2018-07-27 20:49:13
Eu entendo o tratador do zoológico em geral, mas tinha problemas com os Termos "quórum" e "cérebro dividido", então talvez eu possa compartilhar minhas descobertas com você (eu me considero também um leigo). Digamos que temos um grupo de Guardas zoológicos com 5 servidores. Um dos servidores tornar-se-á o líder e os outros tornar-se-ão seguidores.
  • Estes 5 servidores formam um quórum. Quórum significa simplesmente "estes servidores podem votar sobre quem deve ser o líder".

  • A votação terá lugar amanhã, às 12h00. baseado na maioria. A maioria simplesmente significa "mais de metade", então mais da metade do número de Servidores deve concordar para que um servidor específico se torne o líder.

  • Há uma coisa má que pode acontecer chamada "cérebro dividido". Um cérebro dividido é simplesmente isto, tanto quanto eu entendo: o conjunto de 5 servidores se divide em duas partes, ou vamos chamá-lo de "equipes de servidores", com talvez uma parte de 2 e o outro de 3 servidores. Esta é realmente uma situação ruim como se ambas as "equipes de servidor" devem executar uma ordem específica como você decidiria qual equipe deve ser preferida? Podem ter recebido Informações diferentes dos clientes. Então é realmente importante saber o que" equipe do servidor " ainda é relevante e qual pode/deve ser ignorado.

  • A Maioria também é a razão pela qual você deve usar um número ímpar de servidores. Se você tem 4 servidores e um cérebro dividido onde 2 servidores se separam, então ambas as "equipes de servidores" poderiam dizer: "Ei, nós queremos decidir quem é o líder!"mas como você deve decidir quais dois servidores você deve escolher? Com 5 servidores é simples: a equipe de servidores com 3 servidores tem a maioria e é permitido selecionar o novo líder.

  • Mesmo que você tenha apenas 3 servidores e um deles falhe o outro 2 ainda formar a maioria e pode concordar que um deles se tornará o novo líder.

Percebo que quando pensamos um dia e entendemos os Termos, já não é tão complicado. Espero que isso também ajude qualquer um em compreender estes Termos.
 7
Author: Invest, 2017-08-11 09:01:48

Zookeeper é um servidor de código aberto centralizado para manter e gerenciar informações de configuração, nomear convenções e sincronização para o ambiente de cluster distribuído. Zookeeper ajuda os sistemas distribuídos a reduzir a sua complexidade de gestão, proporcionando baixa latência e alta disponibilidade. Zookeeper foi inicialmente um sub-projeto para Hadoop, mas agora é um projeto de alto nível independente da Apache Software Foundation.

Mais Informações

 1
Author: neel4soft, 2015-08-20 11:34:48
Eu sugeriria os seguintes recursos:
  1. o papel: https://pdos.csail.mit.edu/6.824/papers/zookeeper.pdf
  2. a palestra oferecida pelo MIT 6.824 a partir das 36:00: https://youtu.be/pbmyrNjzdDk?t=2198
Sugiro ver o vídeo, ler o jornal e ver o vídeo outra vez. Seria mais fácil compreender Se conhecesses o Raft de antemão.
 1
Author: yyFred, 2020-03-25 16:49:02
A minha abordagem para entender o guardião do Zoo era brincar com o cliente do CLI. tal como descrito em Getting Started Guide and Command line interface A partir disto aprendi que a superfície do guarda-zoológico parece muito semelhante a um sistema de arquivos e os clientes podem criar e excluir objetos e ler ou escrever dados.

Comandos de exemplo CLI

create /myfirstnode mydata
ls /
get /myfirstnode
delete /myfirstnode

Tenta a ti próprio

Como criar um ambiente zookeper em minutos no docker para o windows, linux ou mac:

Uma vez estabelecido:

docker network create dn

Executar o servidor numa janela de terminal:

docker run --network dn --name zook -d zookeeper
docker logs -f zookeeper

Executar um cliente numa segunda janela de terminal:

docker run -it --rm --network dn zookeeper zkCli.sh -server zook

Ver também documentação da imagem no dockerhub

 1
Author: Michael S, 2020-12-27 21:00:47