MST

星途 面试题库

面试题:分布式系统中常用的数据分区一致性保障策略有哪些,请简要阐述

在分布式系统的数据分区场景下,为了保障数据一致性,会采用多种策略。请列举并简要说明至少三种常用的数据分区一致性保障策略,包括其适用场景和基本原理。
48.2万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

1. 两阶段提交(2PC)

  • 适用场景:适用于大多数分布式事务场景,尤其是涉及多个节点共同完成一项事务,对数据一致性要求较高,且允许一定程度性能损耗的场景。
  • 基本原理:分为准备阶段(第一阶段)和提交阶段(第二阶段)。在准备阶段,协调者向所有参与者发送事务预提交请求,参与者执行事务操作并记录日志,然后反馈给协调者是否准备成功。若所有参与者都准备成功,协调者进入提交阶段,向所有参与者发送提交事务的请求,参与者执行提交操作;若有任何一个参与者准备失败,协调者向所有参与者发送回滚请求。

2. 三阶段提交(3PC)

  • 适用场景:在2PC基础上优化,适用于网络环境相对稳定,对系统容错性和一致性要求极高的分布式场景。
  • 基本原理:在2PC基础上增加了一个预询问阶段。第一阶段,协调者向参与者发送CanCommit请求,询问参与者是否可以执行事务操作,参与者反馈自身状态。第二阶段,若所有参与者回复可以执行,协调者发送PreCommit请求,参与者执行事务操作并记录日志,反馈执行结果。第三阶段,若所有参与者执行成功,协调者发送DoCommit请求,参与者正式提交事务;若有参与者执行失败,协调者发送Abort请求,参与者回滚事务。通过预询问阶段减少协调者与参与者在网络分区等异常情况下的不一致问题。

3. 分布式共识算法(如Paxos、Raft)

  • 适用场景:适用于分布式系统中多个节点需要对某个值达成一致的场景,如选举主节点、数据复制等,广泛应用于分布式数据库、分布式文件系统等。
  • 基本原理:以Raft为例,通过选举产生一个领导者(Leader),领导者负责接收客户端的写请求,将日志复制到其他节点(Follower),Follower通过心跳机制与Leader保持联系。当大多数节点(超过半数)确认接收到日志并持久化后,领导者将该日志标记为已提交并应用到状态机。若领导者出现故障,系统会重新选举新的领导者继续提供服务,保证数据一致性。

4. 同步复制

  • 适用场景:适用于对数据一致性要求非常高,且系统对写入性能要求相对不那么苛刻的场景,例如金融交易系统等。
  • 基本原理:在数据写入主节点后,主节点会等待所有从节点都成功复制该数据后,才向客户端返回成功响应。这样确保了所有节点的数据状态在写入操作完成后是一致的,但由于需要等待所有从节点的确认,写入性能相对较低。

5. 异步复制

  • 适用场景:适用于对写入性能要求较高,对数据一致性允许有短暂延迟的场景,如一些非关键数据的日志记录系统。
  • 基本原理:主节点在接收到写入请求后,立即向客户端返回成功响应,然后异步地将数据复制到从节点。这种方式提高了写入性能,但可能会在主从节点之间短暂存在数据不一致的情况,不过随着复制的进行,最终会达到一致性状态。