zookeeper學習筆記系列
Zookeeper 學習筆記(一)概述
Zookeeper 學習筆記(二)內部原理
Zookeeper 學習筆記(三)zookeeper安裝
Zookeeper 學習筆記(四)zookeeper集群客戶端命令操作
Zookeeper 學習筆記(五)面試題
zookeeper是一個開源的分布式服務管理框架,為分布式應用提供協調服務的Apache專案,主要用來解決分布式集群中應用系統的一致性問題,
ZooKeeper本質上是一個分布式的小檔案存盤系統,提供基于類似于檔案系統的目錄樹方式的資料存盤,并且可以對樹中的節點進行有效管理,從而用來維護和監控你存盤的資料的狀態變化,通過監控這些資料狀態的變化,從而可以達到基于資料的集群管理,
zookeeper作業機制
- 觀察者模式的分布式服務管理框架
- 存盤和管理大家關心的資料,然后接受觀察者的注冊
- 一旦資料發生變化,zookeeper將通知觀察者們
- Zookeeper = 檔案系統(管理關心的資料,如服務器串列和在線情況)+通知機制
zookeeper集群
如下圖,zookeeper中一般有2n+1個服務器節點,客戶端連接其中某一個服務器可以執行讀寫資料,也可以注冊觀察資料的變化,

特點
-
主從機制:zookeeper是一個leader,多個follower的集群
-
半數機制:集群中只要有半數以上節點存在,zookeeper集群就能正常運行
-
全域資料一致:每個server(節點)都保存同一份資料副本,客戶端連接哪一個都一樣
-
更新請求順序執行:來自同一個client的更新請求順序依次執行
-
**原子性:**只執行完全成功或者失敗回溯
-
實時性:Zookeeper保證客戶端將在一個時間間隔范圍內獲得服務器的更新資訊,或者服務器失效的資訊,
-
可靠性:如果訊息被其中一臺服務器接受,那么將被所有的服務器接受,
-
順序性
:包括全域有序和偏序兩種:
- 全域有序是指如果在一臺服務器上訊息a在訊息b前發布,則在所有Server上訊息a都將在訊息b前被發布;
- 偏序是指如果一個訊息b在訊息a后被同一個發送者發布,a必將排在b前面,
集群角色

Leader:
- 事務請求(寫操作)的唯一調度和處理者,保證集群事務處理的順序性;集群內部各個服務器的調度者,
- 對于create, setData,delete等有寫操作的請求,則需要統一轉發給leader處理,leader需要決定編號、執行操作,這個程序稱為一個事務,
Follower:
- 處理客戶端非事務(讀操作)請求,轉發事務請求給Leader;參與集群Leader選舉投票,
zookeeper資料結構
zookeeper的每一個節點存盤的內容都相同,其存盤的內容其實為一個樹狀圖的資料結構,如下:

- 初始化的時候有一個根節點 /
- 整體上為一顆樹
- 每個節點ZNode可以通過路徑唯一標識
- 每個ZNode內部可以存盤資料
- 每個Znode默認存1MB資料
應用場景
- 統一命名服務:在分布式環境下,需要對服務進行唯一標識
- 統一配置管理:組態檔需要對于分布式環境一致,同時修改一個節點,全域要同步
- 統一集群管理:實時節點狀態變化
- 服務器動態上下線:客戶端實時觀察服務器的狀態變化
- 軟負載均衡:在zookeeper中記載每臺服務器的訪問記錄,讓訪問數最少的服務器去處理最新的請求
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/413310.html
標籤:其他
