ZooKeeper系列 (一) zookeeper的概念

zookeeper是什麼

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

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

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

zookeeper提供什麼能力

zookeeper搭建的集羣能夠保證如下分佈式協議負載均衡

  1. 順序一致性

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

  1. 原子性

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

  1. 單一視圖

不管鏈接的是哪一個節點,效果都同樣性能

  1. 可靠性

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

  1. 實時性

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

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容許用戶註冊事件到指定節點,當特定時間觸發,事件通知會被髮送到具體的客戶端。

相關文章
相關標籤/搜索