摘要

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

 

1. 簡介

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

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

延伸閱讀

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