面试题答案
一键面试2PC基本执行流程
- 第一阶段:准备阶段(投票阶段)
- 协调者操作:协调者向所有参与者发送事务预处理请求,询问是否可以执行事务操作,并开始等待各参与者的响应。
- 参与者操作:参与者接收到请求后,执行事务操作的预处理,即对资源进行锁定、检查数据一致性等操作,但不真正提交事务。如果预处理成功,参与者向协调者反馈“准备就绪(Yes)”;如果预处理失败,如资源不足、数据不一致等问题,参与者向协调者反馈“放弃(No)”。
- 第二阶段:提交阶段(执行阶段)
- 所有参与者均反馈“准备就绪(Yes)”的情况:
- 协调者操作:协调者接收到所有参与者的“准备就绪(Yes)”响应后,向所有参与者发送事务提交请求。
- 参与者操作:参与者接收到提交请求后,正式提交事务,并释放之前锁定的资源。提交完成后,向协调者发送“事务提交完成”的确认消息。
- 有参与者反馈“放弃(No)”的情况:
- 协调者操作:协调者只要接收到任何一个参与者的“放弃(No)”响应,就向所有参与者发送事务回滚请求。
- 参与者操作:参与者接收到回滚请求后,回滚之前执行的事务预处理操作,释放锁定的资源,并向协调者发送“事务回滚完成”的确认消息。
- 所有参与者均反馈“准备就绪(Yes)”的情况:
参与者交互过程
- 协调者与参与者之间:在准备阶段,协调者广播事务预处理请求给各参与者;在提交阶段,根据参与者准备阶段的反馈,协调者向参与者广播提交或回滚请求。
- 参与者之间:参与者之间不直接交互,而是通过协调者作为中介进行信息传递和同步,保证所有参与者对事务的处理保持一致。