分布式系統03 一致性演算法之Paxos

2022-07-30 17:57:08 字數 1226 閱讀 7139

在前兩篇文章中,已經給各位介紹了分布式事務與分布式事務解決方案。在解決分布式事務時,cap 三者無法同時滿足,往往都會選擇一定程度上的犧牲分布式系統的強一致性而滿足系統的高可用性。在滿足分布式系統的最終一致性時,就需要用到分布式一致性演算法。

paxos 演算法解決的問題是乙個分布式系統如何就某個值(決議)達成一致。乙個典型的場景是,在乙個分布式資料庫系統中,如果各節點的初始狀態一致,每個節點執行相同的操作序列,那麼他們最後能得到乙個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行乙個「一致性演算法」以保證每個節點看到的指令一致。zookeeper 使用的 zab 演算法是該演算法的乙個實現。 在 paxos 演算法中,有三種角色:proposer,acceptor,learners。

只要 proposer 發的提案被半數以上 acceptor 接受,proposer 就認為該提案裡的 value 被選定了;

只要 acceptor 接受了某個提案,acceptor 就認為該提案裡的 value 被選定了;

acceptor 告訴 learner 哪個 value 被選定,learner 就認為那個 value 被選定。

(a) proposer 選擇乙個提案編號 n,然後向半數以上的 acceptor 傳送編號為 n 的 prepare 請求;

(b) 如果乙個 acceptor 收到乙個編號為 n 的 prepare 請求,且 n 大於該 acceptor 已經響應過的所有 prepare 請求的編號,那麼它就會將它已經接受過的編號最大的提案(如果有的話)作為響應反饋給 proposer,同時該 acceptor 承諾不再接受任何編號小於 n 的提案。

(a) 如果 proposer 收到半數以上 acceptor 對其發出的編號為 n 的 prepare 請求的響應,那麼它就會傳送乙個針對[n,v]提案的 accept 請求給半數以上的 acceptor。注意:v 就是收到的響應中編號最大的提案的 value,如果響應中不包含任何提案,那麼 v 就由 proposer 自己決定;

(b) 如果 acceptor 收到乙個針對編號為 n 的提案的 accept 請求,只要該 acceptor 沒有對編號大於 n 的 prepare 請求做出過響應,它就接受該提案。

分布式系統02——分布式事務解決方案

分布式系統01——什麼是分布式事務

分布式一致性演算法

補習了一下分布式相關知識,嗯,還是有很些不懂地方,閱讀不少不錯資源,記錄一下有時間回頭再讀。分布式儲存的強一致性實現方式 1.quorum w r n 2.同步複製 如 pacifica 3.複製狀態機 分布式一致性協議paxos raft zab等 學習分布式系統需要怎樣的知識?cse 552 f...

分布式一致性

分布式一致性是指在分布式環境中對某個副本資料進行更新操作時,必須確保其他副本也會更新,避免不同副本資料不一致。分布式系統乙個重要的問題時解決資料複製,一是為了增加系統的可用性防止單點故障,二是提高系統可用性,通過負載聚恆,使分布在不同位置的資料副本能夠提供服務。理想狀態下,當然希望分布式系統能夠實現...

分布式一致性

分布式系統的乙個重要問題是資料的複製。對資料的複製一般有兩個原因 資料複製的主要難題是保持各個副本的一致性。即在更新乙個副本時,必須確保同時更新其他的副本,否則資料的各個副本將不再相同。一致性模型實質上是程序和資料儲存之間的乙個約定。正常情況下,乙個資料項上執行讀操作時,它期待該操作返回的是該資料在...