翻譯 Zab: High-performance broadcast for primary-backup systems (zh-cn)

原文

0.摘要

Zab是我們?yōu)閆ooKeeper協(xié)調(diào)服務(wù)設(shè)計(jì)的崩潰-恢復(fù)原子廣播算法.ZooKeeper實(shí)現(xiàn)了主備模式:主進(jìn)程執(zhí)行客戶端寫請(qǐng)求,然后用Zab協(xié)議傳播相應(yīng)的狀態(tài)變化增量給備進(jìn)程.由于一個(gè)狀態(tài)變化增量必須依基于先前產(chǎn)生的狀態(tài)變化序列,Zab必須確保先傳輸被基于的,然后傳輸此增量.因?yàn)橹鬟M(jìn)程可能崩潰,Zab必須允許主進(jìn)程崩潰且而自己正常工作.


使用ZooKeeper的應(yīng)用要求高性能、一致性,而且在一個(gè)時(shí)刻允許多個(gè)未完成寫請(qǐng)求存在是很重要的。
(以下敘述原因A、B)
(A) Zab確保:1、至多有一個(gè)主進(jìn)程可以廣播狀態(tài)變化序列并并使這序列進(jìn)入狀態(tài)機(jī);2、在選出新主進(jìn)程時(shí),有一個(gè)同步階段。

從而(1和2)使Zab能支持多個(gè)未完成狀態(tài)變化。

在同步階段完成前,新主進(jìn)程不能廣播新狀態(tài)變化。

(B) 再有,Zab給狀態(tài)變化以id,從而使進(jìn)程輕易地發(fā)現(xiàn)缺失了一些變化。這是有效恢復(fù)的關(guān)鍵。


目前,在生產(chǎn)環(huán)境下的試驗(yàn)表明 我們的設(shè)計(jì)下的實(shí)現(xiàn) 能 滿足我們的應(yīng)用所需性能。

我們實(shí)現(xiàn)的Zab能夠達(dá)到每秒數(shù)萬(wàn)次廣播,對(duì)于像可擴(kuò)展web應(yīng)用的高壓力系統(tǒng)這是足夠的。


索引詞--容錯(cuò),分布式算法,主從,異步一致性,原子廣播。

I.介紹

原子廣播是一個(gè)通用原語(yǔ)在分布式系統(tǒng)中,而ZooKeeper是使用了原子廣播的應(yīng)用。

(primitive:原始人:原子性:[多條指令組成一個(gè)動(dòng)作,該動(dòng)作只能做完或不做,不能做一部分]:原語(yǔ))

ZooKeeper是一個(gè)被在生產(chǎn)Web系統(tǒng)中的高可用協(xié)調(diào)服務(wù)用,例如雅虎爬蟲用了三年。

此類應(yīng)用程序經(jīng)常包含大量進(jìn)程,并依靠ZooKeeper來(lái)執(zhí)行重要的協(xié)調(diào)任務(wù),比如可靠地存儲(chǔ)配置、保持運(yùn)行進(jìn)程的狀態(tài)。

由于大量應(yīng)用對(duì)ZooKeeper的依賴,(ZooKeeper)協(xié)調(diào)服務(wù)必須能屏蔽失效并從失效中恢復(fù)。 [1]


(server:服務(wù)器;process:進(jìn)程. 這篇文章里二者意思一樣.可以想象作者假定了每個(gè)服務(wù)器上一個(gè)zookeeper進(jìn)程)

ZooKeeper 是個(gè)復(fù)制服務(wù),為前進(jìn)(為執(zhí)行寫請(qǐng)求序列)它需要多數(shù)派服務(wù)器沒(méi)有崩潰。
(replicated:復(fù)制; replica:副本。二者含義一樣。復(fù)制多次產(chǎn)生多個(gè)副本。)
用崩潰-恢復(fù)協(xié)議 [2], [3], [4],崩潰的服務(wù)器能恢復(fù),并重新加入。
ZooKeeper用主從模式 [5], [6], [7]來(lái)維持各進(jìn)程的副本的一致性。

用ZooKeeper,所有來(lái)自客戶端的(寫)請(qǐng)求,由主進(jìn)程:1、接收;2、執(zhí)行;3、以事務(wù)的形式,用Zab協(xié)議,給各個(gè)從進(jìn)程單向傳播增量狀態(tài)變化(序列)。 (Zab:ZooKeeper原子廣播)。

當(dāng)主進(jìn)程崩潰,(其他)所有進(jìn)程執(zhí)行恢復(fù)協(xié)議 來(lái) : 1、在恢復(fù)正常操作前達(dá)成一致;2、選出一個(gè)新主進(jìn)程來(lái)廣播狀態(tài)變化(序列)。
(正常操作 : 能正常接收來(lái)自客戶端的寫請(qǐng)求并執(zhí)行)

一個(gè)進(jìn)程得到多數(shù)派進(jìn)程的支持才能變成主進(jìn)程。
(majority、quorum(二者含義相同):多數(shù)派:[集群內(nèi)當(dāng)時(shí)全部機(jī)器數(shù)被各個(gè)機(jī)器知道,大于此數(shù)二分之一為多數(shù)派。] 全部機(jī)器自然包括死的、活的)

由于進(jìn)程會(huì)崩潰并恢復(fù),不同的時(shí)刻會(huì)可能有不同的主進(jìn)程,當(dāng)然同一個(gè)進(jìn)程可能做了好幾次主進(jìn)程。
為了唯一確認(rèn)不同時(shí)段內(nèi)的不同主進(jìn)程,我們給每個(gè)選出的主進(jìn)程一個(gè)實(shí)例值。 一個(gè)給定的實(shí)例值至多對(duì)應(yīng)一個(gè)進(jìn)程。

注意,實(shí)例的概念和組播的view[8]部分相同,但有一些關(guān)鍵差異。
組播:1、一個(gè)指定的view中的所有進(jìn)程能廣播;2、當(dāng)任意一個(gè)進(jìn)程加入或離開時(shí)候,配置發(fā)生變化。

(? 配置 指 view ?)

Zab:1、只有當(dāng)主進(jìn)程崩潰或失去了多數(shù)派的支持時(shí)候,所有進(jìn)程用一個(gè)新的view(或主實(shí)例)。

(組播的2和Zab的1有類似之處,組播的1和Zab不同)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容