分布式基础面试线路
[ 2025.4.17更新 ]
分布式系统面试学习线路(八大阶段)
目标:掌握分布式系统核心原理与工程能力,聚焦一致性、调度、通信、容错、可用性等方向,提升系统设计与面试答题表达能力。
第一阶段:分布式基础与关键概念
目标:理解分布式系统的整体设计目标与基本术语
1. 什么是分布式系统?
- 多个节点协同完成一项任务
- 实现可扩展、高可用、容错的架构能力
2. CAP 理论
- C(一致性):所有节点数据一致
- A(可用性):每次请求都能获得响应
- P(分区容忍性):网络分区下系统仍可运行
3. BASE 理论
- Basically Available、Soft State、Eventually Consistent
- 与 ACID 的对比:弱一致换高可用
4. 面试题
- CAP 三者不能同时满足,优先级如何选?
- 什么场景选强一致,什么场景选最终一致?
第二阶段:分布式 ID 与唯一性生成
目标:掌握雪花算法与各种唯一 ID 生成方式原理与实现
1. 分布式 ID 的需求
- 数据库主键冲突、订单号唯一性
2. 常见方案
- 数据库自增(不推荐)
- Redis 自增(性能高、需容错)
- UUID(无序、空间大)
- Twitter 雪花算法(Snowflake)
- 时间戳 + 机器号 + 序列号组合
3. 面试题
- 雪花算法如何保证全局唯一且有序?
- Redis 生成 ID 会有什么问题?怎么解决?
第三阶段:分布式锁与一致性控制
目标:掌握分布式场景下的锁设计方案及原子性控制手段
1. 分布式锁的实现方式
- 基于数据库(悲观锁/乐观锁)
- Redis 分布式锁(SETNX + EXPIRE)
- Redisson 实现原理
- Zookeeper 分布式锁(临时顺序节点)
2. 注意点
- 自动过期、续期机制
- 避免死锁、误释放锁
3. 面试题
- 分布式锁如何防止超时误删?
- Zookeeper 和 Redis 分布式锁对比?
第四阶段:分布式事务处理机制
目标:掌握常见的分布式事务方案与一致性保证手段
1. 分布式事务的挑战
- 跨多个系统或数据库,无法用本地事务一致提交
2. 解决方案
- 2PC(两阶段提交) / 3PC(三阶段)
- TCC 模型(Try-Confirm-Cancel)
- 本地消息表 + 最终一致性
- Seata 框架简介
3. 面试题
- 两阶段提交的问题与改进?
- TCC 与 AT 模式对比?
- 如何实现分布式事务补偿?
第五阶段:服务注册与发现机制
目标:理解服务自动发现与注册中心的作用与机制
1. 注册中心作用
- 服务实例注册、健康检测、负载均衡与故障转移
2. 常见实现
- Eureka:CP 架构,Netflix 提出
- Nacos:支持配置中心,注册 + 配置一体化
- Zookeeper:强一致性,基于 ZAB 协议
3. 面试题
- 注册中心怎么防止脑裂?
- Nacos 与 Eureka 有什么区别?
第六阶段:分布式通信与消息队列
目标:掌握系统间通信与异步解耦的核心机制
1. 通信方式
- HTTP / REST 接口
- RPC 框架(Dubbo、gRPC)
2. 消息队列作用
- 解耦、削峰、异步
- Kafka、RocketMQ、RabbitMQ 区别与原理
3. 消息投递保障
- 至少一次、至多一次、恰好一次
4. 面试题
- 为什么引入 MQ 能提升系统稳定性?
- 如何保证消息不丢、不重复、不乱序?
第七阶段:高可用与容错设计
目标:掌握分布式系统中提升可用性的关键策略
1. 限流、熔断、降级
- Sentinel、Hystrix、Resilience4j
- 常用算法:漏桶、令牌桶
2. 服务治理与健康检测
- 超时控制、最大并发数控制
- 服务熔断后恢复机制(Half-Open)
3. 面试题
- 熔断和限流有什么区别?
- Sentinel 是如何做流控的?
第八阶段:面试高频题整理
目标:熟练掌握高频问题,形成系统的答题表达体系
高频面试题清单:
- CAP 理论和 BASE 理论你如何理解?
- 如何生成分布式全局唯一 ID?为什么推荐雪花算法?
- 分布式锁有哪些实现方式?各自优缺点?
- 什么是 TCC 分布式事务?适用什么场景?
- RocketMQ 如何实现最终一致性?
- Eureka 与 Zookeeper 的区别?
- 为什么要用消息队列?怎么保证消息可靠性?
- Dubbo 中的负载均衡策略有哪些?
- 限流和熔断的区别?如何配置?
- 如何设计一个高可用、可扩展的分布式订单系统?
附录:学习资料与实战建议
推荐资料
- 《分布式服务框架原理与实践》
- 《深入理解分布式系统设计》
- 阿里开源项目:RocketMQ、Dubbo、Sentinel、Nacos
- B站:分布式系统原理与架构设计实战课程
实践建议
- 自己搭建一套简易分布式系统(Spring Cloud / Dubbo + RocketMQ + Nacos)
- 模拟网络异常、锁竞争、消息丢失等场景做测试
- 配合使用分布式链路追踪工具(如 SkyWalking、Zipkin)