2PC和3PC
2PC(Two-Phare Commit)
阶段一:提交事务请求
1 - 事务询问 协调者像所有参与者发送事务内容,询问是否可以执行事务提交操作,并开始等待各参与者的响应。
2 - 执行事务 各参与者执行事务,并记录Undo和Redo信息(Undo和Redo是数据库用来commit和rollback的记录文件)
3 - 各参与者向协调者反馈事务询问的响应 如果参与者事务执行成功,则返回给协调者yes,否则返回给协调者no
阶段二:执行事务提交
1 - 执行事务提交(所有的参与者均返回yes)
1 - 发送提交请求 协调者向所有参与者发送提交请求
2 - 事务提交 参与者接收到协调者发出的请求后,完成自己的事务提交,并在提交完成后释放这个事务执行期间占据的资源
3 - 反馈事务提交结果 参与者在完成事务后,像协调者发送Ack消息
4 - 完成事务 协调者接收到所有参与者返回的Ack消息,完成整个分布式事务
2 - 执行事务回滚(非所有参与者均返回yes)
1 - 发送回滚请求 协调者向所有参与者发送rollback请求
2 - 事务回滚 参与者接收到协调者发出的请求后,完成自己的事务回滚,并在提交完成后释放这个事务执行期间占据的资源
3 - 反馈事务回滚结果 参与者在完成各自的事务回滚后,向协调者发送Ack消息
4 - 中断事务(回滚事务) 协调者接收到所有参与者返回的Ack消息后,完成分布式事务的回滚