面试题答案
一键面试- 协调者故障恢复
- 日志恢复:协调者重启后,首先读取其本地日志。日志记录了两阶段提交过程中的各个状态,如准备阶段参与者的响应、提交或回滚的决策等。
- 确定恢复操作:
- 如果日志显示处于准备阶段且部分参与者已响应:协调者重新向未响应的参与者发送准备消息。若所有参与者都回复准备成功,协调者发送提交消息;若有参与者回复失败,则发送回滚消息。
- 如果日志显示已决定提交:协调者向所有参与者重新发送提交消息,确保所有参与者执行提交操作,完成Snapshot操作。
- 如果日志显示已决定回滚:协调者向所有参与者重新发送回滚消息,撤销已进行的部分Snapshot操作,保证数据一致性。
- 参与者故障恢复
- 日志分析:参与者重启后,读取本地日志确定故障前两阶段提交的状态。
- 根据状态恢复:
- 如果日志显示处于准备阶段且已向协调者发送准备成功响应:等待协调者的进一步指令(提交或回滚)。若在一定时间内未收到指令,主动向协调者询问状态。
- 如果日志显示已收到提交消息:执行提交操作,完成Snapshot相关的数据持久化,确保Snapshot操作完整性。
- 如果日志显示已收到回滚消息:执行回滚操作,撤销在准备阶段所做的临时数据修改,保证数据一致性。