面试题答案
一键面试角色
- 协调者(Coordinator):负责协调所有参与者的操作,决定事务是否提交或回滚。
- 参与者(Participants):负责执行本地事务操作,并向协调者反馈操作结果。
基本流程
- 第一阶段:准备阶段(Prepare Phase)
- 协调者:
- 向所有参与者发送
Prepare
消息,询问是否可以执行事务提交操作。
- 向所有参与者发送
- 参与者:
- 接收到
Prepare
消息后,执行本地事务,但不提交。 - 记录事务日志,用于故障恢复。
- 向协调者反馈执行结果:如果本地事务执行成功,返回
Yes
;如果执行失败,返回No
。
- 接收到
- 协调者:
- 第二阶段:提交/回滚阶段(Commit/Rollback Phase)
- 协调者:
- 如果所有参与者都返回
Yes
,则向所有参与者发送Commit
消息。 - 如果有任何一个参与者返回
No
,或者在规定时间内没有收到所有参与者的响应,则向所有参与者发送Rollback
消息。
- 如果所有参与者都返回
- 参与者:
- 接收到
Commit
消息后,提交本地事务。 - 接收到
Rollback
消息后,回滚本地事务。 - 完成提交或回滚操作后,向协调者发送确认消息。
- 接收到
- 协调者:
- 接收到所有参与者的确认消息后,事务完成。
- 协调者: