2016-12-26 55 views
1

我正在學習動物園管理員的主從模式。我只是有一個問題:如果主從站無法通信會發生什麼?

如果一個主人和一個奴隸不能互相溝通會發生什麼?像主人不能從奴隸得到ACK?奴隸重新啓動自己?

回答

1

這取決於法定人數如何分配。你可能知道動物園管理員作爲動物園管理員服務器的法定人數運作。如果兩臺服務器無法互相通信,則意味着存在網絡分區問題(一組服務器無法到達網絡不同部分的其他服務器)。由於我們在仲裁中使用的服務器數量爲奇數,因此將有兩個分區,一個分區大部分服務器,另一個分區少數。

如果領導者居多分區

仲裁將繼續擔任領導工作具有廣大的法定人數。在少數分區中,服務器將關閉並進入領導者選舉階段。以下文本引自Apache Zookeeper的user mail list中的郵件線程。

分區後,少數區域的所有服務器都會關閉並進入領導選舉階段。連接到這些服務器的所有客戶端會話 將斷開連接,並且將向其觀察者(如果有任何註冊的話)接收 「KeeperState.Disconnected」事件。

但ZooKeeper支持只讀服務器模式。在此模式下,即使服務器可能從法定分區中分配 ,客戶端也可以連接到只讀服務器 。

如果領導者是少數分區,

同樣,一個地區領導人選舉將在兩個分區和少數民族分區發生就無法選出一個領導者。所以會關機。多數派會選出一位新領導人並繼續運作。

在你的問題中,你所說的master cannot connect to slave是網絡分區的一個例子。主人(領導者)處於少數分區中,或者奴隸處於少數分區中。

希望你有這個想法:-)

相關問題