zookeeper入門【筆記】

【參考】https://blog.csdn.net/liyiming2017/article/details/83035157
Zookeeper 對分佈式的協調 使用共享存儲方式,zookeeper 不直接暴露分佈式服務所欲要的原語以及調用方法
Zookeeper 高可用、高性能 且一致性對的開源協調服務 提供分佈式鎖服務。不會因爲一個節點錯誤而崩潰 一致性 可用性 容錯性採用的協議 Zab
Zookeeper 提供的服務通過 數據結構+原語+watcher機制

在這裏插入圖片描述

1.Znode

Zookeeper中 信息被保存在數據節點上znode
在這裏插入圖片描述

(1)Master 存儲當前主節點信息
(2)Workers 下每一個znode代表從節點 子znode上存儲數據
(3)Tasks 下面每個子node代表人物 自弄得存儲的信息如 cmd 代表內容內容
(4)Assign 下面每個子znode代表一個從節點任務集合
例:/assign/worker-1 代表worker-1這個從節點任務集合
Znode通過路徑引用 路徑時絕對的必須由/來開頭 必須保證唯一性 zookeeper中路徑由unicode字符串組成
“/zookeeper” 用來保存管理信息
每個 zookeeper的命名空間 znode 具有文件和目錄特性 既能項文件一樣維護數據 元信息 ACL 時間戳 又能像目錄一樣作爲路徑標識的一部分。
每個znode三部分組成
(1)stat 狀態信息 描述 znode版本 權限
(2)Data znode關聯數據
(3)Children 該znode下子節點
每個節點存儲數據被原子性操作 讀與寫操作獲取節點秀該機誒單所有的數據。每個節點擁有自己的ACL(訪問控制列表)規定用戶的權限

2.持久節點 和 臨時節點

持久節點persistent 只能通過delete刪除
臨時節點ephemeral在創建該機誒單客戶端奔潰關閉 自動刪除 不允許擁有子節點

3.有序節點

Znode可以被設置有序節點,有序節點 被分配唯一一個單調遞增的證書 對於父節點唯一

4.API

Create /path data 創建一個/path的znode 數據爲data
Delete /path 刪除/path的znode
Exists /path 檢查書否存在 /path 的znode
setData /path data 設置/path的znode數據爲data
getData /path 返回/path znode得數據
GetChildren /path 返回所有子節點列表

5. 觀察與通知

zookeeper採用了通知的機制。客戶端向zookeeper請求,在特定的znode設置觀察點(watch)。當該znode發生變化時,會觸發zookeeper的通知,客戶端收到通知後進行業務處理。觀察點觸發後立即失效。所以一旦觀察點觸發,需要再次設置新的觀察點。
Zookeeper 只能保證最終一致性無法保證強一致性

6.版本

每一個znode都有版本號,隨着每次數據變化自增 setData和delete ,使用版本號作爲參數,當傳入版本號與服務器不一致調用失敗
當多個zookeeper客戶端同時對一個znode操作時,版本將會起到作用,假設c1,c2同時往一個znode寫數據,c1先寫完後版本從1升爲2,但是c2寫的時候攜帶版本號1,c2會寫入失敗。

7.法定人數

Zookeeper服務器運行兩種模式
(1)獨立模式
(2)仲裁模式
複製所有服務器的數據數,避免讓客戶端等待所有複製完成的時間等待,引入法定人數,保證zookeeper正常工作時必須有效運行的服務器數量,遵循多數原則。遵循多數原則(法定人數大於服務器數量一半)

在這裏插入圖片描述
例如我們有一個5臺服務器的zookeeper集羣,法定人數爲3,只要任何3個服務器保存了數據,客戶端就會收到確認。只要有3臺服務器存活,整個zookeeper集羣就是可用的。

8.會話

客戶端與ziikeeoer發送任何請求前 需要和zookeeper集羣建立會話,客戶端提交給zookeeper的所有操作關聯在一個會話上。當一個會話終止時會話期間創建的臨時節點消失。
如果因爲當前服務器原因無法通信,會話江北同名的轉移給另外一臺zookeeper服務器
會話請求FIFO順序執行

8.1會話聲明週期與狀態

Connecting
Connected
Closed
Not_connected

Watch觸發器

Zookeeper可以爲所有的讀操作設置watch
讀操作包括 exists() getChildren() getData()
watch事件是一次性觸發器,當watch的對象狀態發生改變將會觸發此對象watch所對應的事件watch事件將被異步發送給客戶端。同時zookeeper爲watch提供有序的一致性保證。
(1)watch類型
A.數據watch(data watches):getData和exists負責設置數據watch
B.孩子watch(child watches):getChildren負責設置孩子watch

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