分布式系統理論高階 Paxos變種和優化

2021-07-28 12:27:34 字數 2339 閱讀 2571

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

multi paxos

首先我們來回顧一下multi paxos,multi paxos在basic paxos的基礎上確定一系列值,其決議過程如下:

phase1a: leader提交提議給acceptor

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

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

phase2a.1: 如果應答內容都為空,則自由選擇乙個提議value

phase2a.2: 如果應答內容不為空,則選擇應答裡面id最大的提議的value

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變種和優化將繼續不斷出現。

分布式系統理論高階 Paxos變種和優化

有很多基於paxos的優化,在保證一致性協議正確 safety 的前提下,減少paxos決議通訊步驟 避免單點故障 實現節點負載均衡,從而降低時延 增加吞吐量 提公升可用性,下面我們就來了解這些paxos變種。首先我們來回顧一下multi paxos,multi paxos在basic paxos的...

分布式系統理論(二) 一致性協議Paxos

分布式系統理論 二 一致性協議paxos 摘要 分布式系統理論第二章,此系列主要以理論為主。這四種角色中,proposer和acceptor比較重要,協議主要的互動邏輯都在這兩種角色中。paxos 第一階段 prepare client產生乙個值v,並告知proposer,我這裡產生了乙個待acce...

分布式系統 理論 實踐系列目錄

分布式系統 一 概念辨析與邏輯梳理 分布式系統 二 擴充套件性 從單體應用到微服務 分布式系統 三 縱橫的哲學 微服務與中颱架構 分布式核心體系結構 一致性 事務 共識 本篇是分布式系統理論的引領,開篇詞。會整個體系學習有重要作用。非補償的分布式事務方案 2pc 本篇是針對2pc的學習,2pc不是重...