它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù)等
1.命名服務(wù) 2.配置管理 3.集群管理 4.分布式鎖 5.隊(duì)列管理
創(chuàng)新互聯(lián)公司專注于潁東企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站制作。潁東網(wǎng)站建設(shè)公司,為潁東等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
Client-Server模型:用于對(duì)分布式協(xié)調(diào)系統(tǒng)中的對(duì)象提供協(xié)調(diào)服務(wù);
Peer-to-Peer模型:用于在zookeeper集群內(nèi)交互數(shù)據(jù);
這種混合的體系結(jié)構(gòu),讓zookeeper既保持客戶端的簡(jiǎn)單化,又能夠在集群內(nèi)部保持一個(gè)良好的高可用機(jī)制;
zookeeper的兩種運(yùn)行模式:standalone 和 quorum
代表zookeeper由一個(gè)單一節(jié)點(diǎn)構(gòu)成,它的數(shù)據(jù)并不需要再多個(gè)節(jié)點(diǎn)之間復(fù)制;
該模式主要多用于生產(chǎn)環(huán)境,zookeeper有多個(gè)節(jié)點(diǎn)后構(gòu)成一個(gè)集群,通過zookeeper的Leader選舉、集群節(jié)點(diǎn)間的數(shù)據(jù)同步有關(guān);
當(dāng)才用quorum模式時(shí),它的基本運(yùn)轉(zhuǎn)流程是:
① 選舉
Leader
② 同步數(shù)據(jù)
③ 選舉
Leader
過程中算法有很多,但要達(dá)到的選舉標(biāo)準(zhǔn)是一致的;④ Leader要具有最高的zxid
⑤ 集群中大多數(shù)的機(jī)器得到相應(yīng)并
follow
選出的Leader
說明:
對(duì)于用戶的讀操作,zookeeper集群中的所有節(jié)點(diǎn)都可接收處理; 對(duì)于用戶的寫操作,zookeeper將它作為事務(wù)進(jìn)行處理,并只有Leader才能發(fā)起事務(wù);在每次提交之前,修改的數(shù)據(jù)要在集群中同步;
zookeeper是通過集中性的C/S架構(gòu)服務(wù)于客戶端的,采用的是點(diǎn)對(duì)點(diǎn)的Pair-Pair架構(gòu)在各節(jié)點(diǎn)間進(jìn)行同步數(shù)據(jù),zookeeper內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型采用了精簡(jiǎn)的方式提供給用戶使用
在數(shù)據(jù)結(jié)構(gòu)上,zookeeper采用的是樹形結(jié)構(gòu);樹種的節(jié)點(diǎn)被稱為znode
,在整棵樹種有著清晰的父子層次關(guān)系;
zookeeper對(duì)數(shù)據(jù)的修改都當(dāng)做一次事務(wù)來(lái)看待,每次的事務(wù)動(dòng)作都是原子操作,并分配一個(gè)唯一的zxid(zookeeper transacation id);
在每一個(gè)znode中都記錄了與之相關(guān)的zxid
;znode除了有效載荷數(shù)據(jù),還包括如下屬性:
czxid:引發(fā)當(dāng)前znode改變的zxid
mzxid:當(dāng)前znode上一次修改前的zxid
ctime:對(duì)znode事務(wù)操作所花費(fèi)的時(shí)間,單位是毫秒
mtime:操作上一次znode事務(wù)所花費(fèi)的時(shí)間,單位是毫秒
version:關(guān)聯(lián)到zxid,znode自身版本屬性,當(dāng)前znode修改的次數(shù)
cversion:znode子節(jié)點(diǎn)的修改次數(shù)
aversion:znode ACL(訪問列表)的修改測(cè)試
ephemeralOwner:記錄客戶端會(huì)話ID,如果是持久型znode 則為0
dataLength:znode數(shù)據(jù)字段的長(zhǎng)度
numChildren:znode子節(jié)點(diǎn)的個(gè)數(shù)
znode在創(chuàng)建的時(shí)候可以指定模式,可以用不同的模式組合成需要的分布式場(chǎng)景功能;
一個(gè)znode節(jié)點(diǎn)可以是持久的(Persistent),也可以是短暫的(Ephemera);
只有收到刪除命令后才能被刪除;
用于保存結(jié)構(gòu)信息;
會(huì)在客戶端與服務(wù)端之間保存的會(huì)話中斷時(shí)自動(dòng)刪除;
也能像持久型znode一樣被命令刪除;
客戶端與服務(wù)端之間一旦建立連接,則會(huì)有定期的心跳檢查以保證這個(gè)長(zhǎng)連接的存活
創(chuàng)建znode時(shí)會(huì)自動(dòng)分配一個(gè)唯一的遞增的整數(shù),這個(gè)正向序列可以作為路徑名稱的一部分;
例如:客戶端創(chuàng)建了一個(gè)序列znode為/woker/work-
,則zookeeper會(huì)自動(dòng)分配一個(gè)序列數(shù),如果是當(dāng)前znode下的第一個(gè)子節(jié)點(diǎn)則分配為1,路徑變?yōu)?code>/worker/work-1;序列節(jié)點(diǎn)最大的作用就是生成唯一名稱節(jié)點(diǎn),同時(shí)能夠提供節(jié)點(diǎn)間的創(chuàng)建次序信息
zookeeper的ACL建立在認(rèn)證與授權(quán)機(jī)制下,包含以下認(rèn)證方式:
1. digest:通過用戶名/密碼對(duì)客戶端進(jìn)行認(rèn)證; 2. sasl: 支持客戶端通過Kerberos認(rèn)證; 3. ip: 通過IP地址對(duì)客戶端進(jìn)行認(rèn)證;
在授權(quán)方面,ACL可以對(duì)znode的創(chuàng)建(子節(jié)點(diǎn))、讀取、寫入、刪除及管理(設(shè)置ACL)進(jìn)行控制
未完待續(xù)...