繁体   English   中英

ZooKeeper食谱和Apache策展人

[英]ZooKeeper Recipes and Apache Curator

我试图准确理解Apache ZooKeeper(“ZK”)解决什么类型的问题,也许他们的食谱页面是最好的起点。

首先,我做了以下假设

  • ZooKeeper API(Java和C都有)公开了这7种简单方法 ,然后允许您构建自己的使用模式,称为“ZK Recipes”
  • 然后由您自己使用这些ZK Recipes来解决分布式编程中的问题
  • 或者,您可以使用Apache Curator附带的ZK Recipes,而不是构建您自己的ZK Recipes
  • 无论哪种方式,你都在使用ZK Recipes(再次,自己开发或由Curator提供)来解决分布式计算问题

我相信Apache Kafka就是一个例子,其中Kafka使用ZK创建一个分布式队列 (这是列出的ZK食谱之一)。 因此,如果我的假设是正确的,ZK公开那些API方法,Apache Kafka的创建者直接使用ZK或使用Curator来实现“Queue”ZK Recipe。

如果我上面的任何假设都是错误的,请先纠正我! 假设我或多或少走上正轨:

查看ZK食谱列表,我看到以下内容(非详尽无遗):

  • 障碍
  • 领导人选举

为了让我欣赏这些食谱和他们提出的解决方案,我首先需要了解他们解决的问题! 我理解锁定来自基本的Java并发,但我只是没有看到“分布式锁定”何时需要的用例。 对于领导选举,我所能想到的 - 作为首先需要它的一个用例 - 将是你正在构建一个你想要带有内置主/从或主要/辅助功能的应用程序。 也许在这种情况下,您可以使用ZK来实现自己的“领导者选举”配方,或者只是使用Curator的Leader Latch开箱即用。 至于障碍,我不知道这些与锁有什么不同。 所以我问:

  • 我的主/从或主要/次要问题是否是ZK领导人选举方案的准确用例?
  • 什么是分布式锁的例子? 它解决了什么问题?
  • 障碍同样:锁和障碍有什么区别?
  1. 是。 你的Zk领导人选举食谱示例是正确的。 一般来说,如果一个食谱已经存在,为什么要重写呢?

引用Zookeeper文档:

ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。

  1. 关于分布式锁 - 假设您有一个分布式系统,其中所有配置都保存在Zookeeper上,并且多个实体负责更新某个配置 - 在这种情况下,您希望配置更新是同步的。

  2. 关于屏障,我个人从来没有使用过它们 - 但是如果有锁,你需要获取锁定以实际在节点上做一些事情,这是一个等待它自由的障碍,但是一旦它空闲就不一定需要设置屏障。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM