一、簡介

什麼是Zookeeper?
Zookeeper是一個高效的分佈式協調服務,它暴露了一些公用服務,比如命名、配置、管理、同步控制、羣組服務等。我們可以使用Zookeeper來實現比如達成共識、集羣管理、leader選舉等
Zookeeper是一個高可用的分佈式管理與協調框架,基於ZAB算法(原子消息廣播協議)的實現。該框架能夠很好地保證分佈式環境中數據的一致性。也正是基於這樣的特性,使得Zookeeper稱爲了解決分佈式一致性問題的利器。

Zookeeper的特性

  • 順序一致性:從一個客戶端發起的事務請求,最終將會嚴格地按照其發起的順序被應用到Zookeeper中去
  • 原子性:所有事務請求的處理結果在整個集羣中所有機器上的應用情況是一致的、也即是要麼整個集羣所有的機器都成功應用了某一事務,要麼所有機器都沒有應用,不會出現部分機器應用了該事務,而另一部分沒有應用的情況。
  • 單一視圖:無論客戶端連接的是哪一個Zookeeper服務器,其看到的服務器端的數據模型都是一致的
  • 可靠性:一旦服務器成功地應用了一個事務,並完成對客戶端的響應,那麼該事務所引起的服務端狀態將會被一致保留下來。除非有另外一個事務對其更改
  • 實時性:一旦事務被成功應用,那麼客戶端就能立刻從服務器上獲取變更後的新數據,Zookeeper僅僅能保證在一段時間內,客戶端最終一定能從服務器端讀取最新的數據狀態
    這裏寫圖片描述
    Zookeeper會維護一個具有層次關係的數據結構,非常類似於一個linux的文件系統

每個子目錄想如one被稱作爲znode,這個znode是被它所在的路徑唯一標識,如該節點被標識爲/one
znode可以有自己誒單目錄,並且每個znode可以存儲數據,但是EPHEMERAL類型的目錄節點不能有子節點目錄
znode是有版本的,每個znode中存儲的數據可以有多個版本,也就是一個訪問路徑中可以存儲多份數據
znode可以是臨時節點,一旦創建這個znode的客戶端與服務器失去聯繫,這個znode也將自動刪除。Zookeeper的客戶端和服務器端採用長連接方式,每個客戶端和服務器端通過心跳來保持連接,這個連接狀態稱爲session,如果znode是臨時節點,這個session失效,znode也就刪除了。
znode可以被監控,包括這個目錄節點中存儲的數據的修改,子節點目錄的變化等,一旦變化可以通知設置監控的客戶端

Zookeeper根據其身份特性分爲三種:Leader Follower Observer。其中Follower和Observer又統稱爲Learner(學習者)
Leader:負責客戶端的writer類型請求
Follower:負責客戶端的reader類型請求,參與leader選舉等
Observer:特殊的Follower 其可以接受客戶端reader請求,但不參與選舉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章