zab協議與paxos協議為什麼只保證超過半數的機器保持同步?那剩下的機器是不是會出現不一致的問題?

時間 2021-06-03 15:40:28

1樓:CatKang

只要求超過半數,是為了提公升可用性,容忍一部分節點異常。

而之所以可以這麼做,是由於大多數的性質:兩個大多數一定有交集

這也正是所有一致性協議證明的關鍵,利用這個性質:

Propose發起Accept前,確保得到了大多數節點的Promise,就保證不會有兩個不同的提案內容同時被不同節點Accept。

由於每個提交的提案都收到了大多數節點的Ack,即存在於大多數節點上,那麼只要有大多數節點可以正常服務時,就一定可以在Promise過程中拿到已經Accept的提案內容,從而阻止後續改變提案內容。

其實,關鍵不是「大多數」,而是「交集」。如果熟悉Raft可以知道,他在Membership變化過程中,要求同時對新舊兩套配置達到大多數,就是為了強行找到乙個「交集」。

關於沒同步機器的同步問題,首先要明確,所有機器完全同步不是目的,對外服務一致才是目的。既然通過交集已經保證了對外服務的一致,那麼沒同步的機器,通過Leader重試同步;通過Recover階段同步;通過全同步過程同步;甚至是不同步,都是一致性演算法可接受的執行狀態。

2樓:dorianzheng

1,好處:這樣整個集群只要超過半數的機器正常,就可以繼續正常服務

2,剩下的機器怎麼進入同步狀態:如果是「複製狀態機」的話,剩下的機器從正常服務的機器獲取乙個狀態機的快照,然後應用到自己本地,然後再從快照的地方追回paxos或者raft的日誌即可

raft協議和zab協議有啥區別?

CatKang 可以從以下幾個方向比較協議 primary backup system or state machine system raft是state machine system,zab是primary backup system 處理唯讀請求 raft的讀請求與寫請求處理邏輯一樣,zab用...

Paxos 協議遵循後者認同前者,那有什麼意義呢?

無名 我覺得首先要明確問題是什麼,問題是就一次提議達成決議,達成決議後就不能再變,這就是所謂的就某次提議達成共識。而不是不能有多次提議。這個可能需要結合現實問題才會更好的理解。比如更新銀行賬戶餘額這個操作,不是說先更新成5,以後就一直更新成5。而是說針對更新成5這個操作,在服務端多副本的場景,可能遭...

與妻子準備協議離婚,但妻子反覆修改協議無法達成共識怎麼辦?

切桃花半斤 我尋思人家已經按你的要求不要錢了,也沒寫離婚原因了,就乙個陪嫁什麼時候搬有什麼值得計較的?你要想離就麻溜簽字,或者是你不想離?你有別的訴求? 默默漠漠 我明白你老婆為什麼要和你離婚了,因為你較真。你計較女方在協議裡寫離婚原因 復員費金額和什麼時候搬陪嫁的鋼琴幹嗎?只要離婚原因沒寫你出軌家...