分佈式系統理論進階 - Paxos變種和優化

引言html

《分佈式系統理論進階 - Paxos》中咱們瞭解了Basic Paxos、Multi Paxos的基本原理,但若是想把Paxos應用於工程實踐,瞭解基本原理還不夠。web

 

有不少基於Paxos的優化,在保證一致性協議正確(safety)的前提下,減小Paxos決議通訊步驟、避免單點故障、實現節點負載均衡,從而下降時延、增長吞吐量、提高可用性,下面咱們就來了解這些Paxos變種。負載均衡

 

Multi Paxos分佈式

首先咱們來回顧一下Multi Paxos,Multi Paxos在Basic Paxos的基礎上肯定一系列值,其決議過程以下:優化

phase1a: leader提交提議給acceptorui

phase1b: acceptor返回最近一次接受的提議(即曾接受的最大的提議ID和對應的value),未接受過提議則返回空htm

phase2a: leader收集acceptor的應答,分兩種狀況處理blog

  phase2a.1: 若是應答內容都爲空,則自由選擇一個提議value進程

  phase2a.2: 若是應答內容不爲空,則選擇應答裏面ID最大的提議的valueci

phase2b: acceptor將決議同步給learner

 

Multi Paxos中leader用於避免活鎖,但leader的存在會帶來其餘問題,一是如何選舉和保持惟一leader(雖然無leader或多leader不影響一致性,但影響決議進程progress),二是充當leader的節點會承擔更多壓力,如何均衡節點的負載。Mencius[1]提出節點輪流擔任leader,以達到均衡負載的目的;租約(lease)能夠幫助實現惟一leader,但leader故障狀況下可致使服務短時間不可用。

 

Fast Paxos

在Multi Paxos中,proposer -> leader -> acceptor -> learner,從提議到完成決議共通過3次通訊,能不能減小通訊步驟?

對Multi Paxos phase2a,若是能夠自由提議value,則可讓proposer直接發起提議、leader退出通訊過程,變爲proposer -> acceptor -> learner,這就是Fast Paxos[2]的由來。

Multi Paxos裏提議都由leader提出,於是不存在一次決議出現多個value,Fast Paxos裏由proposer直接提議,一次決議裏可能有多個proposer提議、出現多個value,即出現提議衝突(collision)。leader起到初始化決議進程(progress)和解決衝突的做用,當衝突發生時leader從新參與決議過程、回退到3次通訊步驟。

 

Paxos自身隱含的一個特性也能夠達到減小通訊步驟的目標,若是acceptor上一次肯定(chosen)的提議來自proposerA,則當次決議proposerA能夠直接提議減小一次通訊步驟。若是想實現這樣的效果,須要在proposer、acceptor記錄上一次決議肯定(chosen)的歷史,用以在提議前知道哪一個proposer的提議上一次被肯定、當次決議能不能節省一次通訊步驟。

 

EPaxos

除了從減小通訊步驟的角度提升Paxos決議效率外,還有其餘方面能夠下降Paxos決議時延,好比Generalized Paxos[3]提出不衝突的提議(例如對不一樣key的寫請求)能夠同時決議、以下降Paxos時延。

 

更進一步地,EPaxos[4](Egalitarian Paxos)提出一種既支持不衝突提議同時提交下降時延、還均衡各節點負載、同時將通訊步驟減小到最少的Paxos優化方法。

 

爲達到這些目標,EPaxos的實現有幾個要點。一是EPaxos中沒有全局的leader,而是每一次提議發起提議的proposer做爲當次提議的leader(command leader);二是不相互影響(interfere)的提議能夠同時提交;三是跳過prepare,直接進入accept階段。EPaxos決議的過程以下:

左側展現了互不影響的兩個update請求的決議過程,右側展現了相互影響的兩個update請求的決議。Multi Paxos、Mencius、EPaxos時延和吞吐量對比:

爲判斷決議是否相互影響,實現EPaxos得記錄決議之間的依賴關係。

 

小結

以上介紹了幾個基於Paxos的變種,Mencius中節點輪流作leader、均衡節點負載,Fast Paxos減小一次通訊步驟,Generalized Paxos容許互不影響的決議同時進行,EPaxos無全局leader、各節點平等分擔負載。

 

優化無止境,對Paxos也同樣,應用在不一樣場景和不一樣範圍的Paxos變種和優化將繼續不斷出現。

 

[1] Mencius: Building Efficient Replicated State Machines for WANs, Yanhua Mao,Flavio P. Junqueira,Keith Marzullo, 2018

[2] Fast Paxos, Leslie Lamport, 2005

[3] Generalized Consensus and Paxos, Leslie Lamport, 2004

[4] There Is More Consensus in Egalitarian Parliaments, Iulian Moraru, David G. Andersen, Michael Kaminsky, 2013

相關文章
相關標籤/搜索