1. 程式人生 > >從決策者的角度理解Paxos演算法

從決策者的角度理解Paxos演算法

看了很多關於Paxos演算法的一些講解,一直沒有理解其原理。

依然是提議者Proposer 和 決策者Acceptor

一個系統中有多個決策者,每個決策者獨立執行,不受其他決策者的影響。有多個提議者,提議者也獨立執行,不受其他提議者的影響。

以決策者A為中心,來理解一致性演算法的流程。

1. 決策者的狀態:決策者A當前提案的數量為0,最大序號為0

2. 發生動作:決策者A接收到提議者B的某個提議1

3. 做出初步判斷:決策者A根據初步接受和提議序號,來決定是否初步接受該提議1,因0<1,則提議1被初步接受。

4. 發生動作:決策者A接收到提議者B的確認提議1

5. 最終判決:決策者A根據初步接受的序號和確認序號,決定是否確定接受提議1,因初步接受提議1 = 1最終確認提議,所以提議1被決策者A所接受。決策者A的自身狀態變更為1。

6. 發生動作:決策者A接收到提議者B的某個提議2

7. 做出初步判斷:決策者A根據初步接受和提議序號,來決定是否初步接受該提議2,因1<2,則提議2被初步接受。

8. 發生動作:決策者A接收到提議者C的某個提議3

9. 做出初步判斷:決策者A根據初步接受提案和提議序號,來決定是否初步接受該提議3,因2<3,則提議3被初步接受。

10. 發生動作:決策者A接收到提議者B的確認提議2;

11. 最終判決:決策者A根據初步接受的序號和確認序號,決定是否確定接受提議2,因初步接受提議3 != 2最終確認提議,所以提議2被決策者A所拒絕。決策者A的初步接受提案依然為3;

12. 發生動作:決策者A接收到提議者C的確認提議3;

5. 最終判決:決策者A根據初步接受的序號和確認序號,決定是否確定接受提議3,因初步接受提議3 = 3最終確認提議,所以提議3被決策者A所接受。決策者A的自身狀態變更為3。

在上述流程中,決策者A,自始至終只是在重複進行兩個過程:

1)收到提議-初步判斷

2)收到確認-最終判決