摘要

這是一個關(guān)于ZooKeeper正在使用的全序廣播協(xié)議(Zab)的簡短概述。它在概念上很容易理解,也很容易實(shí)現(xiàn),并且提供很高的性能。在這篇文章里,我們會呈現(xiàn)ZooKeeper在Zab上的需求,也會展示這個協(xié)議該如何使用,然后我們總體概述一下這個協(xié)議是如何工作的。

 

1. 簡介

在雅虎(Yahoo!),我們開發(fā)了一款叫做ZooKeeper[9]的高性能高可用的協(xié)作服務(wù),它允許大規(guī)模的應(yīng)用群執(zhí)行協(xié)作任務(wù),比如Leader選舉、狀態(tài)傳播和會合(rendezvous)。該服務(wù)實(shí)現(xiàn)了一個層級的數(shù)據(jù)結(jié)點(diǎn)空間——znodes,客戶端可以用它來實(shí)現(xiàn)自己的協(xié)作任務(wù)。我們已經(jīng)發(fā)現(xiàn)這個服務(wù)有很強(qiáng)的性能擴(kuò)展性,因此它很容易就滿足雅虎的網(wǎng)絡(luò)規(guī)模,關(guān)鍵任務(wù)的產(chǎn)品需求。ZooKeeper放棄了鎖,通過實(shí)現(xiàn)了無等待(wait-free)的共享數(shù)據(jù)對象,并保證在這些對象上的操作是有序的,以此來代替鎖??蛻舳顺浞掷眠@些保障來實(shí)現(xiàn)自己的協(xié)作任務(wù)。一般而言,一個引出ZooKeeper的主要原因就是,對于應(yīng)用來說,保持更新操作的有序性比其他特定的協(xié)作技術(shù)更加重要,比如阻塞。

集成到ZooKeeper里的是一個全序的廣播協(xié)議:Zab。有序的廣播是實(shí)現(xiàn)我們的客戶端保障的關(guān)鍵,同時它也需要在每一臺ZooKeeper服務(wù)器上維護(hù)ZooKeeper的狀態(tài)副本。這些副本通過使用我們的全序廣播協(xié)議來保持一致性,比如使用復(fù)制狀態(tài)機(jī)[13]。這篇文章主要關(guān)注ZooKeeper在該廣播協(xié)議上的需求以及對它實(shí)現(xiàn)的一個概述。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式