概念
介紹
zk是一個分布式系統(tǒng)的協(xié)調(diào)控制器,主要可以為分布式系統(tǒng)提供資源協(xié)調(diào)、數(shù)據(jù)同步/一致性服務(wù)。常用場景為注冊中心,分布式系統(tǒng)服務(wù)的維護
角色
zk中角色分為三種
- leader:集群中只有一個
- follower:從節(jié)點,有選取投票權(quán)
- obverser:觀察者(從節(jié)點),沒有選舉投票權(quán),只能提供讀服務(wù)
znode存儲類型
zk的數(shù)據(jù)以znode節(jié)點方式存儲在內(nèi)存中,znode為樹形結(jié)構(gòu),格式類似linux的文件系統(tǒng),也可以持久化到磁盤,分為四種類型
- 臨時性節(jié)點,客戶端會話失效(可能連接沒斷)則刪除
- 持久性節(jié)點,一直存在(默認方式)
- 臨時性順序節(jié)點,客戶端會話失效(可能連接沒斷)則刪除,節(jié)點名后面帶有序號后綴,不能有子節(jié)點
- 持久性順序節(jié)點,一直存在,節(jié)點名后面帶有序號后綴
acl權(quán)限
zk可以為znode節(jié)點提供權(quán)限功能,寫法為schema:不同schema的不同參數(shù):權(quán)限(增刪改查)
schema可取值:ip\digest\auth\world:anyone
工作原理/實現(xiàn)原理
- zk采用集群部署,每個server在內(nèi)存中都存儲了一份數(shù)據(jù),格式類似linux的文件系統(tǒng),數(shù)據(jù)可以持久化到磁盤
- zk在啟動之后會通過zab協(xié)議選取出一個leader,負責(zé)事務(wù)功能(寫操作)
- 當(dāng)客戶端寫操作時會發(fā)送到leader(發(fā)送到follower也會轉(zhuǎn)發(fā)給leader),leader將寫操作包裝為事務(wù)發(fā)給follower通過zab協(xié)議確定超過半數(shù)follower確認后認為該寫操作成功,否則為失敗
zab協(xié)議
崩潰恢復(fù)
主要指集群剛啟動或leader節(jié)點失效或過半follower失效情況下的leader選舉場景
https://zhuanlan.zhihu.com/p/27335748
原子廣播
當(dāng)客戶端寫操作時會發(fā)送到leader(發(fā)送到follower也會轉(zhuǎn)發(fā)給leader),leader將寫操作包裝為事務(wù)發(fā)給follower通過zab協(xié)議確定超過半數(shù)follower確認后認為該寫操作成功,否則為失敗
參考
http://www.rzrgm.cn/raphael5200/p/5285583.html