Zookeeper在现实世界中的使用


122

我最近一直在看Zookeeper,想知道当前是否有人在使用它,以及他们专门用于存储什么。

最常见的用例是用于配置信息,但是要存储哪种数据和存储多少数据?


3
它配备了Hadoop的组的技术条件下,有从雅虎的使用情况在这里,是相当不错的- developer.yahoo.net/blogs/hadoop/2009/05/...
乔恩

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

10
这个问题比所有答案的总和还多。Zookeeper需要更好的用例Wiki。
mixdev

1
查看Netflix如何使用它。github.com/Netflix/curator/wiki/Recipes Curator是Netflix的ZK包装库。
eSniff

Answers:


13

DOSGi 的Apache CXF实现使用zookeeper为其服务注册存储库。各个容器具有一个分布式软件(dsw)捆绑包,该捆绑包侦听所有服务事件以及服务状态更改时的状态,该属性具有指示分发的属性。dsw与发现包进行通信,在参考实现情况下,该发现包使用zookeeper将服务存储为临时节点。其他实例将寻找对节点结构的更改并在其本地系统上注册代理。最终结果是您可以编码为普通的OSGi,并以透明的发行形式结束。


17



10

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

每次启动服务实例时,诺伯特都会将其注册为特定服务类型的可用实例。从实现的角度来看,它创建了两个Zookeeper树:

  • “ / ServiceName / members”列出了服务的所有已知实例
  • “ / ServiceName / available”,列出了服务的当前可用实例

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


6

有一篇很好的文章ZooKeeper- Elastic Cloud上有关ZooKeeper 的协调之王

例如,在Found公司,我们将ZooKeeper广泛用于发现,资源分配,领导者选举和高优先级通知。在本文中,我们将向您介绍“协调之王”,并仔细研究如何在Found公司使用ZooKeeper。



3
  • Storm许多公司使用(Twitter和Groupon是最知名的两家),并且依赖Zookeeper。
  • Kafka被Linkedin使用,并依赖Zookeeper。

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

这允许组件服务无状态,并且在需要配置数据时只需下载或与Zookeeper服务器同步即可。如果您曾经必须恢复生产服务器,那么您会知道这是多么令人头疼!

Kafka队列使用者可以使用Zookeeper来存储有关从队列中消耗了什么的信息(高水位标记)。






By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.