0.摘要
Zab是我們?yōu)閆ooKeeper協(xié)調(diào)服務(wù)設(shè)計的崩潰-恢復(fù)原子廣播算法.ZooKeeper實現(xiàn)了主備模式:主進程執(zhí)行客戶端寫請求,然后用Zab協(xié)議傳播相應(yīng)的狀態(tài)變化增量給備進程.由于一個狀態(tài)變化增量必須依基于先前產(chǎn)生的狀態(tài)變化序列,Zab必須確保先傳輸被基于的,然后傳輸此增量.因為主進程可能崩潰碗脊,Zab必須允許主進程崩潰且而自己正常工作.
使用ZooKeeper的應(yīng)用要求高性能、一致性,而且在一個時刻允許多個未完成寫請求存在是很重要的祸穷。
(以下敘述原因A望蜡、B)
(A) Zab確保:1尸疆、至多有一個主進程可以廣播狀態(tài)變化序列并并使這序列進入狀態(tài)機蟀拷;2制市、在選出新主進程時志衍,有一個同步階段暖庄。
從而(1和2)使Zab能支持多個未完成狀態(tài)變化。
在同步階段完成前楼肪,新主進程不能廣播新狀態(tài)變化培廓。
(B) 再有,Zab給狀態(tài)變化以id春叫,從而使進程輕易地發(fā)現(xiàn)缺失了一些變化肩钠。這是有效恢復(fù)的關(guān)鍵。
目前暂殖,在生產(chǎn)環(huán)境下的試驗表明 我們的設(shè)計下的實現(xiàn) 能 滿足我們的應(yīng)用所需性能蔬将。
我們實現(xiàn)的Zab能夠達到每秒數(shù)萬次廣播,對于像可擴展web應(yīng)用的高壓力系統(tǒng)這是足夠的央星。
索引詞--容錯霞怀,分布式算法,主從莉给,異步一致性毙石,原子廣播。
I.介紹
原子廣播是一個通用原語在分布式系統(tǒng)中颓遏,而ZooKeeper是使用了原子廣播的應(yīng)用徐矩。
(primitive:原始人:原子性:[多條指令組成一個動作,該動作只能做完或不做,不能做一部分]:原語)
ZooKeeper是一個被在生產(chǎn)Web系統(tǒng)中的高可用協(xié)調(diào)服務(wù)用,例如雅虎爬蟲用了三年叁幢。
此類應(yīng)用程序經(jīng)常包含大量進程滤灯,并依靠ZooKeeper來執(zhí)行重要的協(xié)調(diào)任務(wù),比如可靠地存儲配置、保持運行進程的狀態(tài)鳞骤。
由于大量應(yīng)用對ZooKeeper的依賴窒百,(ZooKeeper)協(xié)調(diào)服務(wù)必須能屏蔽失效并從失效中恢復(fù)。 [1]
(server:服務(wù)器;process:進程. 這篇文章里二者意思一樣.可以想象作者假定了每個服務(wù)器上一個zookeeper進程)
ZooKeeper 是個復(fù)制服務(wù)豫尽,為前進(為執(zhí)行寫請求序列)它需要多數(shù)派服務(wù)器沒有崩潰篙梢。
(replicated:復(fù)制; replica:副本。二者含義一樣美旧。復(fù)制多次產(chǎn)生多個副本渤滞。)
用崩潰-恢復(fù)協(xié)議 [2], [3], [4],崩潰的服務(wù)器能恢復(fù)榴嗅,并重新加入妄呕。
ZooKeeper用主從模式 [5], [6], [7]來維持各進程的副本的一致性。
用ZooKeeper嗽测,所有來自客戶端的(寫)請求绪励,由主進程:1、接收论咏;2、執(zhí)行颁井;3厅贪、以事務(wù)的形式,用Zab協(xié)議雅宾,給各個從進程單向傳播增量狀態(tài)變化(序列)养涮。 (Zab:ZooKeeper原子廣播)。
當(dāng)主進程崩潰眉抬,(其他)所有進程執(zhí)行恢復(fù)協(xié)議 來 : 1贯吓、在恢復(fù)正常操作前達成一致;2蜀变、選出一個新主進程來廣播狀態(tài)變化(序列)悄谐。
(正常操作 : 能正常接收來自客戶端的寫請求并執(zhí)行)
一個進程得到多數(shù)派進程的支持才能變成主進程。
(majority库北、quorum(二者含義相同):多數(shù)派:[集群內(nèi)當(dāng)時全部機器數(shù)被各個機器知道爬舰,大于此數(shù)二分之一為多數(shù)派。] 全部機器自然包括死的寒瓦、活的)
由于進程會崩潰并恢復(fù)情屹,不同的時刻會可能有不同的主進程,當(dāng)然同一個進程可能做了好幾次主進程杂腰。
為了唯一確認(rèn)不同時段內(nèi)的不同主進程垃你,我們給每個選出的主進程一個實例值。 一個給定的實例值至多對應(yīng)一個進程。
注意惜颇,實例的概念和組播的view[8]部分相同皆刺,但有一些關(guān)鍵差異。
組播:1官还、一個指定的view中的所有進程能廣播芹橡;2、當(dāng)任意一個進程加入或離開時候望伦,配置發(fā)生變化林说。
(? 配置 指 view ?)
Zab:1、只有當(dāng)主進程崩潰或失去了多數(shù)派的支持時候屯伞,所有進程用一個新的view(或主實例)腿箩。
(組播的2和Zab的1有類似之處,組播的1和Zab不同)