java - Uso no mundo real do zoológico




configuration apache-zookeeper (9)

A implementação do Apache CXF do DOSGi usa o zookeeper para seu repositório de registro de serviço. Contêineres individuais possuem um pacote de software distribuído (dsw) que atende a todos os eventos de serviço e quando um status de serviço é alterado com uma propriedade indicando a distribuição. O dsw fala com o pacote de descoberta que, no caso de implementação de referência, usa o zookeeper para armazenar o serviço como nós efêmeros. Outras instâncias procurarão alterações na estrutura do nó e registrarão os proxies em seus sistemas locais. O resultado final é que você pode codificar para o OSGi simples e acabar com uma distribuição transparente.

Eu estive olhando para o Zookeeper recentemente e me perguntei se alguém estava usando atualmente e o que eles estavam especificamente usando para armazenar.

O caso de uso mais comum é para informações de configuração, mas que tipo de dados e quantos dados você está armazenando?



O HBase usa o Zookeeper para coordenar as atividades de seu "nó principal" antes da versão atual. A mudança para usar o Zookeeper significa que o controle central não é mais um ponto único de falha.

Zookeeper é muito versátil; Aqui está um exemplo de como usá-lo para construir uma fila concorrente distribuída:

http://blog.cloudera.com/blog/2009/05/building-a-distributed-concurrent-queue-with-apache-zookeeper/

Você também pode usá-lo para criar bloqueios de recursos, etc., em um sistema distribuído.




Pergunta antiga, mas como essa página aparece primeiro em uma pesquisa no Google por casos de uso de zookeeper, imaginei que seria melhor fornecer uma listagem atualizada

  1. wikipedia
  2. wiki do zookeeper
  3. usuários reais

Norbert é um bom exemplo de um sistema de produção escalável. Em geral, integra Netty, Protocol Buffers e Zookeeper em uma estrutura leve para executar serviços em cluster. Buffers de protocolo são usados ​​para especificar sua API de serviço, o Netty implementa abstrações de camada de transporte e o Zookeeper é essencialmente um serviço de detecção tolerante a falhas.

Toda vez que uma instância de serviço é iniciada, o Norbert a registra como uma instância disponível de um determinado tipo de serviço. Do ponto de vista da implementação, cria duas árvores Zookeeper:

  • "/ ServiceName / members", que lista todas as instâncias conhecidas do serviço
  • "/ ServiceName / available", que lista as instâncias atualmente disponíveis do serviço

A propriedade mais importante para cada nó é a URL a ser usada para conectar-se à instância de serviço correspondente. Ele permite o balanceamento de carga no lado do cliente - um cliente Norbert localiza a lista de URLs para um determinado nome de serviço e a tentativa de conectar-se a um deles é uma ordem (por exemplo, round-robin ou aleatório).


A datomic usa o apache zookeeper para gerenciar o armazenamento de dados baseado em riak.

Como o Riak suporta apenas consistência eventual neste momento, um sistema Datomic em execução no Riak também utiliza o Apache ZooKeeper, um serviço de coordenação altamente disponível. A Datomic usa o ZooKeeper para coordenação de failover de transator e para o conjunto de chaves por banco de dados que precisa ser atualizado com o CAS. fonte: http://blog.datomic.com/2012/11/riak-and-couchbase-support.html


  • Storm é usado por várias empresas (sendo o Twitter eo Groupon dois dos mais conhecidos) e conta com o Zookeeper.
  • Kafka é usado pelo Linkedin e depende do Zookeeper.

Storm usa o Zookeeper para armazenar todo o estado para que ele possa se recuperar de uma interrupção em qualquer um de seus serviços de componentes (distribuídos).

Isso permite que os serviços do componente sejam sem estado e simplesmente baixem ou sincronizem com os servidores do Zookeeper quando os dados de configuração forem necessários. Se você já teve que recuperar um servidor de produção, você sabe o que isso pode ser uma dor de cabeça!

Kafka consumidores da fila do Kafka podem usar o Zookeeper para armazenar informações (marca d'água alta) sobre o que foi consumido na fila.





distributed