一、背景与概念
在分布式系统中,多个节点通常需要协同完成同一个事务(Transaction)。为了保证事务的 原子性(Atomicity)——即要么所有节点都提交,要么所有节点都回滚——需要一种协调机制来保证“一致提交或一致回滚”。
两阶段提交算法(Two-Phase Commit,简称 2PC) 是一种经典的分布式事务一致性协议,用于在多个参与者之间实现事务的原子提交。
二、核心思想
两阶段提交协议分为两个阶段:
-
准备阶段(Phase 1: Prepare / Vote)
协调者(Coordinator)向所有参与者(Participants)发送事务提交请求,参与者进行准备,并回复是否同意提交。 -
提交阶段(Phase 2: Commit)
如果所有参与者都同意提交,协调者发送 “提交” 指令;否则发送 “回滚” 指令。
三、系统角色与工作流程
2PC中主要有两个角色:
-
协调者(Coordinator)
负责发起事务、收集投票、决定最终提交或回滚。 -
参与者(Participants)
负责实际执行事务操作,并根据协调者指令进行提交或回滚。
四、两阶段提交算法的思维导图
五、两阶段提交的时序图
六、流程详解(Mermaid 流程图)
七、2PC 的缺点与改进方向
| 问题 | 描述 | 改进方案 |
|---|---|---|
| 同步阻塞 | 所有节点在等待协调者指令时无法自由操作 | 引入异步提交、超时机制 |
| 单点故障 | 协调者崩溃可能导致事务不确定状态 | 采用主备协调者机制 |
| 不确定状态 | 某些节点在等待提交或回滚时状态不明确 | 可结合三阶段提交(3PC)或 Paxos/Raft 共识算法 |
1488



被折叠的 条评论
为什么被折叠?



