微服务是大型架构核心,下面我详解Spring Cloud Gateway千万并发@mikechen
异步非阻塞
异步非阻塞让 Gateway 具备了“以少量线程应对海量请求”的基础能力,是“千万并发”的前提。

传统 Servlet 模型(如 Spring MVC)采用“线程/请求”绑定模式——每个请求占用一个线程。
在高并发下,线程数量暴涨,CPU 上下文切换和内存开销迅速成为瓶颈。
而 Spring Cloud Gateway 基于 WebFlux 与 Reactor 响应式编程模型,底层使用 Netty 异步非阻塞 IO。
每个请求不会阻塞等待,而是通过事件循环机制异步触发回调,少量线程可同时管理大量连接。
分布式扩容
单节点性能再强,也有上限。
当流量从百万跃升至千万,分布式水平扩展成为核心手段。
Spring Cloud Gateway 的分布式扩容通常通过以下策略实现:

多实例水平扩展:
利用容器(Docker/K8s)快速复制多个 Gateway 实例。
通过负载均衡(如 Nginx、LVS、SLB),进行流量分发。
自动弹性伸缩(HPA):
在 Kubernetes 中,依据 CPU/QPS 自动扩缩容,流量高峰自动增加 Gateway 节点。
限流保护
面对千万请求,不是所有请求都该放行。
合理的限流机制,是防止系统“自杀”的保护网。

spring:
cloud:
gateway:
routes:
- id: api_rate_limit
uri: http://service/
filters:
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 1000 # 每秒生成1000个令牌
redis-rate-limiter.burstCapacity: 2000 # 最大突发流量
使用 RedisRateLimiter(官方默认实现)进行分布式限流,按用户/IP/接口维度限速。
熔断设计
当下游服务过载或异常时,如果 Gateway 继续转发请求,反而会造成雪崩效应。
因此,熔断机制是保护系统免受连锁故障的重要屏障。
Spring Cloud Gateway 通常结合 Resilience4j 或 Sentinel 实现熔断与降级:

spring:
cloud:
gateway:
routes:
- id: api_cb
uri: http://service/
filters:
- name: CircuitBreaker
args:
name: myCircuitBreaker
fallbackUri: forward:/fallback
熔断机制让网关具备“自我保护”能力,避免系统级连崩溃。
