动物园管理员

问题描述:

的真实世界使用最近我一直在看Zookeeper,不知道是否有人目前正​​在使用它,他们是专门用它来存储。动物园管理员

最常见的情况是配置信息,但多少数据你存储什么样的数据和?

+3

它属于Hadoop技术组,这里有一个来自雅虎的用例,这很好 - http://developer.yahoo.net/blogs/hadoop/2009/05/using_zookeeper_to_tame_system.html – Jon 2009-09-25 20:57:41

+9

这个问题有更多upvotes比所有答案的总和。 Zookeeper需要一个更好的用例wiki。 – mixdev 2013-04-28 05:23:27

+1

查看Netflix如何使用它。 https://开头github上。com/Netflix/curator/wiki/Recipes Curator是Netflix ZK的封装库。 – eSniff 2013-10-28 18:04:06

DOSGi的Apache CXF implementation使用饲养员为它服务注册库。单独的容器有一个分布式软件(dsw)捆绑包,用于侦听所有服务事件以及何时服务状态发生变化,并具有指示分布的属性。 dsw与发现包协商,在参考实现情况下,该发现包使用zookeeper将服务存储为临时节点。其他实例将查找其本地系统上节点结构和注册代理的更改。最终的结果是您可以编写普通的OSGi,并以透明分发结束。

我不知道它是如何使用的细节,但我知道,HBase最新版本(一个开源的BigTable实现)使用的ZooKeeper。

HBase使用Zookeeper协调活动,它的“头节点”负责在当前版本之前。转向使用Zookeeper意味着中央控制不再是单一的失败点。

动物园管理员是非常灵活的;这里是用它来建立一个分布式并发队列的例子:

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

你当然也可以用它来创建资源锁等,在分布式系统中。

这里的一些detail on how HBase uses ZooKeeper,包括他们如何打算将来使用它的信息。通常他们通过使用ZooKeeper实现的领导者选举来使用它来消除区域服务器上的SPOF。

Solr也是working to integrate ZooKeeper。在这里,您可以看到它们用于动态配置,分片,SPOF消除(主/从选举),重新平衡等。

Norbert是可扩展生产系统的一个很好的例子。总的来说,它将Netty,Protocol Buffers和Zookeeper 集成到一个轻量级框架中,用于运行集群服务。协议缓冲区用于指定您的服务API,Netty实现传输层抽象,Zookeeper本质上是一个容错发现服务。

每次启动服务实例时,Norbert会将其注册为特定服务类型的可用实例。从实现的角度来看,它创建了两个动物园管理员树:

  • “/服务名称/成员”,它列出了服务
  • 的所有已知实例“/服务名称/可用”列出了服务的当前可用的情况下

每个节点最重要的属性是用于连接到相应服务实例的url。它支持客户端负载平衡 - 一个Norbert客户端可以找到给定服务名称的URL列表,并尝试连接其中的一个是某种顺序(例如循环或随机)。

老问题,但由于该页面出现首先在谷歌搜索饲养员使用的情况下,我想这将是最好给的更新列表

  1. wikipedia
  2. zookeeper wiki
  3. real users

Zookeeper被用于配置以外的许多事情。 这是使用zookeeper实现分布式基元的官方列表。

http://zookeeper.apache.org/doc/trunk/recipes.html

Neo4j的使用动物园管理员的高可用性的企业级服务器! http://docs.neo4j.org/chunked/milestone/ha.html

  • Storm用于以一种number of companies(Twitter和团购是两个更好已知的),并依赖于动物园管理员。
  • Kafka由Linkedin使用,依靠Zookeeper。

Storm使用Zookeeper存储所有状态,以便它可以从其任何分布式组件服务中断中恢复。

这允许组件服务是无状态的,并且在需要配置数据时简单地下载或与Zookeeper服务器同步。如果你曾经需要恢复一台生产服务器,你将会知道这可能是一件多么令人头疼的事!

Kafka队列使用者可以使用Zookeeper来存储队列消耗的信息(高水位标记)。

datomic使用apache zookeeper来管理基于riak的数据存储。

因为了Riak支持只有在这个时候最终一致性,上了Riak运行Datomic系统还采用Apache的ZooKeeper的,高度可用的协调服务。 Datomic使用ZooKeeper进行交易者故障转移协调以及需要使用CAS更新每个数据库的少数密钥。来源:http://blog.datomic.com/2012/11/riak-and-couchbase-support.html

Zookeeper不用于存储数据的,它只是用于存储节点。它用于检查客户端是否可用。

在我的例子中,我们存储配置文件在饲养员合奏集群使用。 我们正在使用leader - > follower模式。所以,当一个饲养员下来,我们切换成另一种(复制模式)

有一个关于在发现ZooKeeper的好文章ZooKeeper - The King of Coordination