您好,登錄后才能下訂單哦!
它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、名字服務、分布式同步、組服務等
1.命名服務 2.配置管理 3.集群管理 4.分布式鎖 5.隊列管理
Client-Server模型:用于對分布式協調系統中的對象提供協調服務;
Peer-to-Peer模型:用于在zookeeper集群內交互數據;
這種混合的體系結構,讓zookeeper既保持客戶端的簡單化,又能夠在集群內部保持一個良好的高可用機制;
zookeeper的兩種運行模式:standalone 和 quorum
代表zookeeper由一個單一節點構成,它的數據并不需要再多個節點之間復制;
該模式主要多用于生產環境,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子節點的個數
znode在創建的時候可以指定模式,可以用不同的模式組合成需要的分布式場景功能;
一個znode節點可以是持久的(Persistent),也可以是短暫的(Ephemera);
只有收到刪除命令后才能被刪除;
用于保存結構信息;
會在客戶端與服務端之間保存的會話中斷時自動刪除;
也能像持久型znode一樣被命令刪除;
客戶端與服務端之間一旦建立連接,則會有定期的心跳檢查以保證這個長連接的存活
創建znode時會自動分配一個唯一的遞增的整數,這個正向序列可以作為路徑名稱的一部分;
例如:客戶端創建了一個序列znode為/woker/work-
,則zookeeper會自動分配一個序列數,如果是當前znode下的第一個子節點則分配為1,路徑變為/worker/work-1
;序列節點最大的作用就是生成唯一名稱節點,同時能夠提供節點間的創建次序信息
zookeeper的ACL建立在認證與授權機制下,包含以下認證方式:
1. digest:通過用戶名/密碼對客戶端進行認證; 2. sasl: 支持客戶端通過Kerberos認證; 3. ip: 通過IP地址對客戶端進行認證;
在授權方面,ACL可以對znode的創建(子節點)、讀取、寫入、刪除及管理(設置ACL)進行控制
未完待續...
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。