微服务是大型架构核心,下面我详解Spring Cloud Gateway如何抗住亿级流量@mikechen
分布式集群扩展
单机性能总有上限,千万级并发必须依靠集群的无限伸缩能力。
单个 Gateway 节点承载极限有限(比如 10-20 万 QPS),要达到千万级必须依赖 分片+集群化。
Spring Cloud Gateway 可在 Kubernetes、Docker 或 VM 集群中运行,通过副本扩展来提高整体吞吐。
通过 Nginx、LVS、F5 或云厂商的 SLB/ELB,在入口层将请求分发到多个 Gateway 节点。
在不同可用区/地域部署 Gateway 集群,结合 DNS/Anycast 做就近接入。
响应式编程
在分布式微服务架构中,网关承担着流量接入、路由转发、安全鉴权、限流熔断等关键职责。
随着业务规模扩大,网关需要能够承受千万级别的请求。
Spring Cloud Gateway(以下简称 SCG),基于 Reactor 的响应式编程模型,天然适合高并发场景。
SCG 基于 Project Reactor。它将请求处理流程视为一个数据流(Mono
或 Flux
)。
网关中的所有操作,包括路由匹配、Filter 执行和后端调用,都通过链式操作实现。
这确保了所有逻辑都是非阻塞的,网关线程发出请求后会立即释放,处理其他请求,直到收到回调通知。
异步非阻塞架构
传统阻塞模型下,每个请求占用一个线程且在等待 I/O 时阻塞,线程数需线性扩展。
而异步非阻塞模型使用较少的线程即可承载大量并发请求。
Spring Cloud Gateway 采用 Netty 异步非阻塞架构。
请求从接收、路由、转发到响应,全链路异步化。
I/O 操作不再占用线程等待,而是通过 回调+Future 机制完成。
同等硬件下,能支撑数倍甚至数十倍的并发请求。
限流熔断
在千万级并发下,部分请求必然失败或超时,如果不做治理,容易产生 级联雪崩。
核心手段:
熔断:当某个下游服务失败率过高时,网关快速失败,避免拖垮更多线程。
限流:对 API、用户、IP 做速率限制,常见算法有 令牌桶、漏桶。
降级:非关键接口返回兜底响应(缓存/默认值),核心服务优先保证可用。
实现方式:
使用 Spring Cloud Gateway 内置的 Redis RateLimiter,基于 Lua 脚本保证分布式原子性。
集成 Sentinel / Resilience4j,实现熔断、隔离舱、限流策略。