什么是 Paxos 共识算法
Paxos 通过提案编号与多数派接受达成共识:只要多数派存活,系统就能就某个值达成一致。基础 Paxos(Single-Decree)解决单值决策问题,Multi-Paxos 通过选举稳定领导者把阶段一摊薄,扩展到日志复制场景。理解它的重点在多数派交集如何保证安全性,而不是记忆阶段名称。
基本信息
| 角色 | 提议者(Proposer)、接受者(Acceptor)、学习者(Learner) |
|---|---|
| 核心步骤 | Prepare/Promise、Accept/Accepted 两阶段 |
| 安全性来源 | 任一多数派集合之间必有交集,保证已选定的值不会被覆盖 |
| 工程关系 | Raft 可视为面向工程实现优化的共识协议,与 Multi-Paxos 同源 |
典型使用场景
- 分布式元数据管理:选主、配置变更与成员信息需要强一致存储
- 日志复制:Multi-Paxos 用稳定领导者把连续决策摊薄,提升吞吐
- 跨机房协调:在多数派可通信的前提下保证决策唯一
- 分布式锁与租约:就租约归属达成一致,避免双主
- 配置中心:版本号与配置内容的一致性分发
- 理解共识原理:作为学习 Raft 等工程实现的对照基线
单值决策流程(简化)
单值决策流程(简化)
# 阶段一:准备
Proposer -> Prepare(n) # 提案编号 n 必须全局递增
Acceptor -> Promise(n) # 承诺不再接受编号小于 n 的提案
# 若已接受过提案,返回其编号与值
# 阶段二:接受
Proposer -> Accept(n, v) # v 若来自已接受值则必须沿用该值
Acceptor -> Accepted(n, v)
# 多数派接受后该值被选定,Learner 学习结果
# 多值扩展
稳定领导者复用阶段一,连续决策只做阶段二,吞吐显著提升Paxos 与 Raft 对照
| 维度 | Paxos(Multi-Paxos) | Raft |
|---|---|---|
| 角色 | 提议者、接受者、学习者 | 领导者、跟随者、候选者 |
| 领导选举 | 未在算法内固定,实现自行处理 | 算法内显式定义选举与任期 |
| 日志顺序 | 需自行限定并发提案以保持顺序 | 按任期与索引强制定序 |
| 工程落地 | 理解与实现难度高,常见于自研系统 | 实现资料充足,主流共识库多基于此 |
理解 Paxos 的关键是多数派交集:任意两个多数派集合至少有一个共同成员,因此已选定的值不会被后续提案覆盖。
直接实现基础 Paxos 处理日志流风险很高:并发提案、空洞与恢复逻辑都要自行保证,实践中通常直接用成熟共识库。