高并发架构概览
2026/10/11大约 3 分钟
高并发架构概览
高并发的本质不是「跑得更快」,而是在资源有限时,让系统保持可用与可预期的延迟。它是一套「先保命、再提速」的方法论,而不是堆硬件。
1. 重新理解「高并发」
很多人把高并发等同于「QPS 数字大」。实际上真正的挑战是:
- 瞬时峰值:平时 1 万 QPS,活动日瞬间 10 万——按峰值备容量成本极高;
- 尾延迟:P99 从 50ms 飙到 2s,用户感知是「卡」;
- 级联故障:某个下游变慢,上游线程被占满,故障沿调用链放大,最终全站雪崩;
- 数据一致性:高并发下缓存与数据库、多个副本之间极易不一致。
所以高并发的三个关键词是:削峰(把峰值摊平)、解耦(让慢的不拖累快的)、保护(过载时优雅降级而非崩溃)。
2. 方法论:先诊断,再动手
不要一上来就扩容。标准流程是:
容量规划 → 压测 → 瓶颈定位 → 保护策略 → 扩容/优化| 阶段 | 目标 | 手段 |
|---|---|---|
| 容量规划 | 估算峰值 QPS、数据量、连接数 | 业务峰值 × 安全系数(常取 3~5 倍) |
| 压测 | 找到系统的真实上限 | JMeter / wrk / Gatling,测出拐点 |
| 瓶颈定位 | 找出限制吞吐的资源 | 火焰图、链路追踪、监控(见 可观测性) |
| 保护策略 | 让过载不致命 | 限流、降级、熔断、排队 |
| 扩容/优化 | 提升上限 | 加机器、加缓存、异步化、分库分表 |
先保护,再谈极限性能
没有保护的高性能系统,越强越危险——它能扛住更大的流量,也意味着崩溃时影响更大。限流降级永远是高并发改造的第一步,而不是最后一步。
3. 核心手段全景
| 手段 | 作用 | 代价 |
|---|---|---|
| 缓存 | 用内存换 DB/计算,扛读 | 一致性、穿透/击穿/雪崩问题 |
| 异步化 | 削峰、解耦、提高吞吐 | 一致性变为最终一致,链路更难追 |
| 限流 | 保护系统不过载 | 会拒绝部分请求 |
| 降级 | 保核心功能 | 牺牲非核心体验 |
| 熔断 | 隔离故障依赖 | 依赖不可用时返回兜底 |
| 读写分离 / 分库分表 | 突破存储单点 | 运维与一致性复杂 |
| 静态化 / CDN | 让流量不到服务器 | 内容更新有延迟 |
| 无状态化 | 便于水平扩容 | 需要 Session/JWT 等改造 |
4. 关键原则
- 缓存是抗读的主要武器:绝大部分高并发系统,读多写少,缓存能把 DB 压力降几个数量级。详见 缓存架构。
- 异步化是抗写峰值的主要武器:用消息队列把同步写变成异步落地,削平尖峰。
- 保护优先:限流保护自己,熔断保护依赖,降级保障核心。详见 限流降级熔断。
- 无状态才能水平扩展:应用尽量无状态,会话与状态外置(见 分布式会话)。
- 全链路压测,而非单点压测:真正的瓶颈常出现在意料之外的环节(DB 连接池、第三方接口)。
5. 专题导航
- 缓存架构:缓存模式、一致性策略、穿透/击穿/雪崩应对。
- 限流降级熔断:四种限流算法与 Sentinel/Guava 落地。
- 秒杀系统设计:把以上手段在极端场景下完整串起来。
- 相关:分布式锁 用于临界资源保护,分布式 ID 用于高并发发号。
6. 小结
- 高并发的目标不是「极致快」,而是可控的可用性与延迟。
- 方法是:容量规划 → 压测 → 定位瓶颈 → 先保护 → 再扩容优化。
- 四大核心手段:缓存、异步、限流降级熔断、无状态水平扩展。
- 保护策略要先行落地,否则再强的性能也只是把事故规模放大。