zookeeper-統一命名服務
1)在分布式環境下,經常需要對應用/服務進行統一命名,便于識别不同服務。
類似于域名與ip之間對應關系。
通過名稱來擷取資源或服務的位址等資訊。
2)按照層次結構組織服務/應用名稱。
它可以将服務名稱以及位址資訊寫到zookeeper,用戶端通過zookeeper擷取服務清單。
2.配置管理
1)分布式環境下,經常需要配置檔案管理和同步
一個叢集中,所有節點的配置資訊是一緻的。
我們對配置檔案修改後,希望能夠快速同步到各個節點
2)配置管理可交由zookeeper實作
可将配置資訊寫入zookeeper上的一個znode
各個節點監聽這個znode
一旦znode中的資料被修改zookeeper将通知各個節點
3.叢集管理
1)分布式環境中,我們需要實時掌握每個節點的狀态。
可根據節點實時狀态做出一些調整。
2)可交由zookeeper實作
可将節點資訊寫入zookeeper上的一個znode
監聽這個znode可擷取它的實時狀态變化
3)典型應用
HBase中Master狀态監控與選舉
4.分布式通知與協調
1)分布式環境中,經常存在一個服務需要知道它所管理的子服務的狀态
NameNode需知道各個Datanode的狀态
ResourceManager需知道各個NodeManager的狀态
2)zookeeper可以實作心跳檢測機制,實作資訊推送,它相當于一個釋出/訂閱系統。
5.分布式鎖
1)zookeeper是強一緻性
2)實作鎖的獨占性
3)控制鎖的時序
6.分布式隊列
分布式隊列分為兩種:
1)當一個隊列的成員都聚齊時,這個隊列才可用,否則一直等待所有成員到達,這種是同步隊列
一個job由多個task組成,隻有所有任務完成後,job才運作完成。
可為job建立一個job目錄,然後在該目錄下,為每個完成的task建立一個臨時的znode,
一旦臨時節點數目達到task總數,則表明job運作完成。
2)隊列按照fifo方式進行入隊和出隊操作,例如實作生産者和消費者模型。