Zookeeper應用場景

2021-09-26 10:17:30 字數 1653 閱讀 1455

zookeeper 分布式服務框架是 apache hadoop 的乙個子專案,主要是用來解決分布式應用中經常遇到的一些資料管理問題。

如:集群管理、統一命名服務、分布式配置管理、分布式訊息佇列、分布 式鎖、分布式通知協調等。

越來越多的分布式計算開始強依賴zk,比如storm、hbase

zookeeper對分布式開發帶來很多便利,用zk的獨有特性巧妙地解決了很多難題; 很多分布式技術用到zookeeper或多或少特性,尤其是新生代分布式技術幾乎都會依賴zookeeper特性,如hbase、火爆的storm。

zookeeper名字空間由節點znode構成,其組織方式類似檔案系統,其中各個節點相當於目錄和檔案,通過路徑作為唯一標識。與檔案系統不同的是,每個節點具有與之對應的資料內容,同時也可以具有子節點。

zookeeper用於儲存協調資料,如狀態、配置、位置等資訊,每個節點儲存的資料量很小,kb級別。

節點維護乙個狀態stat結構(包括資料變化的版本號、acl變化、時間戳),以允許快取驗證與協調更新。每當節點資料內容改變,多乙個版本號,類似hbase。客戶端獲取資料的同時也會獲取資料版本號。節點的資料內容以原子方式讀寫。

節點具有乙個訪問控制列表(accesscontrol list - acl)來約束訪問操作,即具有許可權控制。

watches:zookeeper對node的增、刪、改、查都可觸發監聽

watch事件是一次性觸發器,當watch監視的資料發生變化時,通知設定了該watch的client,即watcher

watch事件非同步傳送至觀察者

watch是一次性觸發的並且在獲取watch事件和設定新watch事件之間有延遲,所以不能可靠的觀察到節點的每一次變化

客戶端監視乙個節點,總是先獲取watch事件,再發現節點的資料變化

watch事件的順序對應於zookeeper服務所見的資料更新的順序

流行的應用場景

1、分布式應用配置管理

發布與訂閱即所謂的配置管理,顧名思義就是將資料發布到zk節點上,供訂閱者動態獲取資料,實現配置資訊的集中式管理和動態更新。例如全域性的配置資訊,位址列表等就非常適合使用。

2、name service

這個主要是作為分布式命名服務,通過呼叫zk的create node api,能夠很容易建立乙個全域性唯一的path,這個path就可以作為乙個名稱。序列化節點

3、分布式通知/協調

zookeeper中特有watcher註冊與非同步通知機制,能夠很好的實現分布式環境下不同系統之間的通知與協調,實現對資料變更的實時處理。

使用方法:通常是不同系統都對zk上同乙個znode進行watch,監聽znode的變化(包括znode本身內容及子節點的),其中乙個系統update了 znode,那麼另乙個系統能夠收到通知,並作出相應處理。

3、分布式鎖

分布式鎖,這個主要得益於zookeeper為我們保證了資料的強一致性,zk集群中任意節點(乙個zk server)上的相同znode的資料是一定是相同的。

鎖服務可以分為兩類,乙個是保持獨佔,另乙個是控制時序。

4、集群管理

hbase master選舉則是zookeeper經典的使用場景;

storm集群管理

5、分布式佇列

佇列方面,一種是常規的先進先出佇列,另一種是要等到佇列成員聚齊之後的才統一按序執行。對於第二種先進先出佇列,增加分布式鎖服務以控制時序場景

Zookeeper應用場景

zookeeper是乙個高可用的分布式資料管理與系統協調框架。基於對paxos演算法的實現,使該框架保證了分布式環境中資料的強一致性,也正是基於這樣的特性,使得zookeeper能夠應用於很多場景。網上對zk的使用場景也有不少介紹,本文將結合作者身邊的專案例子,系統的對zk的使用場景進行歸類介紹。值...

Zookeeper應用場景

分布式佇列 fifo 先進先出 barrier 同步佇列 共享鎖集群管理 leader選舉 命名服務 分布式應用配置項的管理等 fifo設計思路 1.在 queue fifo的目錄下建立 sequential 型別的子目錄 x i 這樣就能保證所有成員加入佇列時都是有編號的。2.出佇列時通過 get...

ZooKeeper典型應用場景

zookeeper 是乙個開源的高可用的分布式資料管理與系統協調框架,基於對 paxos 演算法的實現,保證了分布式環境中資料的強一致性。發布與訂閱模型 發布者發布資料到 zk 節點上,供訂閱者動態獲取資料。在資料量很少,但是資料更新快的場景下 訊息中介軟體中的發布者和訂閱者的負載均衡,linked...