1. 程式人生 > >【分布式協調zookeeper】基礎篇

【分布式協調zookeeper】基礎篇

zookeeper 原理 架構模型

一、zookeeper介紹

 它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、名字服務、分布式同步、組服務等
zookeeper做了什麽?

1.命名服務 2.配置管理 3.集群管理 4.分布式鎖 5.隊列管理

二、zookeeper架構的架構模型

zookeeper的兩種模型的混合式:

Client-Server模型:用於對分布式協調系統中的對象提供協調服務;

Peer-to-Peer模型:用於在zookeeper集群內交互數據;

這種混合的體系結構,讓zookeeper既保持客戶端的簡單化,又能夠在集群內部保持一個良好的高可用機制;

zookeeper的兩種運行模式:standalone 和 quorum

standalone模式:

代表zookeeper由一個單一節點構成,它的數據並不需要再多個節點之間復制;

quorum模式:

該模式主要多用於生產環境,zookeeper有多個節點後構成一個集群,通過zookeeper的Leader選舉、集群節點間的數據同步有關;

當才用quorum模式時,它的基本運轉流程是:

① 選舉Leader

② 同步數據

③ 選舉Leader過程中算法有很多,但要達到的選舉標準是一致的;

④ Leader要具有最高的zxid

⑤ 集群中大多數的機器得到相應並follow選出的Leader

說明:

對於用戶的讀操作,zookeeper集群中的所有節點都可接收處理;
對於用戶的寫操作,zookeeper將它作為事務進行處理,並只有Leader才能發起事務;在每次提交之前,修改的數據要在集群中同步;

三、數據模型

zookeeper是通過集中性的C/S架構服務於客戶端的,采用的是點對點的Pair-Pair架構在各節點間進行同步數據,zookeeper內部的數據結構和數據類型采用了精簡的方式提供給用戶使用

在數據結構上,zookeeper采用的是樹形結構;樹種的節點被稱為znode,在整棵樹種有著清晰的父子層次關系;

zookeeper對數據的修改都當做一次事務來看待,每次的事務動作都是原子操作,並分配一個唯一的zxid(zookeeper transacation id);

在每一個znode中都記錄了與之相關的zxid;znode除了有效載荷數據,還包括如下屬性:

czxid:引發當前znode改變的zxid

mzxid:當前znode上一次修改前的zxid

ctime:對znode事務操作所花費的時間,單位是毫秒

mtime:操作上一次znode事務所花費的時間,單位是毫秒

version:關聯到zxid,znode自身版本屬性,當前znode修改的次數

cversion:znode子節點的修改次數

aversion:znode ACL(訪問列表)的修改測試

ephemeralOwner:記錄客戶端會話ID,如果是持久型znode 則為0

dataLength:znode數據字段的長度

numChildren:znode子節點的個數

1、持久型與短暫型的znode【對應於ephemeralOwner屬性】

znode在創建的時候可以指定模式,可以用不同的模式組合成需要的分布式場景功能;

一個znode節點可以是持久的(Persistent),也可以是短暫的(Ephemera);

區別:
持久型:

只有收到刪除命令後才能被刪除;

用於保存結構信息;

短暫型:

會在客戶端與服務端之間保存的會話中斷時自動刪除;

也能像持久型znode一樣被命令刪除;

客戶端與服務端之間一旦建立連接,則會有定期的心跳檢查以保證這個長連接的存活

2、序列znode

創建znode時會自動分配一個唯一的遞增的整數,這個正向序列可以作為路徑名稱的一部分;

例如:客戶端創建了一個序列znode為/woker/work-,則zookeeper會自動分配一個序列數,如果是當前znode下的第一個子節點則分配為1,路徑變為/worker/work-1;序列節點最大的作用就是生成唯一名稱節點,同時能夠提供節點間的創建次序信息

3、ACL【訪問列表】

zookeeper的ACL建立在認證與授權機制下,包含以下認證方式:

1. digest:通過用戶名/密碼對客戶端進行認證;
2. sasl: 支持客戶端通過Kerberos認證;
3. ip: 通過IP地址對客戶端進行認證;

在授權方面,ACL可以對znode的創建(子節點)、讀取、寫入、刪除及管理(設置ACL)進行控制


未完待續...

本文出自 “靠譜兒” 博客,請務必保留此出處http://liubao0312.blog.51cto.com/2213529/1939223

【分布式協調zookeeper】基礎篇