
Basic Paxos通过二阶段提交(Prepare阶段和Accept阶段)实现分布式共识,确保多个节点对某个值达成一致。其核心在于角色分工和提案编号的严格比较:
[n, v],其中 n 是全局唯一的提案编号,v 是提议值。Acceptor仅接受编号不小于其承诺的最小编号的提案。针对客户端1(提案 [1, 3])和客户端2(提案 [5, 7])并发创建只读变量 X 的场景:
Prepare(1),客户端2向节点C发送 Prepare(5)。
Prepare(5)(编号更高),节点A、B更新承诺为拒绝编号 ≤5 的提案。
客户端1向节点C发送 Prepare(1) 被忽略(编号低于C的承诺)。
Accept([1, 3]),但被所有节点拒绝(编号1 < 承诺的5)。Accept([5, 7]),所有节点接受该提案,达成共识值 X=7。Basic Paxos的局限性在于每次共识需完整的两阶段提交,Multi-Paxos通过以下改进提升性能: