微服务网关演化

1.静态网关

2.动态网关

3.云原生网关

静态网关

以Nginx为代表,功能强大,能力突出,

痛点:

改配置要重启,不支持动态

动态网关

以gateway 为代表,功能全面,改配置无需重启。且可以做负载,灰度,限流熔断降级。

痛点:

1. I/O 模型限制

基于servlet 或netty 的阻塞/半阻塞,在高并发下线程上下文切换开销大。

2. GC压力大

JVM的垃圾回收机制在处理大量HTTP请求和响应,容易引发STW 停顿,导致网关层出现不可控的延迟毛刺。

3. 依赖配置中心

如果配置中心(nacos/eureka)宕机,会导致回退到错误的路由状态。

4. 协议转换弱

天然支持HTTP/REST,但对于GRPC,Dubbo,webSocket 等协议支持非常笨重,通常需要写复杂的过滤器,且性能损耗极大。

云原生

以 Apache APISIX 为代表 ,支持动态配置、热更新,不用重启网关,性能极强。用它和gateway做以下对比

一、底层基座完全不一样

Apache APISIX

底层是 Nginx + LuaJIT + Go

Nginx 是工业级高性能网络 IO 模型,事件驱动、epoll 多路复用

LuaJIT 即时编译,脚本跑起来接近原生 C 性能

网络层、连接调度、内核转发都是Nginx 内核级能力

Spring Cloud Gateway

底层是 Java + Netty

跑在 JVM 之上

所有请求都要经过 JVM 堆、GC、线程调度、对象创建销毁

先天就比 Nginx 栈重一层

二、网络 IO 模型:架构天生降维打击

APISIX

多进程 + 事件驱动 + 非阻塞 IO

基于 Nginx 经典 Master-Worker 多进程模型

每个 Worker 单线程、全异步非阻塞

一个线程可以扛几万连接,不靠堆线程扛流量

无线程上下文切换开销

Spring Cloud Gateway

Netty 线程池 + 异步但仍受 JVM 约束

Netty 也是事件驱动,但跑在 JVM 里

高并发下:线程池队列膨胀、任务调度、锁竞争、JVM 调度开销明显

流量一大,线程、队列、GC 压力全上来

关键区别:

APISIX 是内核级 IO 调度,SCG 是应用层 JVM 调度。

三、运行时与内存开销

APISIX

轻量,内存占用极低

无垃圾回收困扰

路由、插件、限流、鉴权全在 Worker 内闭环,无跨进程、无对象频繁创建

Spring Cloud Gateway

每一个请求都会创建大量临时对象

高并发下 Young GC、Full GC 频繁

GC 一旦卡顿,瞬间延迟飙升、吞吐下降

JVM 本身就要占用不小堆内存

四、路由与配置更新机制

APISIX

全动态热更新

路由、插件、上游配置变更毫秒级生效,不重启、不重载

基于 etcd 增量推送,无全局刷新开销

Spring Cloud Gateway

传统基于配置文件 / 配置中心刷新

很多场景需要重启或完整刷新上下文

刷新时存在抖动、短暂不可用,且刷新开销大

五、协议与转发效率

APISIX

天然优化:

四层 / 七层转发都是 Nginx 原生

连接复用、长连接、缓冲区零拷贝做得极致

转发几乎是内核态快速转发

SCG 所有流量都要经过:

网卡 → 内核 → JVM → Netty → 业务链路 → 再回内核

多了一层 JVM 应用层中转,天生延迟更高。

六、并发能力直观对比

吞吐:APISIX 比 SCG 高 3~5 倍

延迟:高并发下 APISIX 延迟稳定,SCG 随流量上涨明显拉高

资源占用:同等流量下,APISIX CPU / 内存只有 SCG 的 1/3 甚至更低

SCG的架构图
APISIX的架构图
对比

Apache APISIX 与 Spring Cloud Gateway 核心对比表

对比项 Apache APISIX Spring Cloud Gateway
底层基座 Nginx + LuaJIT + Go JVM + Netty + Spring
并发模型 多进程单线程事件驱动 Netty 线程池 + JVM 调度
GC 影响 无 GC,延迟超稳定 高并发 GC 频繁,抖动大
资源占用 低 CPU、低内存 同等流量内存 CPU 高 2~3 倍
配置更新 etcd 热更新,毫秒无重启 需刷新上下文 / 甚至重启
多语言适配 天然兼容 Java/Go/C 也兼容,但性能拖后腿
适用场景 云原生入口、高并发网关 Java 内网微服务、小流量场景

总结

APISIX 是站在 Nginx 高性能内核上做网关;

Spring Cloud Gateway 是在 JVM 虚拟机里用 Java 应用做网关。

一个贴近内核、轻量无 GC;

一个套 JVM 重容器、天生带调度和 GC 开销。

相关推荐
阿俊-全栈开发1 小时前
LikeShop 多商户 Java 版商城微服务模块拆分与部署架构演进实践
java·微服务·架构·likeshop开源商城·多商户源码
螺蛳粉 螺蛳粉2 小时前
第 02 篇:镜像分层与 containerd 2.x 实战:SystemdCgroup 与 pause 镜像配置踩坑(底座认知 02)
docker·云原生·容器·kubernetes·etcd·containerd·kube-apiserver
frjc2 小时前
分布式服务拆分实战指南:从底层逻辑到面试话术
微服务·面试·职场和发展
X54先生(人文科技)2 小时前
百度智能对 X54 先生学科底色评估
人工智能·深度学习·百度·架构
HelloWorld0012 小时前
拒绝被大模型算力绑架!基于语义复杂度与意图分流打造多模型混合动态路由网关(全套架构+实战)
架构
电子科技圈3 小时前
芯科科技2026年Tech Talks技术系列讲座再增添全新主题共探无线SoC架构演进与安全合规
科技·嵌入式硬件·mcu·物联网·安全·架构·iot
技术党3 小时前
大模型训练平台推荐问答:九章云极的DCU计费、全栈Serverless和Token交付分别适合谁
云原生·serverless
知守观3 小时前
多模块架构演进:横向分层 vs 纵向领域,13 个真实项目的切分对照
java·后端·微服务
时间售卖铺3 小时前
Oracle DQL精髓:从基础到高级实战
运维·数据库·云原生·oracle
paopaokaka_luck4 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts