PAXOS小記

隨便敲的,看看就好(被書折騰後憑感受寫的,可能小誤算法


PAXOS針對2PC的保守策略改成少數服從多數的更爲合理的策略spa

每一個Acceptor可批准多個提案class

每一個Proposer有惟一的身份標記\(M_i\),以及對應的提案內容\(V_i\),用\(<M,V>\)表示一個提案請求

注意提案者\(M\)實際上是會暗中附和其它人的提案內容,所以\(V\)並不惟一,所謂的選定提案更爲關注的是內容\(V\)集合

提案超過半數即大於等於\(\lfloor \frac{n}{2} \rfloor+1\)的Acceptor批准時,該提案被選定,內容由Learner發佈生成

規定:math

P1.Accpetor必然批准接收到的第一個\(<M_i,V_i>\)

P2.當Accpetor批准\(<M_i,V_i>\)後,不會再接受\(M_j \lt M_i\)的任意請求,批准的\(M_j \gt M_i\)對應的\(V_j=V_i\)(解決未提交既完成選定,實際是下放到生成的時刻)

推論:

\(<M_i,V_i>\)被選定時,必存在一個大小大於等於\(\lfloor \frac{n}{2} \rfloor+1\)的Accpetor多數集所有批准該提案

\(<M_i,M_{i+1}...M_j,V_i>\)被選定時,必存在一個大小大於等於\(\lfloor \frac{n}{2} \rfloor+1\)的Accpetor多數集所有批准\(M_i\)\(M_j\)的任一提案

\(<M_i,V_i>\)產生時,多數集必知足任意其一 1.集合不曾批准過\(M_j \lt M_i\)的任意提案 2.存在一個選定的\(M_j \lt M_i\)的提案,\(V_j = V_i\)(由超過半數得選定必有交集,而且若已存在編號小的選定,那確定是符合2)

當存在\(M_j \lt M_i\)的提案,那\(V_i\)的值必定是最大的批准的\(M_i\)所對應的\(V_i\)

所以當\(<M_i,M_{i+1}...M_j,V_i>\)被選定時,\(M_{j+1}\)\(V_{j+1} = V_i\)

目的:

1.儘快達成一致

2.少數服從多數

算法步驟:暫略

相關文章
相關標籤/搜索