二阶段提交
角色
- 协调者(Coordinator) ↔ 负责组织事务的提交或回滚。
- 参与者(Participants) ↔ 实际执行事务操作的数据库节点。
两个阶段 #card
- 表决阶段(准备阶段,Voting/Prepare Phase) #card
- 协调者向所有参与者发送“准备提交事务”的请求。
- 参与者本地执行事务并记录 redo/undo 日志,但不提交。
- 各参与者返回“同意提交”或“中止”的表决结果给协调者。
- 执行阶段(提交阶段,Commit Phase) #card
- 如果协调者收到了所有参与者的“同意提交”,则向所有参与者发送“提交”命令,参与者正式提交并释放锁资源。
- 如果有任何一个参与者投“中止”,则协调者向所有参与者发送“回滚”命令,参与者执行回滚并释放锁资源。