zookeeper:基於觀察者模式設計的分佈式服務管理框架

zookeeper:

   1. 從設計模式角度來看,是一個基於觀察者模式設計的分佈式服務管理框架,管理分佈式環境中的數據,用來解決分佈式集羣中應用系統的一致性問題。他能提供類似於文件系統的目錄節點樹的方式的數據存儲。但是zk並不是用來專門存儲數據的,它的作用主要是用來維護和監控你存儲的數據的狀態變化。通過監控這些數據狀態的變化,從而可以達到基於數據的集羣管理

    2. 數據模型:zk會維護一個具有層次關係的數據結構,它非常類似於一個標準的文件系統。

(1)每個子目錄如nameserver都被稱爲znode, 這個znode是被它所在的路徑的唯一標識,如server1這個znode的標識爲/nameserver/server1

(2)znode可以有子節點目錄,每個znode可以存儲數據

(3)znode是有版本的,每個znode中存儲的數據可以有多個版本,也就是一個訪問路徑中可以存儲多份數據 

(4)znode 可以是臨時節點,一旦創建這個 znode 的客戶端與服務器失去聯繫,這個 znode 也將自動刪除,Zookeeper 的客戶端和服務器通信採用長連接方式,每個客戶端和服務器通過心跳來保持連接,這個連接狀態稱爲 session,如果 znode 是臨時節點,這個 session 失效,znode 也就刪除了

(5)znode 的目錄名可以自動編號,如 App1 已經存在,再創建的話,將會自動命名爲 App2

(6)znode 可以被監控包括這個目錄節點中存儲的數據的修改,子節點目錄的變化等,一旦變化可以通知設置監控的客戶端,這個是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基於這個特性實現的,

3. 節點的類型:

    持久節點PERSISTENT, 臨時節點EPHEMERAL, 時序節點SEQUENTIAL

4. 集羣管理,zk的Leader Election是如何實現的

   選出一個Master Server, 它是一個時序節點,因爲可以給每臺server編號,我們可以選擇當前是最小編號的Server爲Master, 假如這個最小的編號死去,由於是EPLEMERAL節點,死去的server對應的節點也被刪除,所以列表中又出現了一個最小編號的節點,就選擇這個節點爲當前Master,這樣就實現了動態選擇Master

參考:https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html

https://blog.csdn.net/heyutao007/article/details/38741207

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章