2016-05-04 67 views
2

我最近了解到ZooKeeper及其設計。 我明白一個ZooKeeper服務是由多個ZooKeeper服務器支持的,但是,有必要選擇其中一個服務器作爲組的負責人。當ZooKeeper在ZooKeeper服務器中有領導者選舉時,爲什麼策展人會在'流程'中進行領導者選舉?

接下來,我開始通過LeaderLatch和LeaderElection的阿帕奇館長食譜去的,而不是談論選擇的領導者,他們談論選擇過程的領導者(組織者)。

我對此感到困惑。有人可以幫助並向我澄清爲什麼策展人配方和ZooKeeper談論兩種不同類型的領導者?

如果確實它們不同,那麼這些領導者又是如何相互關聯的呢?

回答

3

動物園管理員的用戶不關心有一個領導者的ZooKeeper集羣。它的一個實現細節。 ZooKeeper服務器選擇一個領導者作爲一種強制ZooKeeper作爲服務提供的一致性保證的方式。

您的動物園管理員的用戶(或用戶館長作爲一個更好的API)真的不關心這個。事實上,ZK並沒有公開這個實現細節 - 你不知道你是在跟一個領導還是跟隨者交談。

這ZK內部領導人選舉無關,與作爲服務提供了一個用例的ZooKeeper - 領導人選舉的動物園管理員的用戶。

如果您使用ZK,你可能建立自己的分佈式服務,爲您服務是跨越多臺機器分佈。正如任何其他分佈式系統,你會面對的通常是由地區領導人選舉模式解決了在某些時候(如任務協調)一個問題:

在這種情況下,你可以繼續並自己實現一個列出的算法。更好 - 你可能會使用像ZooKeeper這樣的協調服務。在ZK api中,您可以使用順序節點和短暫節點來執行領導選舉。看看這個食譜:

正如你看到的,配方是不平凡的使用裸ZK API來實現,所以策展人提供了一個更好的包裝,使您更容易。

綜上所述,談論ZooKeeper的領導人選舉時,有兩種不同的東西:由ZK服務器本身之間的內部完成,作爲一種機制

  • 領導人選舉,以實現強一致性
  • 領導人選舉提供給ZooKeeper用戶的功能,需要使用ZK原語手動實現,或者用作Curator庫中的可用配方
+0

謝謝。你有任何公開的鏈接或文件有這些信息嗎?到目前爲止,這只是我的口頭表達。即使我的同事們最終告訴我這種差異,但是,我沒有在ZooKeeper和Curator文檔中找到這些差異。 – DolphinJava

+0

沒有什麼比官方ZooKeeper和館長文檔。 ZooKeeper管理員指南是學習服務器集羣的好地方,http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html,食譜文檔描述了領導者選舉https://zookeeper.apache.org/doc/主幹/ recipes.html#sc_leaderElection。 – igorbel

相關問題