zookeeper分布式應(yīng)用程序協(xié)調(diào)服務(wù)丙曙,ZAB協(xié)議

知識要點(diǎn):

ZAB協(xié)議
ZooKeeper Session會話
StaticHostProvider
Chroot命名空間

關(guān)于ZXID

ZXID是一個(gè)64位的數(shù)據(jù)結(jié)構(gòu)绍在。分為高32位,低32位勺届。(由Leader產(chǎn)生, 而且它是自增唯-有順序性)
高32位用來存儲epoch (年號)歹垫。
低32位用來存儲事務(wù)編號。
有2種情況導(dǎo)致高32位會變化:
■事務(wù)編號滿了梧疲,觸發(fā)Leader選舉允睹。
■Leader重新選舉运准。
所有的事物性操作都是由Leader來進(jìn)行的,即便這個(gè)請求是Follower接收到缭受,F(xiàn)ollower也會把這個(gè)事務(wù)性請求轉(zhuǎn)發(fā)給Leader胁澳。

ZAB協(xié)議

什么是ZAB協(xié)議

ZooKeeper并沒有完全采用Paxos算法,而是使用了一種稱之為ZooKeeper Atomic Broadcat (ZAB,ZooKeeper原子消息廣播協(xié)議)的協(xié)議作為其數(shù)據(jù)一致性的核心算法米者。
ZAB協(xié)議并不像Paxos算法那樣韭畸,是一種通用的分布式一致性算法,它是一種特別為ZooKeeper設(shè)計(jì)的崩潰恢復(fù)的原子消息廣播算法蔓搞。ZooKeeper采用一 一個(gè)單-的主進(jìn)程接受并處理客戶端的所有事務(wù)請求胰丁,并將服務(wù)器數(shù)據(jù)的狀態(tài)變更以事務(wù)Proposal的形式廣播到所有的副本進(jìn)程上去。
ZAB協(xié)議包含兩種基本的模式:
■崩潰恢復(fù)
■消息廣播



ZAB協(xié)議包含三個(gè)階段:
階段1:發(fā)現(xiàn)(Leader選舉過程)
階段2:同步(數(shù)據(jù)同步過程)
階段3:廣播(正式接受請求過程)

崩潰恢復(fù)

當(dāng)整個(gè)服務(wù)器在啟動(dòng)過程中喂分,或者當(dāng)Leader服務(wù)器出現(xiàn)網(wǎng)絡(luò)中斷锦庸、崩潰退出與重啟等異常情況時(shí),ZAB協(xié)議就會進(jìn)入恢復(fù)模式并通過選舉產(chǎn)生新的Leader服務(wù)器蒲祈。
當(dāng)選舉產(chǎn)生了新的Leader服務(wù)器甘萧,同時(shí)集群中已經(jīng)有過半機(jī)器與該Leader服務(wù)器完成狀態(tài)同步之后,ZAB協(xié)議就會退出恢復(fù)模式。這里的狀態(tài)同步指的就是數(shù)據(jù)同步梆掸,用來保證集群中存在過半的機(jī)器能夠和L eader服務(wù)器的數(shù)據(jù)保持一致似扔。
■當(dāng)集群中有過半的Follower服務(wù)器完成和Leader服務(wù)器的同步已脓,那么整個(gè)服務(wù)器集群就可以進(jìn)入消息廣播模式身隐。
■當(dāng)新的機(jī)器加入集群其徙,由于集群已經(jīng)存在一個(gè)Leader, 那么新加入的機(jī)器會進(jìn)入數(shù)據(jù)同步模式,即找到Leader服務(wù)器钝鸽,并與其進(jìn)行數(shù)據(jù)同步汇恤。
■當(dāng)Leader崩潰退出或者重啟,或者及集群中不存在過半的服務(wù)器可以和Leader保持正常通信拔恰,那么在開始新一輪事務(wù)操作前所有機(jī)器會使用崩潰恢復(fù)協(xié)議來達(dá)到一個(gè)一致性的狀態(tài)因谎。

消息廣播


消息廣播類似于-個(gè)2PC提交過程。根據(jù)客戶端的事務(wù)請求颜懊,Leader服務(wù)器會為其生成對應(yīng)的事務(wù)投票(即Proposal)并將其發(fā)送給集群中其他服務(wù)器财岔,然后在分表搜集各自的選票,最后進(jìn)行事務(wù)提交河爹。
與2PC不同的是匠璧,ZAB協(xié)議沒有中斷邏輯(所有Follower要么對Leader提成的事務(wù)Ack,要么就不回應(yīng)),而且當(dāng)過半的Follower服務(wù)器反饋Ack之后就開始提交事務(wù)咸这,不用等待所有Follower都反饋夷恍。
整個(gè)消息廣播協(xié)議是基于FIFO特性的TCP協(xié)議來進(jìn)行網(wǎng)絡(luò)通信,因此能夠很容易地保證消息廣播過程中消息接受與發(fā)送的順序性媳维。

ZAB和Paxos

ZAB和Paxos的本質(zhì)區(qū)別在于設(shè)計(jì)目標(biāo)不同酿雪,ZAB用于構(gòu)建一個(gè)高可 用的分布式數(shù)據(jù)系統(tǒng)遏暴,而Paxos則用于構(gòu)建一個(gè)分布式一致性狀態(tài)機(jī)系統(tǒng)。

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

數(shù)據(jù)同步過程就是將Leader服務(wù)器上面的數(shù)據(jù)同步到其他給其他服務(wù)器的過程指黎。
直接差異化同步
舉例朋凉,某個(gè)時(shí)刻Leader服務(wù) 器的事務(wù)隊(duì)列對應(yīng)的ZXID依次是:

0x200000001, 0x200000002, 0x200000003,0x200000004醋安,0x200000005

而需要數(shù)據(jù)同步的服務(wù)器最后處理的ZXID為:

0x200000003
這種場景就執(zhí)行“直接差異化同步”,Leader會依次將02x00000004, 0x200000005同步給服務(wù)器杂彭,同步
過程中順序如下:

StaticHostProvider

己實(shí)現(xiàn)了一種輪詢機(jī)制


ZooKeeper Session會話


■CONNECTING (正在連接)
■CONNECTED (已經(jīng)連接)
■RECONNECTING (重新連接)
■RECONNECTED (重新連接上)
■CLOSE (關(guān)閉)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茬故,隨后出現(xiàn)的幾起案子盖灸,更是在濱河造成了極大的恐慌,老刑警劉巖磺芭,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異醉箕,居然都是意外死亡钾腺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門讥裤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來放棒,“玉大人,你說我怎么就攤上這事己英〖涿” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵损肛,是天一觀的道長厢破。 經(jīng)常有香客問我,道長治拿,這世上最難降的妖魔是什么摩泪? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮劫谅,結(jié)果婚禮上见坑,老公的妹妹穿的比我還像新娘。我一直安慰自己捏检,他們只是感情好荞驴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贯城,像睡著了一般熊楼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冤狡,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天孙蒙,我揣著相機(jī)與錄音项棠,去河邊找鬼。 笑死挎峦,一個(gè)胖子當(dāng)著我的面吹牛香追,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坦胶,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼透典,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了顿苇?” 一聲冷哼從身側(cè)響起峭咒,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纪岁,沒想到半個(gè)月后凑队,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幔翰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年漩氨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遗增。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叫惊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出做修,到底是詐尸還是另有隱情霍狰,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布饰及,位于F島的核電站蔗坯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏旋炒。R本人自食惡果不足惜步悠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘫镇。 院中可真熱鬧鼎兽,春花似錦、人聲如沸铣除。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尚粘。三九已至择卦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秉继。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工祈噪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尚辑。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓辑鲤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杠茬。 傳聞我的和親對象是個(gè)殘疾皇子月褥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容