最近我一直在研究Zookeeper,想知道是否有人正在使用它,以及他们具体用它来存储什么。
最常见的用例是用于配置信息,但您存储了哪种类型和多少数据呢?
最近我一直在研究Zookeeper,想知道是否有人正在使用它,以及他们具体用它来存储什么。
最常见的用例是用于配置信息,但您存储了哪种类型和多少数据呢?
ZooKeeper支持的自由软件项目:
ZooKeeper支持的Apache项目:
来源: https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
HBase使用Zookeeper来协调其当前版本之前“主节点”负责的活动。使用Zookeeper意味着中央控制不再是单点故障。
Zookeeper非常灵活;以下是一个使用它构建分布式并发队列的示例:
http://blog.cloudera.com/blog/2009/05/building-a-distributed-concurrent-queue-with-apache-zookeeper/
当然,您也可以在分布式系统中使用它来创建资源锁等。
虽然这是一个老问题,但由于此页面在谷歌搜索中排名第一,涉及到zookeeper使用案例,我认为最好提供一个更新的清单
Apache CXF实现的DOSGi使用Zookeeper作为其服务注册库。每个容器都有一个分布式软件(DSW)捆绑包,用于侦听所有服务事件,并在服务状态发生更改时处理具有指示分发的属性的服务。DSW与发现捆绑包进行通信,在参考实现中,发现捆绑包使用Zookeeper将服务存储为临时节点。其他实例将查找节点结构的更改并在其本地系统上注册代理。最终结果是您可以编写普通的OSGi代码,并获得透明的分发。
Norbert 是一个可扩展的生产系统的良好示例。一般来说,它将Netty、Protocol Buffers和Zookeeper集成到一个轻量级框架中,用于运行集群服务。使用 Protocol Buffers 指定服务 API,Netty 实现传输层抽象和 Zookeeper 是一个容错的发现服务。
每次启动服务实例时,Norbert 将其注册为特定服务类型的可用实例。从实现角度来看,它创建了两个 Zookeeper 树:
每个节点最重要的属性是用于连接到相应服务实例的 URL。它实现了客户端负载平衡 - Norbert 客户端找到给定服务名称的 URL 列表,并尝试按某种顺序(例如循环或随机)连接其中一个 URL。
有一篇很好的文章《ZooKeeper - 协调之王》介绍了Elastic Cloud上的ZooKeeper。
例如,在Found中,我们广泛使用ZooKeeper进行发现、资源分配、领导者选举和高优先级通知。在本文中,我们将向您介绍这位协调之王,并仔细研究我们如何在Found中使用ZooKeeper。
在我的情况下,我们将配置文件存储在zookeeper集合中,以供群集使用。 我们使用领导者-追随者模式。因此,当一个zookeeper停机时,我们会切换到另一个(复制模式)。