摘要:臨時節(jié)點臨時節(jié)點的生命周期和會話保持一致。授權(quán)對象授權(quán)對象指的是權(quán)限賦予的用戶或一個指定實體。參與選舉的投票。狀態(tài)變更如果是服務(wù)器運行期間進(jìn)行選舉,需要對非服務(wù)器進(jìn)行狀態(tài)變更為。接收投票接收來自其它服務(wù)器的投票判斷投票的有效性。
一.ZooKeeper是什么?
ZooKeeper是一個分布式協(xié)調(diào)服務(wù),目標(biāo)是將復(fù)雜容易出錯的分布式一致性服務(wù)包裝起來,提供API接口給用戶使用。
ZooKeeper可以實現(xiàn)數(shù)據(jù)發(fā)布/訂閱,負(fù)載均衡,分布式鎖,分布式隊列,命名服務(wù),集群管理,Master管理,分布式協(xié)調(diào)/通知。
二.ZooKeeper的Zab(Zookeeper Automic Broadcast)協(xié)議。
包含兩種模式:
1.崩潰恢復(fù)
2.消息廣播
三.ZooKeeper的特性
1.數(shù)據(jù)節(jié)點--ZNode
ZNode是ZooKeeper的最小數(shù)據(jù)單元,每個ZNode都可以存儲數(shù)據(jù),同時還能掛載子節(jié)點,因此構(gòu)成了一個層次化的命名空間,稱為樹。
ZNode三種類型:持久節(jié)點,臨時節(jié)點,順序節(jié)點。可以生成以下四種類型的節(jié)點:
持久節(jié)點:持久節(jié)點創(chuàng)建后就一直存在于ZooKeeper服務(wù)器上,直到有刪除操作主動清除這個節(jié)點。
持久順序節(jié)點:持久順序節(jié)點的特性和持久節(jié)點基本一致,額外的特性表現(xiàn)在順序性上。在ZooKeeper中,每個父節(jié)點都會為它的第一個子節(jié)點維護(hù)一份順序,用于記錄下每個子節(jié)點創(chuàng)建的先后順序。
臨時節(jié)點:臨時節(jié)點的生命周期和會話保持一致。如果會話失效,臨時節(jié)點也就失效。不能在臨時節(jié)點上創(chuàng)建子節(jié)點。
臨時順序節(jié)點:在臨時節(jié)點上添加了順序性。
2.Watcher通知機(jī)制
客戶端線程向服務(wù)器注冊一個Watcher,同時將這個Watcher存儲在客戶端的WatchManager中,服務(wù)器會觸發(fā)Watcher事件向客戶端發(fā)送通知,客戶端會從WatchManager中找到對應(yīng)的Watcher執(zhí)行邏輯回調(diào)。
3.ACL(Access Control List)
ZooKeeper的權(quán)限控制。包含三部分的內(nèi)容:
(1)權(quán)限模式
IP:IP模式通過IP地址粒度進(jìn)行權(quán)限控制。
Digest: 以類似“username:password”的形式的權(quán)限標(biāo)識進(jìn)行權(quán)限設(shè)置。
World:所有用戶都可以在不進(jìn)行任何權(quán)限校驗的情況下操作ZooKeeper上的數(shù)據(jù)。
Super: 超級用戶。
(2)授權(quán)對象:ID
授權(quán)對象指的是權(quán)限賦予的用戶或一個指定實體。
(3)權(quán)限
指通過權(quán)限校驗可以被允許執(zhí)行的操作,包括create,delete,read,write,admin。
4.服務(wù)器角色
(1)Leader:整個ZooKeeper集群工作機(jī)制中的核心,主要任務(wù):
事務(wù)請求的唯一調(diào)度和處理者,保證集群事務(wù)處理的順序性。
集群內(nèi)部各服務(wù)器的調(diào)度者。
(2)Follower:ZooKeeper集群狀態(tài)的跟隨者,主要任務(wù):
處理客戶端非事務(wù)的請求,轉(zhuǎn)發(fā)事務(wù)請求給Leader服務(wù)器。
參與事務(wù)的Proposal的投票。
參與Leader選舉的投票。
(3)Observer:觀察者
能處理非事務(wù)請求,將事務(wù)請求轉(zhuǎn)發(fā)給Leader服務(wù)器,但是不進(jìn)行事務(wù)Proposal的投票和Leader選舉的投票。通常用于在不影響集群事務(wù)處理能力的前提下提升集群的非事務(wù)處理能力。
5.leader選舉
進(jìn)行l(wèi)eader可以是服務(wù)器啟動的時候或是服務(wù)器運行的時候。
(1)狀態(tài)變更:如果是服務(wù)器運行期間進(jìn)行l(wèi)eader選舉,需要對非Observer服務(wù)器進(jìn)行狀態(tài)變更為Looking。
(2)進(jìn)行投票:每臺服務(wù)器都會選舉自己作為leader,投票的內(nèi)容包括服務(wù)器的myid(ZooKeeper集群搭建的時候每個服務(wù)器的編號)和ZXID(ZooKeeper為每一個事務(wù)請求分配的唯一一個全局事務(wù)ID)。
(3)接收投票:接收來自其它服務(wù)器的投票,判斷投票的有效性。
(4)處理投票:需要將其他服務(wù)器的投票與自己的投票比較,比較規(guī)則如下:
先比較ZXID,ZXID比較大的服務(wù)器會優(yōu)先作為Leader。
ZXID相同的話,就比較myid,myid比較大的服務(wù)器作為Leader服務(wù)器。
(5)統(tǒng)計投票:每次投票后,服務(wù)器都會統(tǒng)計所有投票,判斷是否有過半的機(jī)器接收到相同的投票信息。
(6)改變服務(wù)器狀態(tài):如果是follower,就變更為Following,如果是leader,就變更為leading。
6.ZooKeeper的序列化協(xié)議:Jute
7.數(shù)據(jù)存儲
分為兩部分:內(nèi)存數(shù)據(jù)存儲和磁盤數(shù)據(jù)存儲。
參考資料:
《從Paxos到ZooKeeper分布式一致性原理與實踐》
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71565.html
摘要:協(xié)議是為分布式協(xié)調(diào)服務(wù)專門設(shè)計的一種支持崩潰恢復(fù)的一致性協(xié)議,這個機(jī)制保證了各個之間的同步。選主是協(xié)議中最為重要和復(fù)雜的過程。以實際效果而言,分區(qū)相當(dāng)于對通信的時限要求。參考官方文檔阿里巴巴為什么不用做服務(wù)發(fā)現(xiàn)定理的含義阮一峰 前言 同學(xué)們,在上一章中,我們主要講了Zookeeper兩種啟動模式以及具體如何搭建。本章內(nèi)容主要講的是集群相關(guān)的原理內(nèi)容,第一章可以當(dāng)做是Zookeeper原...
摘要:本章內(nèi)容主要講的是集群搭建相關(guān)的知識。在集群模式下,最少需要三個節(jié)點。并且官方推薦你使用奇數(shù)數(shù)量的節(jié)點來組成集群。這個值必須是集群中唯一的。在確認(rèn)每臺服務(wù)器上的和文件修改創(chuàng)建之后,在三個節(jié)點上分別執(zhí)行命令,啟動。 前言 同道們,好久不見,上一章中,我主要講了Zookeeper的一些基礎(chǔ)的知識點。數(shù)據(jù)模型 + 原語集 + Watches機(jī)制。本章內(nèi)容主要講的是集群搭建相關(guān)的知識。 本篇的...
摘要:具有不可分割性即原語的執(zhí)行必須是連續(xù)的,在執(zhí)行過程中不允許被中斷。提供服務(wù)主要就是通過數(shù)據(jù)結(jié)構(gòu)原語集機(jī)制達(dá)到的。子節(jié)點的版本號數(shù)據(jù)節(jié)點版本號版本號創(chuàng)建該節(jié)點的會話的。后位則為遞增序列。 前言 最近加入了部門的技術(shù)興趣小組,被分配了Zookeeper的研究任務(wù)。在研究過程當(dāng)中,發(fā)現(xiàn)Zookeeper由于其開源的特性和其卓越的性能特點,在業(yè)界使用廣泛,有很多的應(yīng)用場景,而這些不同的應(yīng)用場景...
摘要:可靠性一旦數(shù)據(jù)更新成功,將一直保持,直到新的更新。這是一種主動的分布式數(shù)據(jù)結(jié)構(gòu),能夠在外部情況發(fā)生變化時候主動修改數(shù)據(jù)項狀態(tài)的數(shù)據(jù)機(jī)構(gòu)。如果監(jiān)視節(jié)點狀態(tài)發(fā)生變化,則跳轉(zhuǎn)到第步,繼續(xù)進(jìn)行后續(xù)的操作,直到退出鎖競爭。 題外話:從字面上來看,ZooKeeper表示動物園管理員,而Hadoop生態(tài)系統(tǒng)中,許多項目的Logo都采用了動物,比如Hadoop采用了大象的形象,所以可以ZooKeepe...
閱讀 970·2022-06-21 15:13
閱讀 1855·2021-10-20 13:48
閱讀 1039·2021-09-22 15:47
閱讀 1373·2019-08-30 15:55
閱讀 3128·2019-08-30 15:53
閱讀 526·2019-08-29 12:33
閱讀 721·2019-08-28 18:15
閱讀 3467·2019-08-26 13:58