我最近了解了ZooKeeper及其设计。 我知道多个ZooKeeper服务器支持ZooKeeper服务,但是,有必要选择其中一个服务器作为该组的负责人。
接下来,我开始阅读LeaderLatch和LeaderElection的Apache策展人食谱,而不是谈论选择领导者,他们谈论选择一个过程作为领导者(组织者)。
我对此感到困惑。有人可以帮助并向我澄清为什么策展人食谱和ZooKeeper正在谈论两种不同的领导者?
如果他们确实不同,这些领导者如何相互联系?
答案 0 :(得分:3)
ZooKeeper的用户不关心拥有领导者的ZooKeeper集群。它是一个实现细节。 ZooKeeper服务器选择了一个领导者作为一种方法来强制实施ZooKeeper作为服务提供的一些一致性保证。
作为ZooKeeper的用户(或Curator的用户作为更好的API)你并不真正关心它。事实上,ZK没有公开这个实现细节 - 你不知道你是在与领导者或追随者交谈。
这个ZK内部领导者选举与一个用例ZooKeeper无关,因为服务提供了 - ZooKeeper用户的领导者选举。
如果您使用ZK,您可能自己构建分布式服务,您的服务分布在多台计算机上。与任何其他分布式系统一样,您可能会在某些时候遇到问题(例如任务协调),这通常由领导者选举模式解决:
在这种情况下,您可以继续自己实施一种列出的算法。更好的是 - 您可以使用像ZooKeeper这样的协调服务。在ZK api中,您可以使用顺序和短暂节点实现领导者选举。看看这个食谱:
如您所见,使用裸ZK api实现配方并非易事,因此Curator提供了一个更好的包装器,使您更容易使用。
总之,在谈论ZooKeeper中的领导者选举时,有两个不同的东西: