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