「分佈式」基礎 - Multi Paxos, Fast Paxos 與現實世界產生共振

正如上一篇文章 -

「分佈式」基礎 - Paxos, 解決了無處不在的共識問題

共識算法Paxos解決了共識問題,也就是大家對同一議題達到一致的過程和原則。結合 -

「分佈式」基礎 - 2PC & 3PC (二階段提交 & 三階段提交)

可以看出,Paxos其實是二階提交算法。現實世界中我們面對的問題,常常是需要多個議題同時進行,需要快速達成多輪共識。如何理論結合實際,與現實世界產生共振,互惠互利,實現雙贏?

「分佈式」基礎 - Multi Paxos, Fast Paxos 與現實世界產生共振

Concept ~ Reality

Multi Paxos

Paxos共識算法清晰的解釋了共識達成的流程和原則。當我們結合理論看實際的時候,會發現,在現在世界中,我們往往需要同時討論多個議題,那我們該如何優化和調整呢?

「分佈式」基礎 - Multi Paxos, Fast Paxos 與現實世界產生共振

Paxos

讓我們通過上圖來回顧一下Paxos,可以想像一樣,如果多個提議發生,也就是上面這些流程會重複發生很多遍,會有哪些問題?

  • 每一輪共識都存在提議者之間的競爭,可不可以優化?
  • 每一輪共識都需要接收者的PROMISE,是否可以優化?

我們先把兩個重複流程擺出來,方便大家更直觀的感受一下:

「分佈式」基礎 - Multi Paxos, Fast Paxos 與現實世界產生共振

Multi Paxos

上圖就是Multi Paxos的關鍵所在:

  • 在基礎Paxos上,如果一個proposer的建議和大家達成了共識,我們有理由相信,這個proposer肯定有什麼過人之處,比如網絡好,服務器運算能力強,響應快。那麼假設這個proposer提議了100次,被接收了99次,那麼我們是不是可以更信賴這個proposer。如圖所示,我們可以將其升級為Leader,這樣做的好處是我們可以略掉二階提段中的第一階段,直接propose值給所有人,大家也直接接受。
  • 這麼做的前提是這個Leader很穩定,那麼為了突出這一點,我們可以引入I(Iteration - 迭代),在這個proposer獲取大家信任時,併成為leader的過程中,所有由這個leader發出的propose,我們用I來代表這個proposer的時代發生的提案輪數。如上圖I+1,就是代表在成為leader之後的第一次提案。

可以看出,在Multi Paxos中,只要成功確認了一次Proposer,在隨後的提議協調過程中,都將由這個Proposer來管理,大大提升了效率,省掉了第一階段,為後續共識快速達成提供了基礎。對比Paxos和Multi Paxos,我們可以看出如下理念的轉換:

「分佈式」基礎 - Multi Paxos, Fast Paxos 與現實世界產生共振

民主 - 專治

第一次公平競爭,選出更高、更快、更強的Proposer,選出後,就都以TA為中心,擁護優秀的領導者。民主會充分發揮大家的主觀能動性,但和專治相比,多次協商會犧牲效率。專治在執行方面很直接,但又損失了能動性。那有沒有兩全其美的辦法呢?

Fast Paxos

「分佈式」基礎 - Multi Paxos, Fast Paxos 與現實世界產生共振

Fast Paxos

與Multi Paxos相比,Fast Paxos做了以下調整:

  • 用戶請求可以直達接收者。這樣消除了領導者(Leader),這個瓶頸。領導者還是和之前一樣,但更多的是負責協調,如上圖所示,當接收者自己達成一致後,將會把信息反饋給領導者。
  • 學習者可以直接將響應結果返回給客戶端,這樣也會減少網絡請求帶來的不確定性,並提高了效率

如果接收者沒法達成一致,領導者將會發現問題,並主動干預:

「分佈式」基礎 - Multi Paxos, Fast Paxos 與現實世界產生共振

Fast Paxos collision acceptor

如上圖,如果客戶端發了兩個請求,接收者接到消息後,分別處理響應,但都勢均力敵,有2個接收者優先響應了第一個請求,另2個接收者優先響應了第二個請求,結果是2對2,哪一組都說服不了另一組,這時候就需要領導者來主動干預了:

「分佈式」基礎 - Multi Paxos, Fast Paxos 與現實世界產生共振

Fast Paxos collision

這時領導者會像Multi Paxos中一樣,直接propose一個TA認為合理的值,來解決這個衝突。

那麼在這個過程中我們可以發現,為了避免這種爭端,Fast Paxos建議領導者和接收者的組成公式為

3A + 1(以3為倍數的接收者,加一個領導者)。這樣將有效避免接收者之前的衝突,他們自己就可以高效達成一致,這樣就讓領導者少操心。

人類的智慧是無限的,也是共享的,我們可以從上面這些理論算法的影子裡,看到人類社會的分工和協作。下一篇我們將介紹鼎鼎有名的Zookeeper - ZAP協議,來看一看TA是如保將這些理念付諸實踐的。

全文完

「分佈式」基礎 - Multi Paxos, Fast Paxos 與現實世界產生共振


分享到:


相關文章: