🏗️ HIGH-CONCURRENCY ARCHITECTURE
高并发全景防护方案
从用户浏览器到持久化存储,每一层做什么、防什么、怎么防——一张图讲透高并发系统的完整分层防御体系
核心理念:最高效的请求是不发出的请求。客户端是离用户最近的一层,能在这里拦截掉的请求,就绝不让它进入网络。通过本地缓存、请求合并、防抖节流三大手段,大幅减少不必要的网络开销。
核心理念:让用户从最近的节点获取数据,而非回源。CDN 是高并发架构中性价比最高的优化手段。静态资源(JS/CSS/图片/视频)全部走 CDN,可挡掉 60%~80% 的总流量。动态内容也可以通过 CDN Edge Function 做边缘计算。
核心理念:SLB(Server Load Balancer)是所有流量的入口守门员。它负责将请求均匀分配到后端多个 Nginx/网关节点上。通过健康检查自动摘除故障节点,通过会话保持保证用户粘性。SLB 本身是高可用的(多可用区部署),单点故障概率极低。
核心理念:Nginx 是整个高并发架构中承上启下的关键节点。它向上承接 SLB 分发的流量,向下转发给 API 网关或直接到微服务。Nginx 天生擅长处理海量并发连接(epoll + 非阻塞IO),同时承担限流、动静分离、SSL卸载、日志等关键职责。
核心理念:API 网关是微服务架构的"统一门面"。所有外部请求只与网关通信,网关负责鉴权、限流、路由、熔断、降级、协议转换、日志审计。它把横切关注点从业务代码中剥离出来,让微服务只专注业务逻辑。网关层是实施 Sentinel/Resilience4j 熔断限流的最佳位置。
核心理念:业务层是高并发系统的核心战场。代码层面的每个细节都会被流量放大——一个 synchronized 可能让吞吐量从10万降到1千,一个慢 SQL 可以拖垮整个连接池。这一层需要关注:本地缓存(Caffeine)、无锁设计(CAS/Disruptor)、线程池隔离、异步编程(CompletableFuture/WebFlux)、连接池调优。
核心理念:Redis 是高并发架构中投资回报率最高的中间件。一次 Redis 读操作 <1ms,一次 MySQL 读操作可能 5~50ms。用好 Redis 可以把 90% 以上的读请求挡在数据库之外。但 Redis 也引入了新问题:缓存穿透/击穿/雪崩、热点Key、大Key、缓存一致性。
核心理念:无论上层怎么优化,最终写操作都要落到数据库。MySQL 是整个链路中最脆弱、最昂贵的节点——单机 QPS 上限通常在 5000~20000,且写操作比读操作慢 10~100 倍。核心策略:读写分离(主写从读)、分库分表(水平拆分)、索引优化(避免全表扫描)、连接池调优(HikariCP)。
核心理念:这一层解决三个问题:削峰(Kafka/RocketMQ 缓冲瞬时流量)、检索(Elasticsearch 承担复杂查询,解放 MySQL)、存储(OSS/S3 存储大文件,数据库只存元数据)。消息队列还是异步解耦的核心——把非实时操作(发通知、写日志、数据同步)从同步链路中剥离出去。
核心理念:第三方服务是你无法控制的外部依赖——它们的可用性、延迟、限流策略都不在你手上。但它们的故障会拖垮你的系统。核心原则:永远不要信任外部服务。必须设置超时时间、熔断器、降级策略(如支付失败返回"稍后再试")、异步调用(把同步等待变成消息回调)。
🎯 高并发防护十大核心原则
- 能缓存的绝不回源 — 多级缓存(客户端→CDN→本地缓存→Redis→数据库),层层拦截
- 能异步的绝不同步 — 消息队列削峰,CompletableFuture 并行,WebFlux 响应式
- 能合并的绝不单发 — 批量查询、请求合并(Collapser)、Pipeline
- 能限流的绝不硬扛 — 每一层都要有限流(客户端→网关→服务→DB连接池)
- 能降级的绝不死等 — 熔断 + 降级 + 兜底,保核心链路
- 能用无锁的别加锁 — CAS/Atomic/ConcurrentHashMap/Disruptor,锁是吞吐量的天敌
- 能拆分的别集中 — 分库分表、读写分离、微服务拆分、热点Key打散
- 能就近的别远程 — CDN、本地缓存、同机房调用、避免跨区域
- 能预热的别冷启动 — 缓存预热、JVM预热、K8s readinessProbe、连接池预热
- 能监控的别盲跑 — Prometheus + Grafana 全链路监控,P99 告警,实时容量评估
📊 各层防护手段一览
👤 客户端
本地缓存、防抖节流、请求合并、数据预加载
🌐 CDN
静态资源缓存、边缘计算、域名分片、WebSocket就近接入
⚖️ SLB
负载均衡、健康检查、会话保持、DDoS基础防护
🔧 Nginx
限流(limit_req)、动静分离、SSL卸载、gzip压缩
🚪 网关
统一鉴权、路由、Sentinel限流熔断、灰度发布
⚙️ 服务
线程池隔离、本地缓存、无锁设计、异步编排
⚡ Redis
分布式缓存、布隆过滤器、分布式锁、热点Key本地缓存
🗃️ MySQL
读写分离、分库分表、索引优化、连接池调优
💾 MQ & ES
削峰填谷、异步解耦、复杂查询下推、数据归档
🔗 第三方
超时设置、熔断降级、异步回调、多供应商备份