Real World Use of Zookeeper

I've been looking at Zookeeper recently and wondered whether anybody was using it currently and what they were specifically using it for storing.

The most common use case is for configuration information, but what kind of data and how much data are you storing?

62008 次浏览

HBase 使用 Zookeep 来协调其“头部节点”在当前版本之前负责的活动。转向使用动物保护者意味着中央控制不再是单点故障。

Zookeep 非常多才多艺; 下面是使用它构建分布式并发队列的示例:

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

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

DOSGi 的 Apache CXF 实现使用 zookeep 作为其服务注册存储库。每个容器都有一个分布式软件包(dsw) ,该软件包监听所有服务事件以及服务状态更改时的情况,该服务状态更改具有指示分布的属性。Dsw 与发现包进行对话,在引用实现案例中,发现包使用 zookeep 将服务存储为临时节点。其他实例将查找节点结构的更改并在其本地系统上注册代理。最终的结果是,您可以编写普通的 OSGi 代码,并最终实现透明分发。

这里有一些 详细介绍 HBase 如何使用 ZooKeeper,包括他们将来打算如何使用它的信息。一般来说,他们使用它来消除 SPOF 的区域服务器通过领导人选举实施使用 ZooKeeper。

Solr 也是 致力于整合《动物园管理员》。这里可以看到它们用于动态配置、分片、 SPOF 消除(主/从选举)、重新平衡等。

Norbert 是可扩展生产系统的一个很好的例子,它集成了 Netty、协议缓冲和 zookeep 成为一个轻量级框架,用于运行集群服务。协议缓冲是用来指定你的服务 API 的,Netty 实现了传输层的抽象,而 zookeep 本质上是一个容错的发现服务。

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

  • "/ServiceName/members" which lists all known instances of the service
  • "/ServiceName/available" which lists currently available instances of the service

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

这是个老问题了,但是因为这个页面是在谷歌搜索动物园管理员用例时首先出现的,所以我认为最好给出一个更新的列表

  1. 维基百科
  2. 动物园管理员维基
  3. 真正的用户

除了配置之外,还有很多其他用途。 下面是使用 zookeep 实现分布式原语的官方列表。

Https://zookeeper.apache.org/doc/current/recipes.html

Neo4j 使用动物园守护者的高可用性企业服务器

  • Storm 公司数目使用(Twitter 和 Groupon 是其中较为知名的两个) ,并依赖于 Zookeep。
  • Kafka 由 Linkedin 使用,并依赖于 Zookeep。

Storm 使用 Zookeep 存储所有状态,这样它就可以从其任何(分布式)组件服务的中断中恢复。

这允许组件服务是无状态的,并且在需要配置数据时可以简单地下载或与 Zookeep 服务器同步。如果您曾经不得不恢复生产服务器,您将知道这是多么头痛!

Kafka 队列消费者可以使用 Zookeep 来存储从队列中消费的信息(高水位线)。

Datomic 使用 Apache ZooKeeper 管理基于 riak 的数据存储。

因为 Riak 目前只支持最终一致性,所以在 Riak 上运行的 datom 系统也使用了 Apache ZooKeeper,这是一种高可用性的协调服务。Datom 使用 ZooKeeper 进行事务处理器故障转移协调,并为每个数据库提供需要用 CAS 更新的少量密钥。来源: http://blog.datomic.com/2012/11/riak-and-couchbase-support.html

ZooKeeper 提供的自由软件项目:

由 ZooKeeper 提供的 Apache 项目:

来源: < a href = “ https://cwiki.apache.org/confluence/display/zookeeeper/PoweredBy”> https://cwiki.apache.org/confluence/display/zookeeper/poweredby

在我的例子中,我们将配置文件存储在动物园管理员集合中以供集群使用。 We are using leader -> follower schema . So when one zookeeper down we are switched for another one (replicated mode)

有一篇关于弹性云动物园管理员的很好的文章 动物园管理员-协调之王

At Found, for example, we use ZooKeeper extensively for discovery, 资源分配、领导者选举和高优先级通知。 在本文中,我们将向您介绍这个协调之王和 仔细看看我们如何使用发现动物园管理员