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),没有完美的方案,只有最适合的方案。面试中要能说清楚不同方案的优缺点和适用场景。

正在精进