ZooKeeper核心概念和架構


ZooKeeper簡介

ZooKeeper是一個分布式應用程序協調服務,主要用於解決分布式集群中應用系統的一致性問題。它能提供類似文件系統的目錄節點樹方式的數據存儲,主要用途是維護和監控所存數據的狀態變化,以實現對集群的管理。

ZooKeeper應用場景:
 統一命名
 配置管理
 集群管理
 共享鎖
 隊列管理

ZooKeeper架構

ZooKeeper集群的總體架構如下圖:

ZooKeeper數據模型

ZooKeeper擁有樹形層次的數據模型,與標准的文件系統非常相似,ZooKeeper樹中的每個節點被稱為Znode。

Znode的主要特點如下:
(1) Znode中僅存儲與同步相關的數據,因此數據量很小,大概B到KB量級,例如狀態信息、配置內容、位置信息等。
(2) 一個Znode維護一個狀態結構,包括:版本號、ACL(訪問控制列表)變更、時間戳。Znode存儲的數據每次發生變化,版本號都會遞增,這樣客戶端就可以基於版本號檢索相關數據。
(3) 每個Znode都有一個ACL,用來限定該Znode可以被何種請求訪問。 客戶端可以在Znode上設置一個觀察者(Watcher),如果該Znode上的數據發生變更,ZooKeeper就會通知客戶端,從而觸發觀察者中實現的邏輯的執行。

ZooKeeper節點類型

ZooKeeper中節點主要有四種類型:
 持久節點(PERSISTENT)
 持久順序節點( PERSISTENT _SEQUENTIAL)
 臨時節點(EPHEMERAL)
 臨時順序節點( EPHEMERAL _SEQUENTIAL )

ZooKeeper觀察者模式

ZooKeeper允許客戶端向服務器注冊一個觀察者(Watcher),一旦服務器的狀態發生變化,ZooKeeper就會通知已經在它上面注冊的觀察者做出相應的反應。 Watcher機制主要包括客戶端線程、客戶端WatchManager和ZooKeeper服務器三部分。

ZooKeeper分布式鎖

在分布式環境下,為了保證數據的一致性,需要利用分布式鎖技術來保證只有固定數量的進程對數據進行修改。只有獲取鎖的客戶端可以對數據進行修改,其余客戶端只能暫時等待。

ZooKeeper分布式鎖機制的實現流程如下圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM