摘要
這是一個關(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)的一個概述。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26