PAXOS實現之team building描述

2021-09-09 06:39:43 字數 2057 閱讀 9987

參考書籍:《從paxos到zookeeper-分布式一致性原理與實踐》

這兩天在看paxos演算法,看到很多版本的理解和比喻,今天看教程終於感覺看懂了一點,於是打算自己描述一下試試.

然而發現後面看不懂.....t^t 總之先發出來,有好心人一起交流下。

背景: 某公司組織團建活動,有3個備選去處,需要挑選出乙個,上報給公司管理部門申請團建流程。

目的地:香港、東京、新加坡

決策人(acceptor):李總、張總、楊總

投票人(proposer):員工1,員工2,員工3.......員工n(這裡的1,2,3等數字不代表投票順序)

以上是基礎規則,然而這個規則會遇到很多問題,需要逐一補充完善;首先

[問題一]

如果所有人都選了同乙個地方,但該地方又被3位決策人駁回,會導致這輪投票選不出團建地點

比如,李總不想去東京;這時他收到了來自員工1的提案[東京];於是駁回了員工1,等待有人發給他[香港]或[新加坡]。結果所有員工發給李總的都是東京,於是李總駁回了所有人的提案,啥也沒批准。張總,楊總也是一樣。

於是場面就十分尷尬了。。。。由於3位領導都不喜歡東京,所以都沒有批准東京,但所有人都只投了東京,沒有其它提案,導致本輪啥也沒選出來。

[解決方法]

規則補充:決策人必須同意自己收到的第乙個提案

這樣,即使李總,張總,楊總都不喜歡東京,但由於收到的第乙個提案是東京(不管來自哪位員工),東京會被批准;

而後續也沒有再收到任何其它地點,所以最終會批准東京。

這就保證了哪怕只有乙個提案被提出,也仍然可以選出乙個。

[問題二]

3個人都批准了不一樣的地點,等於啥也沒選定

如:

張總:東京

李總:香港

楊總:新加坡

[問題三]

即使某個地點被差不多一半的人選中了,但有乙個決策人故障,就會導致選不出

如:

張總:東京

李總:東京

楊總:新加坡

但周一李總沒來上班,也聯絡不上,導致張總批准東京,楊總批准新加坡;還是等於啥都沒選定

【解決方法】:

規則:允許乙個決策人批准多個提案,比如

張總:東京,香港

李總:東京,新加坡

楊總:東京,新加坡

那麼即使周一聯絡不上李總,東京仍然以2票獲勝成為團建地點(李總失聯,東京:香港:新加坡 = 2:1:1)。

但此時又引發了乙個新問題

【問題四】

又回到了可能發生多個提案被選定的情況;由於決策人可以批准多個提案;如果批准狀況如下:

張總:東京,香港

李總:東京,新加坡,香港

楊總:東京,新加坡,香港

會導致【東京】和【香港】都被選定為團建地點

【解決方法】

此處我們要引入乙個【全域性唯一編號】,來標識每乙個被決策人批准的提案;【編號,地點(值)】

【全域性唯一】的意思是指,用來表示id的數字只會出現一次,而且是全序遞增的。

增加規則:雖然允許多個提案被選定,但同時也必須保證所有被選定的提案都有相同的值;注意此處的提案不等同於地點了,而是【編號,地點(值)】共同表示乙個提案

即:

如果編號為m0,value為v0的提案被選定【m0,v0】,那麼所有m0編號更高的,且被選定的提案,其value值也必須是v0。

例如:張總:【1,東京】,【2,香港】

李總:【3,東京】,【4,新加坡】,【7,香港】

楊總:【5,東京】,【6,香港】

此時【東京】被選定,那麼

我就不知道上面這句要怎麼解釋了!!!

paxos演算法之粗淺理解

paxos出身 paxos出身名門,它爹是沒多久前獲得圖靈獎的在分布式領域大名鼎鼎的leslie lamport。paxos為何而生 那麼lamport 他老人家為什麼要搞這個東東呢 不是吃飽了撐的,而是為了解決分布式系統的大難題。分布式系統一 般要求具有高可用性,高可用性一般又是通過冗餘也就是多副...

分布式系統之Paxos變種和優化

首先我們來回顧一下multi paxos,multi paxos在basic paxos的基礎上確定一系列值,其決議過程如下 multi paxos中leader用於避免活鎖,但leader的存在會帶來其他問題,一是如何選舉和保持唯一leader 雖然無leader或多leader不影響一致性,但影...

分布式一致性演算法之Paxos

paxos的重要概念 提案 proposal proposal訊息包括提案編號 proposal id 和提案的值 最終一致值value paxos演算法角色 client 客戶端,主要是向分布式系統發出請求,並等待響應。例如 對分布式檔案伺服器中檔案的寫請求 proposer 提案發起者,提倡客戶...