1. 程式人生 > >zookeeper初認識

zookeeper初認識

集群管理 分布式應用 目錄樹 判斷 down 並不是 通知 ast 種類型

zookeeper是什麽

zookeeper是一個分布式應用協調系統,它主要提供了命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等功能。

簡單的說,zookeeper=文件系統+通知機制。

  • zookeeper維護著一個類似文件系統的數據結構。每個目錄項被稱為znode,和文件系統一樣,我們能夠自由的增加、刪除znode,在一個zonde下增加、刪除子znode。
  • 客戶端註冊監聽它關心的目錄節點,當這個目錄節點發生變化時,zookeeper會通知客戶端。

zookeeper的主要操作就是圍繞目錄節點進行的:

  1. 創建節點
  2. 讀取節點數據
  3. 更新節點數據
  4. 刪除節點
  5. 監控節點變化

其中節點被組織成目錄樹的形式,每個節點下面都可以有一些子節點。

節點可以是以下四種類型:

  • PERSISTENT:持久化目錄節點,這個目錄節點存儲的數據不會丟失;
  • PERSISTENT_SEQUENTIAL:順序自動編號的目錄節點,這種目錄節點會根據當前已存在的節點數自動加1,然後返回給客戶端已經創建成功的目錄節點名;
  • EPHEMERAL:臨時目錄節點,一旦創建這個節點的客戶端與服務端的session超時,這個節點就會被自動刪除;
  • EPHEMERAL-SEQUENTIAL:臨時自動編號節點。

監控節點變化時,可以監控一個節點的變化,也可以監控一個節點下所有子節點的變化。

zookeeper能做什麽

  1. 命名服務
    在分布式系統中,經常需要給一個資源生成唯一的一個ID,在沒有中心管理節點的情況下生成這個ID並不是一件容易的事兒。zk就提供了這樣一個命名服務。
    一般是使用create方法創建一個自動編號的節點。
  2. 配置管理
    主要用於多個節點共享配置,並且在配置發生更新時,利用zk可以讓這些使用了這些配置的節點獲得通知,進行重新加載等操作。
  3. 集群管理
    集群管理主要有兩點:一是資源定位,二是集群選主。
    監聽是否有機器退出和加入、動態選舉Master(最小節點法、最大數據法)
  4. 分布式鎖
    實現起來和集群選主基本一致,都是創建一個自動編號的臨時節點,然後watch父節點,判斷自己是否是最小編號節點。
  5. 隊列管理
  • 同步隊列,當一個隊列的成員都聚齊時,這個隊列才可用,否則一直等待所有成員到達。
  • 隊列按照FIFO方式進行入隊和出隊操作。

zookeeper初認識