我试图理解完全 Apache ZooKeeper(“ZK”)解决了哪些类型的问题,也许他们的Recipes page是最好的起点。
首先,我正在进行以下假设:
我相信Apache Kafka就是一个例子,Kafka使用ZK创建distributed Queue(这是列出的ZK食谱之一)。因此,如果我的假设是正确的,ZK公开了那些API方法,Apache Kafka的创建者直接使用ZK或使用Curator来实现“队列”ZK配方。
如果我上述任何假设都有误,请先纠正我!假设我或多或少走上正轨:
查看ZK Recipes列表,我看到以下内容(非详尽无遗):
为了让我欣赏这些食谱和他们提出的解决方案,我首先需要了解他们解决的问题!我理解锁定来自基本的Java并发,但我只是没有看到“分布式锁定”何时需要的用例。对于领导选举,我所能想到的 - 作为首先需要的用例 - 如果你正在构建一个你想要带有内置主/从的应用程序或主要/次要能力。也许在这种情况下,您可以使用ZK来实现自己的“领导者选举”配方,或者只是使用Curator的Leader Latch开箱即用。至于障碍,我不知道这些与锁有什么不同。所以我问:
答案 0 :(得分:6)
引用Zookeeper文档:
ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。
关于分布式锁 - 假设您有一个分布式系统,其中所有配置都保存在Zookeeper上,并且多个实体负责更新某个配置 - 在这种情况下,您希望配置更新为同步。
关于屏障,我个人从来没有使用过它们 - 但是有了锁,你需要获取锁实际上在节点上做某事,一个等待它自由但不一定需要设置屏障的屏障一旦它是免费的。