动物园pipe理员的真实世界使用
最近我一直在看Zookeeper ,想知道现在是否有人使用它,以及他们是如何专门使用它来存储的。
最常见的用例是configuration信息,但是您要存储什么样的数据和多less数据?
DOSGi的Apache CXF实现为其服务注册库使用zookeeper。 单独的容器有一个分布式软件(dsw)包,用于监听所有服务事件,以及何时服务状态发生变化,具有指示分布的属性。 dsw与发现包协商,在参考实现的情况下,它使用zookeeper将服务存储为临时节点。 其他实例将查找其本地系统上节点结构和注册代理的更改。 最终的结果是你可以编写普通的OSGi,并以透明的分布结束。
HBase使用Zookeeper协调活动,其“头节点”在当前版本之前负责。 转向使用Zookeeper意味着中央控制不再是一个单一的失败点。
动物园pipe理员是非常灵活的; 下面是使用它来构build分布式并发队列的一个例子:
http://blog.cloudera.com/blog/2009/05/building-a-distributed-concurrent-queue-with-apache-zookeeper/
您当然也可以在分布式系统中使用它来创build资源locking等。
老问题,但自从这个页面出现在谷歌search动物园pipe理员用例首先,我觉得这是最好给一个更新的列表
- 维基百科
- zookeeper wiki
- 真正的用户
由ZooKeeper支持的免费软件项目:
- AdroitLogic UltraESB
- 阿卡
- Eclipse通信框架
- 日食Gyrex
- GoldenOrb
- 且具
- 凯塔
- KeptCollections
- Mesos
- Neo4j的
- 诺伯特
- Talend ESB
- redis_failover
Apache项目Powered by ZooKeeper:
- Apache Accumulo
- Apache BookKeeper
- Apache CXF DOSGi
- Apache Flume
- Apache Hadoop MapReduce
- Apache HBase
- Apache Hedwig
- 阿帕奇卡夫卡
- Apache S4
- Apache Solr
来源: https : //cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
诺伯特是一个可扩展的生产系统的好例子。 一般来说,它将Netty,Protocol Buffers和Zookeeper集成到一个运行集群服务的轻量级框架中。 协议缓冲区用于指定您的服务API,Netty实现传输层抽象,Zookeeper本质上是一个容错发现服务。
每次启动服务实例时,Norbert都将其注册为特定服务types的可用实例。 从实施的angular度来看,它创build了两个Zookeeper树:
- “/ ServiceName / members”列出所有已知的服务实例
- “/ ServiceName / available”列出当前可用的服务实例
每个节点最重要的属性是用于连接到相应服务实例的url。 它使客户端负载平衡 – 一个诺伯特客户端find一个给定的服务名称的url列表,并尝试连接到其中的一个是一些命令(例如循环或随机)。
Solr也正在整合ZooKeeper 。 在这里你可以看到他们正在使用dynamicconfiguration,分片,SPOF消除(主/从选举),重新平衡等。
有一篇很好的文章ZooKeeper -关于ZooKeeper 的协调之王 。
- Storm被许多公司所使用 (Twitter和Groupon是其中两个最为人熟知的公司)并依靠Zookeeper。
- 卡夫卡被Linkedin使用,依靠Zookeeper。
Storm使用Zookeeper来存储所有状态,以便它可以从其任何分布式组件服务中断中恢复。
这允许组件服务是无状态的,并且在需要configuration数据时简单地下载或与Zookeeper服务器同步。 如果你曾经不得不恢复生产服务器,你会知道这是多么令人头疼!
卡夫卡队列消费者可以使用Zookeeper来存储队列消耗的信息(高水位标记)。
除了configuration之外,Zookeeper被用于许多事情。 这里是使用zookeeper实现分布式基元的官方列表。
在我的情况下,我们将configuration文件存储在zookeeper集合中以用于集群使用。 我们正在使用领导者 – >追随者模式。 所以当一个动物园pipe理员下来,我们切换到另一个(复制模式)
我不知道如何使用它的具体细节,但我知道最新版本的HBase (一个开源的BigTable实现)使用ZooKeeper。
Neo4j使用Zookeeper他们的高可用性企业服务器! http://docs.neo4j.org/chunked/milestone/ha.html
datomic使用apache zookeeper来pipe理基于riak的数据存储。
由于Riak目前只支持最终的一致性,所以在Riak上运行的Datomic系统也使用Apache ZooKeeper这个高度可用的协调服务。 Datomic使用ZooKeeper进行交易者故障转移协调,以及每个数据库需要用CAS更新的less数密钥。 来源: http : //blog.datomic.com/2012/11/riak-and-couchbase-support.html
这里有一些关于HBase如何使用ZooKeeper的细节 ,包括他们打算如何使用它的信息。 通常他们通过使用ZooKeeper实现的Leaderselect来消除区域服务器上的SPOF。
Zookeeper不用于存储数据,它只是用于存储节点。 它用来检查客户端是否可用。