ZooKeeper系列 (一) zookeeper的概念

zookeeper是什麼

定義:zookeeper是一個開源的分佈式協調服務,一個典型的分佈式數據一致性解決方案。

前世今生:Yahoo創建,最初爲 hadoop的子項目,是google Chubby的開源實現,現爲Apache的頂級項目。

分佈式應用程序可以基於zookeeper實現數據發佈訂閱、負載均衡、命名服務、分佈式鎖、集羣管理等一系列功能。

zookeeper提供什麼能力

zookeeper搭建的集羣可以保證以下分佈式協議

  1. 順序一致性

從同一個客戶端發起的多個事務請求,將會嚴格按照發起順序應用到各個節點

  1. 原子性

所有事務請求的處理結果在集羣中所有機器的應用情況一致。所有機器要麼全部應用,要麼全部不應用。

  1. 單一視圖

無論連接的是哪個節點,效果都一樣

  1. 可靠性

一旦一個事務被應用,那麼該事物狀態會被保持

  1. 實時性

zookeeper保證一定時間段後,客戶端從服務端讀取到最新狀態

zookeeper的特點

###數據模型簡單

zk的數據模型是一個共享的、樹樹型結構的名字空間。由一系列ZNode組成,ZNode被稱爲數據節點,具有層級關係。zk將全量數據存儲在內存中,以此來實現提高服務器吞吐,減少延遲的目的

可構成集羣

zk集羣由一組機器構成,3~5臺即可,組成zk集羣的每臺機器在內存中維護當前的服務器狀態,並且每臺機器之間都互相保持着通信。集羣中只要超過一般的機器能正常工作,那整個集羣就能正常對外服務

順序訪問

對於來自客戶端的每個更新請求,zk都會分配一個全局唯一的遞增編號,事務操作將按照這個編號按照先後順序執行,且該特性可被實用於其他用途。

高性能

全量數據都存儲在內存中,並直接服務於客戶端的所有非事務請求,尤其適合讀操作爲主的場景。

zookeeper的基本概念

zk的概念此處只做基本介紹和簡單講解,後續做詳細講解

集羣角色

  • Leader

一個,提供讀寫能力

  • Follower

多個,提供讀能力,選舉Leader能力

  • Observer

多個,提供讀能力,不參與選舉

會話

zk客戶端和服務器之間是TCP長連接。sessionTimeout設置一個會話超時時間,連接異常斷開時,只要在超時時間內連接上任意一臺zk節點,之前的會話依然有效。

節點

1.機器節點

構成集羣的機器

2.數據節點 ZNode

ZNode數據節點,數據模型中的數據單元。數據模型是一棵樹,由斜槓(/)分割路徑,保存數據內容和屬性。可分爲持久節點和臨時節點兩類

版本

每個ZNode上面都有一個stat的數據結構,記錄3個數據版本:

  1. version:當前ZNode版本
  2. cversion:當前ZNode子節點的版本
  3. aversion:當前ZNode的ACL版本

ACL

(access control lists) 權限控制清單

  • CREATE: 創建子節點權限
  • READ: 獲取節點數據和子節點列表的權限
  • WRITE: 更新節點數據的權限
  • DELETE: 刪除子節點的權限
  • ADMIN: 設置節點ACL的權限

create和delete都是針對子節點的權限控制

Watcher

事件監聽。zk的重要特性,zk允許用戶註冊事件到指定節點,當特定時間觸發,事件通知會被髮送到具體的客戶端。

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