天天看點

zookeeper應用場景

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方式進行入隊和出隊操作,例如實作生産者和消費者模型。

繼續閱讀