高并发系统设计 40 问
系统掌握高并发系统设计核心能力,从指标到实战。
能力图谱
| 模块 | 核心能力 |
|---|---|
| 基础认知 | QPS/TPS/RT指标、瓶颈定位、架构演进、容量评估 |
| 缓存设计 | 穿透/击穿/雪崩、Redis集群、Cache Aside、一致性 |
| 消息队列 | Kafka/RocketMQ、消息可靠性、事务消息、积压处理 |
| 分库分表 | 拆分策略、分片键、全局ID、分布式事务、数据迁移 |
| 高可用设计 | 限流算法、熔断降级、超时重试、负载均衡、多活 |
| 服务治理 | 注册发现、分布式锁、链路追踪、API网关、RPC |
| 场景实战 | 秒杀系统、Feed流、计数系统、通知推送 |
学习计划
| 阶段 | 内容 | 周数 |
|---|---|---|
| L1: 基础认知与架构演进 | 指标、瓶颈、演进路径 | 1-2周 |
| L2: 缓存设计 | 穿透/击穿/雪崩、Redis、一致性 | 3-4周 |
| L3: 消息队列 | Kafka/RocketMQ、可靠性保证 | 5-6周 |
| L4: 分库分表 | 拆分策略、分片键、分布式事务 | 7-8周 |
| L5: 高可用设计 | 限流/熔断/降级、超时重试 | 9-10周 |
| L6: 服务治理 | 注册发现、分布式锁、链路追踪 | 11-12周 |
| L7: 场景实战 | 秒杀/Feed/计数/通知 | 13-14周 |
| L8: 分布式服务治理 | 注册发现、分布式锁、链路追踪 | 15-16周 |
| L9: 同城双活与容灾设计 | 同城双活、异地多活、混沌工程 | 17-18周 |
专题总结
常见坑点
- 缓存雪崩:大量 Key 同时过期,瞬间击穿到数据库
- 缓存穿透:查询不存在的数据,绕过缓存直击数据库
- 缓存击穿:热点 Key 失效,并发请求压垮数据库
- 消息丢失:生产端确认、消费端幂等未做好
- 消息积压:消费速度跟不上生产速度,队列堆积
- 分布式事务:强一致性代价大,需根据场景选择方案
- 分片键选择:错误分片键导致数据倾斜和跨片查询
- 超时设置:超时过短导致重试风暴,过长拖垮上游
- 限流粒度:全局限流 vs 接口限流 vs 用户限流,需分层设计
面试高频问题
| 类别 | 典型问题 |
|---|---|
| 架构设计 | 如何设计一个支撑百万 QPS 的系统? |
| 缓存 | Redis 和 MySQL 数据一致性怎么保证? |
| 消息队列 | 如何保证消息不丢、不重、有序? |
| 分库分表 | 分片键怎么选?跨片查询怎么处理? |
| 高可用 | 限流、熔断、降级各自的适用场景? |
| 实战 | 秒杀系统如何防止超卖? |
学习建议
本路线按照基础认知 -> 单点突破 -> 组合实战的顺序编排,建议按阶段推进。每个阶段先理解原理,再结合场景思考应用方式,最后动手验证。重点关注各组件之间的协作关系,高并发系统的难点不在于单个技术点,而在于全局的权衡与取舍。
实战项目: 本路线核心知识点已在 Ecommerce Microservices 项目中落地 -- 多级缓存 (L1 本地 + L2 Redis)、防穿透/雪崩/击穿、分布式锁 (Lua 安全释放)、熔断降级 (CircuitBreaker 三态机)、原子限流、Kafka 异步解耦。