溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

【分布式協(xié)調(diào)zookeeper】基礎(chǔ)篇

發(fā)布時間:2020-07-20 00:31:39 來源:網(wǎng)絡(luò) 閱讀:1442 作者:次渠龍哥 欄目:建站服務(wù)器

一、zookeeper介紹

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

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

二、zookeeper架構(gòu)的架構(gòu)模型

zookeeper的兩種模型的混合式:

Client-Server模型:用于對分布式協(xié)調(diào)系統(tǒng)中的對象提供協(xié)調(diào)服務(wù);

Peer-to-Peer模型:用于在zookeeper集群內(nèi)交互數(shù)據(jù);

這種混合的體系結(jié)構(gòu),讓zookeeper既保持客戶端的簡單化,又能夠在集群內(nèi)部保持一個良好的高可用機(jī)制;

zookeeper的兩種運(yùn)行模式:standalone 和 quorum

standalone模式:

代表zookeeper由一個單一節(jié)點構(gòu)成,它的數(shù)據(jù)并不需要再多個節(jié)點之間復(fù)制;

quorum模式:

該模式主要多用于生產(chǎn)環(huán)境,zookeeper有多個節(jié)點后構(gòu)成一個集群,通過zookeeper的Leader選舉、集群節(jié)點間的數(shù)據(jù)同步有關(guān);

當(dāng)才用quorum模式時,它的基本運(yùn)轉(zhuǎn)流程是:

① 選舉Leader

② 同步數(shù)據(jù)

③ 選舉Leader過程中算法有很多,但要達(dá)到的選舉標(biāo)準(zhǔn)是一致的;

④ Leader要具有最高的zxid

⑤ 集群中大多數(shù)的機(jī)器得到相應(yīng)并follow選出的Leader

說明:

對于用戶的讀操作,zookeeper集群中的所有節(jié)點都可接收處理;
對于用戶的寫操作,zookeeper將它作為事務(wù)進(jìn)行處理,并只有Leader才能發(fā)起事務(wù);在每次提交之前,修改的數(shù)據(jù)要在集群中同步;

三、數(shù)據(jù)模型

zookeeper是通過集中性的C/S架構(gòu)服務(wù)于客戶端的,采用的是點對點的Pair-Pair架構(gòu)在各節(jié)點間進(jìn)行同步數(shù)據(jù),zookeeper內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型采用了精簡的方式提供給用戶使用

在數(shù)據(jù)結(jié)構(gòu)上,zookeeper采用的是樹形結(jié)構(gòu);樹種的節(jié)點被稱為znode,在整棵樹種有著清晰的父子層次關(guān)系;

zookeeper對數(shù)據(jù)的修改都當(dāng)做一次事務(wù)來看待,每次的事務(wù)動作都是原子操作,并分配一個唯一的zxid(zookeeper transacation id);

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

czxid:引發(fā)當(dāng)前znode改變的zxid

mzxid:當(dāng)前znode上一次修改前的zxid

ctime:對znode事務(wù)操作所花費(fèi)的時間,單位是毫秒

mtime:操作上一次znode事務(wù)所花費(fèi)的時間,單位是毫秒

version:關(guān)聯(lián)到zxid,znode自身版本屬性,當(dāng)前znode修改的次數(shù)

cversion:znode子節(jié)點的修改次數(shù)

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

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

dataLength:znode數(shù)據(jù)字段的長度

numChildren:znode子節(jié)點的個數(shù)

1、持久型與短暫型的znode【對應(yīng)于ephemeralOwner屬性】

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

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

區(qū)別:
持久型:

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

用于保存結(jié)構(gòu)信息;

短暫型:

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

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

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

2、序列znode

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

例如:客戶端創(chuàng)建了一個序列znode為/woker/work-,則zookeeper會自動分配一個序列數(shù),如果是當(dāng)前znode下的第一個子節(jié)點則分配為1,路徑變?yōu)?code >/worker/work-1;序列節(jié)點最大的作用就是生成唯一名稱節(jié)點,同時能夠提供節(jié)點間的創(chuàng)建次序信息

3、ACL【訪問列表】

zookeeper的ACL建立在認(rèn)證與授權(quán)機(jī)制下,包含以下認(rèn)證方式:

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

在授權(quán)方面,ACL可以對znode的創(chuàng)建(子節(jié)點)、讀取、寫入、刪除及管理(設(shè)置ACL)進(jìn)行控制


未完待續(xù)...

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI