1. 两阶段提交(2PC)的协调者与参与者协议流程是什么,同步阻塞、协调者单点与脑裂问题如何产生?
说明两阶段提交(2PC)的协调者与参与者协议流程,以及同步阻塞、协调者单点与脑裂问题如何产生?
- 2PC 的 prepare 与 commit 两阶段
- 同步阻塞(参与者等待协调者)
- 协调者单点与脑裂
2PC 由协调者(coordinator)与多个参与者(participant)组成。第一阶段 Prepare:协调者向所有参与者发送 prepare 请求,各参与者执行本地事务并响应"可以提交"或"中止";第二阶段 Commit/Abort:协调者若收到全部"可以提交"则广播 commit,否则广播 abort,各参与者据此提交或回滚。同步阻塞问题:参与者提交 prepare 后,必须阻塞等待协调者的最终决策,若协调者故障,参与者无法确定提交/中止,只能等待(阻塞)。协调者单点问题:协调者是唯一决策者,其故障导致整个事务无法推进。脑裂问题:若协调者与部分参与者网络分区,协调者无法确认全部参与者状态,可能做出与其他协调者不一致的决策,导致数据不一致。这些缺陷使 2PC 在分布式环境下可靠性不足。
2PC 的阻塞源于"协调者单点 + 全体一致 + 无超时恢复":参与者 prepare 后失去决策能力,协调者又是唯一决策者。脑裂则源于分区时无法确认全体状态。这些是 2PC 的固有缺陷,也是引入 3PC、SAGA、TCC 的原因。