MST

星途 面试题库

面试题:分布式系统中分布式数据库 ACID 特性之一致性挑战

在分布式数据库环境下,数据可能分布在多个节点,网络延迟、节点故障等情况时有发生。请阐述一下这些因素是如何对 ACID 特性中的一致性产生挑战的,并简要说明一种常见的应对策略。
10.4万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

对一致性产生的挑战

  1. 网络延迟 在分布式系统中,当一个数据更新操作发生时,需要将更新传播到多个节点以保证数据一致性。网络延迟可能导致部分节点接收更新的时间显著晚于其他节点,在这期间,不同节点上的数据状态不一致,这与一致性要求的所有节点数据状态保持一致相冲突。例如,在一个电商库存系统中,当库存数量更新时,由于网络延迟,部分节点的库存显示已更新,而其他节点仍显示旧的库存数量,这就影响了数据一致性。
  2. 节点故障 节点故障可能导致数据无法及时同步。如果某个持有数据副本的节点发生故障,在其恢复之前,其他节点无法与其进行数据同步。例如,分布式文件系统中,一个存储文件副本的节点故障,其他节点在读取该文件时,可能获取到旧版本的数据,因为故障节点的更新没有同步过来,从而破坏了一致性。

常见应对策略 - 两阶段提交协议(2PC)

  1. 准备阶段
    • 协调者向所有参与者发送事务预提交请求,并等待所有参与者的响应。
    • 参与者接收到请求后,执行事务操作,但不提交,然后向协调者反馈事务执行结果(成功或失败)。
  2. 提交阶段
    • 如果所有参与者都反馈事务执行成功,协调者向所有参与者发送提交事务的请求,参与者收到请求后正式提交事务。
    • 如果有任何一个参与者反馈事务执行失败,协调者向所有参与者发送回滚事务的请求,参与者收到请求后回滚事务。通过这种方式,尽量保证所有节点要么都提交事务,要么都回滚事务,从而维护数据的一致性。但 2PC 也有一些缺点,比如单点故障(协调者故障可能导致整个事务无法继续)、同步阻塞(在等待参与者响应过程中,资源处于锁定状态)等。