1. 程式人生 > >從paxos到zookeeper讀書筆記(第四章)

從paxos到zookeeper讀書筆記(第四章)

zookeeper提供分散式協調服務,提供諸如統一命名服務、配置管理和分散式鎖、分散式訊息等分散式的基礎服務。zookeeper的zab(zookeeper atomic broadCast),是paxos的一種改進。zookeeper是一個典型的分散式資料一致性的解決方案,分散式應用可以基於zookeeper實現釋出\訂閱、負載均衡、命名服務、分散式協調\通知、叢集管理/master選舉、分散式鎖、和分散式佇列等功能。

zookeeper可以保證各種分散式一致性問題:順序一致性、原子性、單一檢視、可靠性、實時性。

zookeeper的設計目標: 提供簡單的資料模型、可以構建叢集、順序訪問、高效能。

簡單的資料模型:zookeeper提供了一個共享的、樹型結構的名稱空間來進行相互協調,這些資料結構都存在記憶體中,可以提高吞吐量。

構建分散式叢集:


順序訪問:來自於client的事務,zookeeper都會分配一個全域性唯一的遞增ID,這個ID反應了客戶端執行的順序。

高效能:zookeeper將全部資料結構存在記憶體中,並直接服務於客戶端的非事務請求。

zookeeper概念:

叢集角色

在分散式系統中,典型的應用是master/slave 主從模式的架構,提供全域性寫操作的節點為master,通過非同步複製的節點叫做slave。在zookeeper中,提出了leader、Follower、Observer。follower選舉產生leader,observer提供讀服務,所以zookeeper適用於讀多寫少的服務。

回話角色:

回話(session):當zookeeper客戶端啟動的時候,會與zookeeper建立一個長連線,zookeeper能夠通過向client傳送心跳檢測client的狀態,通過zookeeper管理zookeeper的client(zookeeper的client為分散式應用的各個節點)。

資料節點:

在分散式應用中,一個是zookeeper管理的節點即為應用節點-機器節點,另一個節點型別為資料節點-znode,管理zookeeper資料模型的資料單元(zookeeper管理節點的資料)。zookeeper為樹型資料模型(Znode Tree) , 通過/分割的路徑就是一個ZNode,比如/foo/path1 , 為一個ZNode節點,儲存資料內容和屬性資訊。

版本:

zookeeper存放znode的版本。

watcher:

zookeeper允許使用者註冊事件,在某個時候觸發事件,分配給合適的client執行事件,watcher機制是zookeeper實現分散式協調服務的重要特徵。

ACL機制:

zookeeper提供類似linux的許可權控制機制。