MST

星途 面试题库

面试题:分布式系统下基于数据分片的人工智能数据一致性保障

描述在分布式系统中,当基于数据分片进行人工智能数据处理时,如何保证数据在各个分片之间的一致性,尤其是在高并发读写场景下。请详细说明常用的一致性协议及其原理,并分析其优缺点。
40.0万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

保证数据分片一致性的方法及协议

  1. 两阶段提交协议(2PC)
    • 原理
      • 准备阶段:协调者向所有参与者发送“准备”请求,参与者执行事务操作并记录日志,但不提交。如果参与者成功执行,回复“就绪”;否则回复“失败”。
      • 提交阶段:若所有参与者都回复“就绪”,协调者发送“提交”请求,参与者提交事务;若有任何一个参与者回复“失败”,协调者发送“回滚”请求,参与者回滚事务。
    • 优点
      • 简单易懂,实现相对容易,能够保证强一致性。
    • 缺点
      • 单点故障问题:协调者一旦故障,整个系统可能陷入阻塞。
      • 同步阻塞:在整个过程中,参与者一直持有资源锁,直到完成提交或回滚,期间无法处理其他事务,性能较低。
      • 数据不一致风险:在提交阶段,如果部分参与者收到“提交”请求,而部分未收到(网络分区等原因),可能导致数据不一致。
  2. 三阶段提交协议(3PC)
    • 原理
      • 询问阶段:协调者向参与者发送“询问”请求,参与者检查自身是否能完成事务操作,回复“可以”或“不可以”。
      • 准备阶段:若所有参与者都回复“可以”,协调者发送“准备”请求,参与者执行事务操作并记录日志,回复“就绪”;否则协调者发送“中断”请求,参与者中断事务。
      • 提交阶段:若所有参与者都回复“就绪”,协调者发送“提交”请求,参与者提交事务;若有参与者未回复“就绪”(如网络超时),协调者发送“回滚”请求,参与者回滚事务。
    • 优点
      • 解决了 2PC 中协调者单点故障导致的阻塞问题,引入了超时机制,在一定程度上提高了系统的容错性。
    • 缺点
      • 协议复杂,实现难度大。
      • 仍然存在数据不一致风险,例如在提交阶段网络分区,部分参与者收到“提交”,部分未收到。
  3. Paxos 算法
    • 原理
      • 由提案者(Proposer)、接受者(Acceptor)和学习者(Learner)角色组成。提案者提出提案(包含数据值),接受者决定是否接受提案,学习者获取被批准的提案。
      • 提案者先向多数接受者发送预提案(编号递增),接受者回复已接受过的最大编号提案。提案者根据回复确定提案值,再次向多数接受者发送正式提案。接受者若未接受过编号更大的提案,则接受该正式提案。
    • 优点
      • 能保证最终一致性,在网络故障、节点故障等情况下仍能正常工作,容错性强。
      • 不依赖中心节点,去中心化程度高。
    • 缺点
      • 算法复杂,实现和理解难度大。
      • 由于需要多轮消息交互,在高并发场景下性能开销较大。
  4. Raft 算法
    • 原理
      • 节点有领导者(Leader)、跟随者(Follower)和候选者(Candidate)三种状态。领导者负责处理客户端请求,将日志复制到跟随者。
      • 选举过程:节点启动为跟随者,一段时间未收到领导者心跳,变为候选者,发起选举,向其他节点请求投票,获得多数投票则成为领导者。
      • 日志复制:领导者接收客户端请求,将日志条目追加到本地日志,并行发送给跟随者,跟随者接收并持久化日志,回复确认。当多数跟随者确认,领导者提交日志并返回客户端结果。
    • 优点
      • 相对 Paxos 算法简单,易理解和实现。
      • 能够快速选出领导者,在网络分区恢复后能快速重新达成一致。
    • 缺点
      • 领导者可能成为性能瓶颈,尤其在高并发写场景下,所有写操作都需经过领导者。
      • 增加了角色状态转换机制,在某些异常情况下处理较复杂。

在高并发读写场景下的考量

在高并发读写场景下,2PC 和 3PC 由于同步阻塞特性,性能较低,不太适合。Paxos 和 Raft 虽然能保证一致性,但 Paxos 实现复杂,Raft 存在领导者瓶颈。可以根据具体场景进行优化,如采用分布式缓存减轻读压力,对写操作进行队列化处理,减少高并发对一致性协议的冲击,同时结合合适的一致性协议来保证数据分片间的一致性。