原文格式能夠訪問:https://www.rockysky.techhtml
Zookeeper是一個分佈式系統協調器,其自己並不直接實現上述的任何一個分佈式系統的基本操做。Zookeeper自己其實就是一個經過Raft共識機制協同的分佈式鍵值對文件存儲系統。Zookeeper的文件以樹狀形式存儲,每一個節點均可以存儲數據,每一個節點叫作一個znode,以下圖所示:node
和普通的文件結構不一樣,Zookeeper沒有目錄的概念,每一個節點均可以存儲數據。服務器
Zookeeper的節點分爲兩種主要的類型,即持久性節點和易失性節點,分佈式
Zookeeper支持一種watches機制。客戶端能夠給znode設定watch機制,一旦這個znode被更新,就會觸發通知機制發送消息給客戶端,同時刪除這個watch。若是ZooKeeper服務器自己掛掉了,那客戶端會直接收到本地通知。性能
Zookeeper自己被設計爲一個很是簡單,高速和可靠的服務。從而爲各種分佈式系統提供高級別和負責的分佈式系統基本操做。對於分佈式系統的CAP分類中,ZooKeeper是一種CP系統,重點保證的是強一致性。包括如下的特色:測試
順序一致性:客戶端對節點的更新必定會保證其最終更新前後順序的的一致性spa
原子性:對znode的更新只會有成功,失敗兩種狀態,不會有中間結果設計
單點一致性:客戶端對zookeeper集羣中任何一節點看到的znode結構和數據徹底相同htm
高可靠性:一旦對znode更新成功,其結果會一直保持,直到下一次變動blog
時效性:在必定時間段,確保系統數據最新(up-to-date)
不過須要注意的是Zookeeper不確保數據的可用性,必需要等到全部ZooKeeper集羣節點都同步成功,數據更新纔會確認操做成功。這是纔可以讀取這個數據。時效性是值得可以確保在必定的時間段內能夠完成數據跟新和同步。
Zookeeper經過API提供服務,提供如下幾個API。
在大量讀和少許寫入的狀況先,Zookeeper性能是比較高的。
官方數據顯示,Zookeeper選舉主節點的時間大概在200ms,當節點重新恢復後,整個系統性能能夠迅速恢復。
原文出處:https://www.cnblogs.com/yangjian2006/p/12373994.html