MST

星途 面试题库

面试题:分布式系统中2PC如何进行故障恢复

请阐述在分布式事务中,两阶段提交(2PC)协议是如何处理节点故障实现恢复的,需要详细说明每个阶段发生故障时的应对策略。
46.5万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

准备阶段(第一阶段)

  1. 协调者故障
    • 参与者会等待协调者的指令超时。若超时,参与者通常会回滚事务。因为没有协调者的进一步指示,参与者无法确定事务最终的提交状态,为保证数据一致性,选择回滚是较为安全的策略。
  2. 参与者故障
    • 如果某个参与者在准备阶段故障,协调者在等待超时后,会向其他正常的参与者发送回滚指令。因为只要有一个参与者无法成功准备,整个事务就不具备提交的条件,所以通过回滚来确保数据一致性。

提交阶段(第二阶段)

  1. 协调者故障
    • 对于已经收到提交指令的参与者,它们会继续提交事务并完成操作。因为它们已经接收到了协调者的最终提交指示,所以按照指示完成事务提交。
    • 对于没有收到提交指令的参与者,它们会等待协调者恢复。协调者恢复后,会重新向这些未收到提交指令的参与者发送提交指令,以确保所有参与者的事务状态一致。
  2. 参与者故障
    • 如果在提交阶段某个参与者故障,对于已经提交的参与者,事务状态已不可更改。而对于故障的参与者,待其恢复后,协调者会根据事务日志等机制,确保故障参与者能正确完成事务提交或回滚(如果其他参与者回滚了事务)。如果其他参与者都成功提交,协调者会指示故障恢复的参与者提交事务;如果其他参与者回滚,协调者会指示故障恢复的参与者回滚事务。