🏗️ HIGH-CONCURRENCY ARCHITECTURE

高并发全景防护方案

从用户浏览器到持久化存储,每一层做什么、防什么、怎么防——一张图讲透高并发系统的完整分层防御体系

🗺️ 请求全链路架构图(点击可跳转到对应层级)
👤
L1 · 客户端层
Browser / APP / 小程序 — 请求的起点,拦截在源头
核心理念:最高效的请求是不发出的请求。客户端是离用户最近的一层,能在这里拦截掉的请求,就绝不让它进入网络。通过本地缓存请求合并防抖节流三大手段,大幅减少不必要的网络开销。
🌐
L2 · CDN 层
Content Delivery Network — 就近分发,减轻源站压力
核心理念:让用户从最近的节点获取数据,而非回源。CDN 是高并发架构中性价比最高的优化手段。静态资源(JS/CSS/图片/视频)全部走 CDN,可挡掉 60%~80% 的总流量。动态内容也可以通过 CDN Edge Function 做边缘计算。
⚖️
L3 · SLB 负载均衡层
四层/七层负载均衡 — 流量的第一个"调度中心"
核心理念:SLB(Server Load Balancer)是所有流量的入口守门员。它负责将请求均匀分配到后端多个 Nginx/网关节点上。通过健康检查自动摘除故障节点,通过会话保持保证用户粘性。SLB 本身是高可用的(多可用区部署),单点故障概率极低。
🔧
L4 · Nginx 反向代理层
七层反向代理 — 第一道"精细化"流量控制防线
核心理念:Nginx 是整个高并发架构中承上启下的关键节点。它向上承接 SLB 分发的流量,向下转发给 API 网关或直接到微服务。Nginx 天生擅长处理海量并发连接(epoll + 非阻塞IO),同时承担限流、动静分离、SSL卸载、日志等关键职责。
🚪
L5 · API 网关层
Spring Cloud Gateway / Kong — 统一入口,精细化管控
核心理念:API 网关是微服务架构的"统一门面"。所有外部请求只与网关通信,网关负责鉴权、限流、路由、熔断、降级、协议转换、日志审计。它把横切关注点从业务代码中剥离出来,让微服务只专注业务逻辑。网关层是实施 Sentinel/Resilience4j 熔断限流的最佳位置。
⚙️
L6 · 微服务业务层
Spring Boot / Go — 高并发战斗的核心战场
核心理念:业务层是高并发系统的核心战场。代码层面的每个细节都会被流量放大——一个 synchronized 可能让吞吐量从10万降到1千,一个慢 SQL 可以拖垮整个连接池。这一层需要关注:本地缓存(Caffeine)、无锁设计(CAS/Disruptor)、线程池隔离、异步编程(CompletableFuture/WebFlux)、连接池调优
L7 · Redis 缓存层
分布式缓存 — 高并发读写的第一道加速器
核心理念:Redis 是高并发架构中投资回报率最高的中间件。一次 Redis 读操作 <1ms,一次 MySQL 读操作可能 5~50ms。用好 Redis 可以把 90% 以上的读请求挡在数据库之外。但 Redis 也引入了新问题:缓存穿透/击穿/雪崩、热点Key、大Key、缓存一致性
🗃️
L8 · MySQL 数据库层
关系型数据库 — 数据持久化的最终防线
核心理念:无论上层怎么优化,最终写操作都要落到数据库。MySQL 是整个链路中最脆弱、最昂贵的节点——单机 QPS 上限通常在 5000~20000,且写操作比读操作慢 10~100 倍。核心策略:读写分离(主写从读)、分库分表(水平拆分)、索引优化(避免全表扫描)、连接池调优(HikariCP)。
💾
L9 · 消息队列 & 搜索引擎
Kafka / Elasticsearch / OSS — 削峰、检索、归档
核心理念:这一层解决三个问题:削峰(Kafka/RocketMQ 缓冲瞬时流量)、检索(Elasticsearch 承担复杂查询,解放 MySQL)、存储(OSS/S3 存储大文件,数据库只存元数据)。消息队列还是异步解耦的核心——把非实时操作(发通知、写日志、数据同步)从同步链路中剥离出去。
🔗
L10 · 第三方服务层
支付/短信/地图 — 你无法控制的,但你必须防御的
核心理念:第三方服务是你无法控制的外部依赖——它们的可用性、延迟、限流策略都不在你手上。但它们的故障会拖垮你的系统。核心原则:永远不要信任外部服务。必须设置超时时间熔断器降级策略(如支付失败返回"稍后再试")、异步调用(把同步等待变成消息回调)。

🎯 高并发防护十大核心原则

  1. 能缓存的绝不回源 — 多级缓存(客户端→CDN→本地缓存→Redis→数据库),层层拦截
  2. 能异步的绝不同步 — 消息队列削峰,CompletableFuture 并行,WebFlux 响应式
  3. 能合并的绝不单发 — 批量查询、请求合并(Collapser)、Pipeline
  4. 能限流的绝不硬扛 — 每一层都要有限流(客户端→网关→服务→DB连接池)
  5. 能降级的绝不死等 — 熔断 + 降级 + 兜底,保核心链路
  6. 能用无锁的别加锁 — CAS/Atomic/ConcurrentHashMap/Disruptor,锁是吞吐量的天敌
  7. 能拆分的别集中 — 分库分表、读写分离、微服务拆分、热点Key打散
  8. 能就近的别远程 — CDN、本地缓存、同机房调用、避免跨区域
  9. 能预热的别冷启动 — 缓存预热、JVM预热、K8s readinessProbe、连接池预热
  10. 能监控的别盲跑 — Prometheus + Grafana 全链路监控,P99 告警,实时容量评估

📊 各层防护手段一览

👤 客户端

本地缓存、防抖节流、请求合并、数据预加载

🌐 CDN

静态资源缓存、边缘计算、域名分片、WebSocket就近接入

⚖️ SLB

负载均衡、健康检查、会话保持、DDoS基础防护

🔧 Nginx

限流(limit_req)、动静分离、SSL卸载、gzip压缩

🚪 网关

统一鉴权、路由、Sentinel限流熔断、灰度发布

⚙️ 服务

线程池隔离、本地缓存、无锁设计、异步编排

⚡ Redis

分布式缓存、布隆过滤器、分布式锁、热点Key本地缓存

🗃️ MySQL

读写分离、分库分表、索引优化、连接池调优

💾 MQ & ES

削峰填谷、异步解耦、复杂查询下推、数据归档

🔗 第三方

超时设置、熔断降级、异步回调、多供应商备份