随便敲的,看看就好(被书折腾后凭感觉写的,可能小误

PAXOS 针对 2PC 的保守策略改为少数服从多数的更为合理的策略

每个 Acceptor 可批准多个提案

每个 Proposer 有唯一的身份标记 Mi,以及对应的提案内容 Vi,用 <M,V> 表示一个提案

注意提案者 M 其实是会暗中附和其它人的提案内容,因此 V 并不唯一,所谓的选定提案更为关注的是内容 V

提案超过半数即大于等于 n2+1 的 Acceptor 批准时,该提案被选定,内容由 Learner 发布

规定:

P1.Accpetor 必然批准接收到的第一个 <Mi,Vi>

P2.当 Accpetor 批准 <Mi,Vi> 后,不会再接受 Mj<Mi 的任意请求,批准的 Mj>Mi 对应的 Vj=Vi(解决未提交即完成选定,实际是下放到生成的时刻)

推论:

<Mi,Vi> 被选定时,必存在一个大小大于等于 n2+1 的 Accpetor 多数集全部批准该提案

<Mi,Mi+1...Mj,Vi> 被选定时,必存在一个大小大于等于 n2+1 的 Accpetor 多数集全部批准 MiMj 的任一提案

<Mi,Vi> 产生时,多数集必满足任意其一 1.集合未曾批准过 Mj<Mi 的任意提案 2.存在一个选定的 Mj<Mi 的提案,Vj=Vi(由超过半数得选定必有交集,并且若已存在编号小的选定,那肯定是符合 2)

当存在 Mj<Mi 的提案,那 Vi 的值一定是最大的批准的 Mi 所对应的 Vi

因此当 <Mi,Mi+1...Mj,Vi> 被选定时,Mj+1Vj+1=Vi

目的:

1.尽快达成一致

2.少数服从多数

算法步骤:暂略