动物园管理员
DOSGi的Apache CXF implementation使用饲养员为它服务注册库。单独的容器有一个分布式软件(dsw)捆绑包,用于侦听所有服务事件以及何时服务状态发生变化,并具有指示分布的属性。 dsw与发现包协商,在参考实现情况下,该发现包使用zookeeper将服务存储为临时节点。其他实例将查找其本地系统上节点结构和注册代理的更改。最终的结果是您可以编写普通的OSGi,并以透明分发结束。
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。
Norbert是可扩展生产系统的一个很好的例子。总的来说,它将Netty,Protocol Buffers和Zookeeper 集成到一个轻量级框架中,用于运行集群服务。协议缓冲区用于指定您的服务API,Netty实现传输层抽象,Zookeeper本质上是一个容错发现服务。
每次启动服务实例时,Norbert会将其注册为特定服务类型的可用实例。从实现的角度来看,它创建了两个动物园管理员树:
- “/服务名称/成员”,它列出了服务
- 的所有已知实例“/服务名称/可用”列出了服务的当前可用的情况下
每个节点最重要的属性是用于连接到相应服务实例的url。它支持客户端负载平衡 - 一个Norbert客户端可以找到给定服务名称的URL列表,并尝试连接其中的一个是某种顺序(例如循环或随机)。
Zookeeper被用于配置以外的许多事情。 这是使用zookeeper实现分布式基元的官方列表。
- 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:
- AdroitLogic UltraESB
- Akka
- Eclipse Communication Framework
- Eclipse Gyrex
- GoldenOrb
- Juju
- Katta
- KeptCollections
- Mesos
- Neo4j
- Norbert
- Talend ESB
- redis_failover
Apache项目技术动物园管理员:
- Apache Accumulo
- Apache BookKeeper
- Apache CXF DOSGi
- Apache Flume
- Apache Hadoop MapReduce
- Apache HBase
- Apache Hedwig
- Apache Kafka
- Apache S4
- Apache Solr
来源:https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
在我的例子中,我们存储配置文件在饲养员合奏集群使用。 我们正在使用leader - > follower模式。所以,当一个饲养员下来,我们切换成另一种(复制模式)
它属于Hadoop技术组,这里有一个来自雅虎的用例,这很好 - http://developer.yahoo.net/blogs/hadoop/2009/05/using_zookeeper_to_tame_system.html – Jon 2009-09-25 20:57:41
这个问题有更多upvotes比所有答案的总和。 Zookeeper需要一个更好的用例wiki。 – mixdev 2013-04-28 05:23:27
查看Netflix如何使用它。 https://开头github上。com/Netflix/curator/wiki/Recipes Curator是Netflix ZK的封装库。 – eSniff 2013-10-28 18:04:06