2013-03-29 15 views
1

據我所知,Chubby在任何時候都有5個胖乎乎的服務器。一個是主服務器,處理仲裁寫入的協調,另外4個服務器是隻讀的,並將寫入操作轉發給主服務器。寫入使用Paxos來保持一致性。爲什麼胖乎乎的鎖服務器不是多主?

有人可以向我解釋爲什麼主和4副本之間有區別。爲什麼不是胖乎乎的多主?這個問題也適用於Zookeeper。

回答

1

擁有一個主節點會更高效,因爲節點不必處理太多的爭用。

Chubby和Zookeeper都實現了一個分佈式狀態機,其中系統的要點是決定從一個狀態到下一個狀態轉換的總順序。當多個節點同時提出轉換時,它可能需要大量消息(理論上無限的消息)來解決爭用。

Paxos(並因此Chubby)使用稱爲「傑出領導者」的優化,其中副本轉發寫入傑出領導以減少爭用。 (我假設胖乎乎的複製品是這樣做的,如果不是,他們可以,但設計師只是把這個責任推給客戶。)Zookeeper也是這樣做的。

Chubby和Zookeeper實際上都是處理多個領導者,因爲他們必須處理一個不知道它已經死亡然後從死亡中回來的領導。對於Chubby來說,這是使用Paxos的關鍵:最終其中一名領導者將獲勝。 (理論上它可能不是,但我們的工程師會做一些實際的事情,比如隨機退避,以使這個概率小得可憐。)另一方面,Zookeeper爲每個領導者分配一個非遞減的id;任何非現任領導人的過渡都會被拒絕。這意味着當領導者去世時,Zookeeper必須暫停並在接受新的轉換之前進行重新配置階段。

相關問題