Skip to content

分布式系统场景题 ​

概述 ​

分布式系统是现代互联网架构的核心,涉及一致性、可用性、分区容错等经典问题。本类别精选了最具代表性的分布式系统场景题,帮助你深入理解CAP定理、分布式协调、数据一致性等核心概念。

核心知识点 ​

分布式理论 ​

  • CAP定理(一致性、可用性、分区容错)
  • BASE理论(基本可用、软状态、最终一致性)
  • 2PC、3PC、Paxos、Raft共识算法

分布式协调 ​

  • 服务发现
  • 配置管理
  • 分布式锁
  • 选主机制

数据一致性 ​

  • 强一致性 vs 最终一致性
  • 分布式事务
  • 数据同步
  • 冲突解决

高可用设计 ​

  • 故障检测
  • 自动切换
  • 负载均衡
  • 容灾备份

题目列表 ​

⭐ 如何设计分布式ID生成器 ​

难度: 高级
标签: 雪花算法、唯一性、高性能
考察点: ID生成策略、时钟回拨、分布式协调

分布式ID生成器是分布式系统的基础组件,需要保证全局唯一、高性能、有序性。

核心难点:

  • 如何保证全局唯一?
  • 如何处理时钟回拨?
  • 如何保证高性能(百万级QPS)?
  • 各种方案的优缺点?

技术方案:

  • 雪花算法(Snowflake)
  • 美团Leaf号段模式
  • 百度UidGenerator
  • 数据库自增ID

相关技术栈:


⭐ 如何设计分布式锁 ​

难度: 高级
标签: 互斥、可靠性、性能
考察点: 锁的可靠性、死锁避免、性能优化

分布式锁用于在分布式环境下实现互斥访问,是分布式系统的核心组件。

核心难点:

  • 如何保证锁的可靠性(不会丢失)?
  • 如何避免死锁?
  • 如何实现可重入?
  • 各种实现方案的对比?

技术方案:

  • Redis实现(SETNX + 过期时间)
  • Redis Redlock算法
  • Zookeeper实现(临时顺序节点)
  • Etcd实现(Lease租约)
  • 数据库实现(唯一索引)

相关技术栈:


⭐ 如何设计分布式事务 🆕 ​

难度: 专家
标签: ACID、一致性、性能
考察点: 事务模型、一致性保证、性能权衡

分布式事务是分布式系统中最复杂的问题之一,是P7+面试的重点难点。详细讲解2PC、3PC、TCC、SAGA、本地消息表五种方案,包含Seata框架的AT/TCC/SAGA模式源码分析。

核心难点:

  • 如何保证跨服务的事务一致性?
  • 2PC/3PC的性能问题如何解决?
  • TCC的幂等性、空回滚、悬挂如何处理?
  • SAGA的补偿操作如何设计?
  • 如何选择合适的分布式事务方案?

技术方案:

  • 两阶段提交(2PC)- 强一致性
  • 三阶段提交(3PC)- 改进的2PC
  • TCC(Try-Confirm-Cancel)- 最终一致性 ⭐推荐
  • SAGA长事务 - 适合长流程
  • 本地消息表 - 简单可靠 ⭐推荐
  • Seata框架 - AT/TCC/SAGA模式

相关技术栈:


如何设计分布式缓存 ​

难度: 高级
标签: 一致性哈希、缓存策略、高可用
考察点: 缓存架构、一致性保证、故障处理

分布式缓存需要解决数据分片、一致性、高可用等问题。

核心难点:

  • 如何实现数据分片(一致性哈希)?
  • 如何保证缓存和DB一致性?
  • 如何处理缓存穿透/击穿/雪崩?
  • 如何保证高可用?

技术方案:

  • 一致性哈希算法
  • 缓存更新策略(Cache-Aside、Read-Through等)
  • 多级缓存架构
  • 热点数据处理

相关技术栈:


如何设计分布式任务调度 ​

难度: 高级
标签: 任务分片、失败重试、可视化
考察点: 调度策略、任务分片、可靠性保证

分布式任务调度用于在集群中调度定时任务和批处理任务。

核心难点:

  • 如何实现任务分片?
  • 如何保证任务不重复执行?
  • 如何处理失败重试?
  • 如何实现任务依赖?

技术方案:

  • 基于数据库的调度(Quartz)
  • 基于Zookeeper的调度
  • 分片策略(一致性哈希、取模)
  • 失败补偿机制

相关技术栈:

学习路径 ​

初学者(P5-P6) ​

学习重点:

  • 理解分布式系统的基本概念
  • 掌握CAP定理和BASE理论
  • 学习简单的分布式方案

推荐题目:

  1. 分布式ID生成器(理解雪花算法)
  2. 分布式锁(理解Redis实现)

进阶者(P6-P7) ​

学习重点:

  • 深入理解分布式一致性
  • 掌握各种分布式方案的优缺点
  • 学习权衡和选型

推荐题目:

  1. 分布式锁(对比多种实现)
  2. 分布式缓存(理解一致性哈希)
  3. 分布式任务调度

高级工程师(P7-P8) ​

学习重点:

  • 掌握分布式共识算法
  • 理解分布式事务原理
  • 设计高可用架构

推荐题目:

  1. 分布式事务(掌握多种方案)
  2. 分布式一致性协议
  3. 大规模分布式系统设计

技术要点总结 ​

分布式ID生成对比 ​

方案优点缺点适用场景
数据库自增简单可靠性能差、单点小规模系统
UUID全局唯一无序、占空间不需要排序的场景
雪花算法高性能、有序时钟回拨问题大多数场景(推荐)
美团Leaf号段高性能、DB容灾号段耗尽时阻塞对ID连续性要求不高
百度UidGenerator性能极高依赖机器时钟超大规模场景

分布式锁对比 ​

方案可靠性性能复杂度适用场景
Redis单机低极高简单允许偶尔失败的场景
Redis Redlock中高中大多数场景
Zookeeper高中中可靠性要求高
Etcd高高中云原生场景
数据库高低简单低并发场景

分布式事务对比 ​

方案一致性性能复杂度适用场景
2PC强一致低中小规模、低并发
TCC最终一致高高高并发、对一致性要求不极致
SAGA最终一致高高长事务、微服务
本地消息表最终一致高中可接受最终一致

常见问题 ​

Q: CAP定理如何理解? ​

A: CAP定理指出分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)三个特性中的两个。

  • CA: 放弃分区容错,单机系统(MySQL单机)
  • CP: 放弃可用性,保证一致性(Zookeeper)
  • AP: 放弃一致性,保证可用性(Cassandra)

实际中P是必须保证的(网络分区不可避免),所以主要是在C和A之间权衡。

Q: 如何选择分布式锁方案? ​

A:

  1. 性能优先 → Redis单机锁(可接受偶尔失败)
  2. 可靠性优先 → Zookeeper(金融支付场景)
  3. 均衡方案 → Redis Redlock或Etcd
  4. 简单场景 → 数据库唯一索引

Q: 分布式事务如何选择? ​

A:

  1. 强一致性要求 → 避免分布式事务,尽量单库
  2. 可接受最终一致 → 本地消息表或可靠消息
  3. 复杂业务流程 → SAGA模式
  4. 高并发场景 → TCC模式

相关技术栈 ​

面试技巧 ​

回答框架 ​

  1. 理论基础(2分钟)

    • 说明CAP/BASE理论
    • 解释一致性级别
  2. 方案对比(5分钟)

    • 列举2-3种主流方案
    • 对比优缺点
    • 说明适用场景
  3. 深入细节(10分钟)

    • 画出架构图
    • 解释核心流程
    • 说明关键技术点
  4. 异常处理(3分钟)

    • 网络分区如何处理
    • 节点宕机如何处理
    • 时钟不同步如何处理

常见追问 ​

  1. 如果网络分区了怎么办?
  2. 如何保证幂等性?
  3. 如何处理脑裂问题?
  4. 时钟回拨如何处理?

实战建议 ​

  1. 搭建环境: 搭建Redis集群、Zookeeper集群
  2. 动手实现: 实现一个简单的分布式锁
  3. 压力测试: 测试各种方案的性能
  4. 故障演练: 模拟节点宕机、网络分区等场景

提示:分布式系统的核心在于理解权衡(Trade-off),没有完美的方案,只有最适合的方案。面试中要能说清楚不同方案的优缺点和适用场景。

正在精进