我最近一直在关注Zookeeper,并想知道当前是否有人使用它以及它们是专门用于存储的。
最常见的用例是配置信息,但是您存储了哪种数据和数据?
答案 0 :(得分:17)
HBase使用Zookeeper来协调其“头节点”在当前版本之前负责的活动。转向使用Zookeeper意味着中央控制不再是单点故障。
Zookeeper非常多才多艺;以下是使用它构建分布式并发队列的示例:
http://blog.cloudera.com/blog/2009/05/building-a-distributed-concurrent-queue-with-apache-zookeeper/
当然,您也可以使用它在分布式系统中创建资源锁等。
答案 1 :(得分:15)
老问题,但由于这个页面首先出现在谷歌搜索zookeeper用例,我认为最好给出一个更新的列表
答案 2 :(得分:14)
DOSGi的Apache CXF implementation使用zookeeper作为其服务注册存储库。单个容器具有分布式软件(dsw)捆绑包,该捆绑软件监听所有服务事件以及当服务状态发生变化时具有指示分发的属性。 dsw与发现包进行通信,在参考实现的情况下,它使用zookeeper将服务存储为临时节点。其他实例将查找节点结构的更改并在其本地系统上注册代理。最终结果是您可以编写简单的OSGi代码并最终实现透明分发。
答案 3 :(得分:14)
由ZooKeeper提供支持的免费软件项目:
由ZooKeeper支持的Apache项目:
来源: https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
答案 4 :(得分:10)
Norbert是可扩展生产系统的一个很好的例子。我一般,它集成了Netty,Protocol Buffers和Zookeeper 进入用于运行集群服务的轻量级框架。协议缓冲区用于指定服务API,Netty实现传输层抽象,Zookeeper本质上是容错发现服务。
每次启动服务实例时,Norbert都会将其注册为特定服务类型的可用实例。从实现的角度来看,它创建了两个Zookeeper树:
每个节点最重要的属性是用于连接到相应服务实例的URL。它支持客户端负载平衡 - Norbert客户端查找给定服务名称的URL列表,并尝试连接其中一个是某种顺序(例如循环或随机)。
答案 5 :(得分:5)
在Found上有一篇关于ZooKeeper的文章ZooKeeper - The King of Coordination。
答案 6 :(得分:4)
Solr也是working to integrate ZooKeeper。在这里,您可以看到它们用于动态配置,分片,SPOF消除(主/从选举),重新平衡等。
答案 7 :(得分:3)
Storm使用Zookeeper存储所有状态,以便它可以从任何(分布式)组件服务的中断中恢复。
这允许组件服务是无状态的,只需在需要配置数据时下载或与Zookeeper服务器同步。如果您曾经不得不恢复生产服务器,那么您将会知道这可能会让您感到头痛!
Kafka队列使用者可以使用Zookeeper存储队列消耗的信息(高水位线)。
答案 8 :(得分:2)
Zookeeper用于配置以外的许多其他事情。 以下是使用zookeeper的实现分布式原语的正式列表。
答案 9 :(得分:2)
在我的例子中,我们将配置文件存储在zookeeper集合中以供集群使用。 我们正在使用领导者 - >跟随者架构。因此,当一个动物园管理员关闭我们切换到另一个(复制模式)
答案 10 :(得分:1)
Neo4j使用Zookeeper作为他们的高可用性企业服务器! http://docs.neo4j.org/chunked/milestone/ha.html
答案 11 :(得分:1)
datomic使用apache zookeeper来管理基于riak的数据存储。
由于Riak目前仅支持最终的一致性,因此在Riak上运行的Datomic系统也使用Apache ZooKeeper,这是一种高度可用的协调服务。 Datomic使用ZooKeeper进行事务处理器故障转移协调,并使用需要使用CAS更新的每个数据库的少数密钥。来源:http://blog.datomic.com/2012/11/riak-and-couchbase-support.html
答案 12 :(得分:0)
这里有一些detail on how HBase uses ZooKeeper,包括他们将来打算如何使用它的信息。通常,他们通过使用ZooKeeper实现的Leader选举来使用它来消除区域服务器上的SPOF。