MST

星途 面试题库

面试题:分布式系统3PC状态机模型在处理网络分区时的应对策略

在分布式系统中,网络分区是常见问题。当出现网络分区时,3PC的状态机模型如何保证分布式事务的一致性,详细说明其应对策略和可能面临的挑战。
12.6万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

3PC 应对网络分区保证一致性的策略

  1. 阶段一:CanCommit
    • 协调者:向所有参与者发送 CanCommit 请求,询问是否可以执行事务操作。
    • 参与者:检查自身资源状态等,若可以则回复 Yes,否则回复 No。若在规定时间内未收到协调者请求或无法响应,参与者默认回复 No
  2. 阶段二:PreCommit
    • 协调者:若所有参与者都回复 Yes,则向所有参与者发送 PreCommit 请求,告知准备提交事务;若有参与者回复 No 或超时,向所有参与者发送 Abort 请求。
    • 参与者:收到 PreCommit 请求后,锁定资源,记录事务日志,但不提交事务;收到 Abort 请求则直接中断事务。若在规定时间内未收到协调者指令,参与者根据第一阶段回复决定,若第一阶段回复 Yes 则进入 PreCommit 状态等待超时,若回复 No 则中断事务。
  3. 阶段三:DoCommit
    • 协调者:在 PreCommit 阶段收到所有参与者 Ack 响应后,向所有参与者发送 DoCommit 请求进行事务提交;若有参与者未响应或响应超时,向所有参与者发送 Abort 请求回滚事务。
    • 参与者:收到 DoCommit 请求后提交事务;收到 Abort 请求回滚事务。若在规定时间内未收到协调者指令,处于 PreCommit 状态且已等待超时的参与者会提交事务,因为大概率协调者正常且其他参与者已准备好提交,这是为了避免长时间阻塞。

可能面临的挑战

  1. 脑裂问题:网络分区后,不同分区内的协调者和参与者可能做出不同决策。例如,一个分区内协调者认为所有参与者准备好提交并发送 DoCommit,而另一个分区协调者因部分参与者未响应而发送 Abort,导致数据不一致。
  2. 同步阻塞:在等待协调者指令过程中,参与者资源被锁定,可能造成长时间阻塞,影响系统并发性能。
  3. 超时机制依赖:依赖准确的超时时间设置,若超时时间过短,可能导致不必要的事务回滚;若过长,会延长资源锁定时间和阻塞时间。
  4. 协调者单点问题:尽管 3PC 比 2PC 有所改进,但协调者依然是关键节点,若协调者在某些阶段故障且未及时恢复,可能导致事务无法按预期推进,影响一致性。