ZooKeeper是一個開源的分散式協調器,是一個典型的分散式資料一致性解決方案,其設計目的是將複雜且容易出錯的分散式一致性服務封裝起來,構成一個高效可靠的系統,並以一系列簡單易用的原子操作提供給使用者使用。
ZooKeeper 主要特性
zookeeper本身就是分散式程序,只要半數以上節點存活,zookeeper就能正常服務。
為了確保高可用,通常以叢集的形態來部署zookeeper,這樣只要叢集中大部分機器可用,那麼zookeeper本身就可用。
zookeeper將資料保存在記憶體中,這保證了高吞吐和低延遲
zookeeper是高效能的,在讀多於寫的程式中尤其的高效能,因為寫會導致所有伺服器間同步狀態。
zookeeper有臨時節點概念。當建立臨時節點的客戶端會話保持活動,臨時節點就一直存在。而當會話終結時,臨時節點就被刪除了。
zookeeper底層只提供了兩個功能。 1 管理使用者程式提交的數據, 2 為使用者程式提交的資料節點提供監聽服務。
ZooKeeper 特點
ZooKeeper是以Fast Paxos演算法為基礎的,Paxos 演算法存在活鎖的問題,即當有多個proposer交錯提交時,有可能互相排斥導致沒有一個proposer能提交成功,而Fast Paxos作了一些優化,透過選舉產生一個leader (領導者),只有leader才能提交proposer,具體演算法可見Fast Paxos。因此,要弄清楚ZooKeeper首先得對Fast Paxos有所了解。 [2]
ZooKeeper的基本運作流程:
#1、選舉Leader。
2、同步資料。
3、選舉Leader過程中演算法很多,但要達到的選舉標準是一致的。
4、Leader要具有最高的執行ID,類似root權限。
5、叢集中大多數的機器得到回應並接受選出的Leader。
推薦教學:《PHP》
以上是ZooKeeper是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!