分佈式Web應用----zookeeper基本工作原理

寫在前面

前面一篇文章簡單介紹了zookeeper的安裝,當安裝好了zookeeper後,我們可以通過zookeeper自帶的客戶端連接到zookeeper上,並對其進行操作,在對它進行操作前我們先要了解一些基本的知識。

zookeeper工作原理

這裏寫圖片描述

上圖爲zookeeper的節點結構,其中/爲zookeeper的根節點,每個節點可以擁有自己的子節點,子節點又可以有子節點,每個節點擁有一個值,zookeeper的工作就是圍繞對這些節點操作展開的。

節點分類

ZooKeeper 節點是有生命週期的,這取決於節點的類型。在 ZooKeeper 中,節點類型可以分爲持久節點(PERSISTENT )、臨時節點(EPHEMERAL),以及時序節點(SEQUENTIAL ),具體在節點創建過程中,一般是組合使用,可以生成以下 4 種節點類型。

  1. 持久節點(PERSISTENT)

    所謂持久節點,是指在節點創建後,就一直存在,直到有刪除操作來主動清除這個節點——不會因爲創建該節點的客戶端會話失效而消失。

  2. 持久順序節點(PERSISTENT_SEQUENTIAL)

    這類節點的基本特性和上面的節點類型是一致的。額外的特性是,在ZK中,每個父節點會爲他的第一級子節點維護一份時序,會記錄每個子節點創建的先後順序。基於這個特性,在創建子節點的時候,可以設置這個屬性,那麼在創建節點過程中,ZK會自動爲給定節點名加上一個數字後綴,作爲新的節點名。這個數字後綴的範圍是整型的最大值。

  3. 臨時節點(EPHEMERAL)

    和持久節點不同的是,臨時節點的生命週期和客戶端會話綁定。也就是說,如果客戶端會話失效,那麼這個節點就會自動被清除掉。注意,這裏提到的是會話失效,而非連接斷開。另外,在臨時節點下面不能創建子節點。

  4. 臨時順序節點(EPHEMERAL_SEQUENTIAL)

    可以用來實現分佈式鎖

zookeeper應用場景

  1. ZooKeeper master 選舉

  2. ZooKeeper 數據的發佈訂閱

  3. ZooKeeper 負載均衡

  4. ZooKeeper 實現分佈式鎖

  5. ZooKeeper 實現分佈式隊列

  6. ZooKeeper 實現命名服務

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