摘要
本文基于神话公司B2C电商平台的API网关建设经验,深入浅出地介绍Spring Cloud Gateway从理论到企业级实践的全过程。文章涵盖API网关的核心概念、主流网关框架对比、Spring Cloud Gateway技术深度解析,以及生产级网关的架构设计与最佳实践。通过真实的代码实现和架构设计,帮助读者全面理解并掌握企业级API网关的构建方法。
关键词:Spring Cloud Gateway、微服务网关、动态路由、限流熔断、控制面数据面分离
目录
-
- [1.1 什么是API网关](#1.1 什么是API网关)
- [1.2 API网关的核心功能](#1.2 API网关的核心功能)
- [1.3 API网关在微服务架构中的定位](#1.3 API网关在微服务架构中的定位)
- [1.4 API网关的技术演进](#1.4 API网关的技术演进)
-
- [2.1 Nginx/OpenResty](#2.1 Nginx/OpenResty)
- [2.2 Kong](#2.2 Kong)
- [2.3 Apache APISIX](#2.3 Apache APISIX)
- [2.4 Spring Cloud Gateway](#2.4 Spring Cloud Gateway)
- [2.5 技术选型建议](#2.5 技术选型建议)
-
[第三部分:Spring Cloud Gateway深入解析](#第三部分:Spring Cloud Gateway深入解析)
- [3.1 核心概念:Route、Predicate、Filter](#3.1 核心概念:Route、Predicate、Filter)
- [3.2 响应式编程模型](#3.2 响应式编程模型)
- [3.3 请求处理流程详解](#3.3 请求处理流程详解)
- [3.4 内置Predicate和Filter详解](#3.4 内置Predicate和Filter详解)
- [3.5 自定义Filter实践](#3.5 自定义Filter实践)
-
- [4.1 控制面与数据面分离架构](#4.1 控制面与数据面分离架构)
- [4.2 动态路由管理方案](#4.2 动态路由管理方案)
- [4.3 认证鉴权体系](#4.3 认证鉴权体系)
- [4.4 限流熔断机制](#4.4 限流熔断机制)
- [4.5 灰度发布方案](#4.5 灰度发布方案)
- [4.6 监控与链路追踪](#4.6 监控与链路追踪)
-
- [5.1 高可用部署架构](#5.1 高可用部署架构)
- [5.2 性能优化实践](#5.2 性能优化实践)
- [5.3 故障排查与运维](#5.3 故障排查与运维)
- [5.4 安全防护策略](#5.4 安全防护策略)
第一部分:API网关的概念与理论
1.1 什么是API网关
API网关(API Gateway)是微服务架构中的核心组件,它作为系统的唯一入口,承担着流量管控、协议转换、安全防护、服务编排等关键职责。就像古代城池的"城门",所有进出的人员和物资都必须经过城门的检查和登记,API网关也是如此------所有客户端请求都必须通过网关才能访问后端服务。
为什么需要API网关?
在单体应用时代,客户端直接调用后端服务,架构简单明了。但随着微服务架构的普及,系统被拆分成数十甚至上百个微服务,客户端面临诸多挑战:
- 服务寻址复杂:客户端需要维护所有微服务的地址,服务扩缩容时需要同步更新
- 认证鉴权分散:每个服务都需要实现认证逻辑,代码冗余且难以统一管理
- 协议不统一:不同服务可能使用HTTP、gRPC、WebSocket等不同协议
- 安全风险高:微服务直接暴露给客户端,容易遭受攻击
- 跨域问题:前端应用需要访问多个不同域名的服务
- 监控困难:缺乏统一的流量监控和链路追踪
API网关的出现,完美解决了这些问题:
移动App
API网关
Web前端
第三方系统
用户服务
订单服务
商品服务
支付服务
核心价值:
- 简化客户端:客户端只需对接网关一个入口
- 统一管控:认证、限流、监控等横切关注点集中管理
- 服务解耦:后端服务变更对客户端透明
- 安全防护:隐藏后端服务真实地址,提供统一安全防护
1.2 API网关的核心功能
一个成熟的API网关通常需要具备以下核心能力:
1. 路由转发(Routing)
路由是网关的基础功能,根据请求的URL、Header、Method等条件,将请求转发到对应的后端服务。
典型场景:
客户端请求:GET /api/user/v1/profile/123
↓
网关路由规则:/api/user/** → user-service
↓
转发到:http://user-service:8080/api/user/v1/profile/123
高级能力:
- 动态路由:支持运行时动态修改路由规则,无需重启
- 灰度路由:根据用户ID、请求头等条件,将流量导向不同版本的服务
- 负载均衡:支持轮询、随机、权重、最小连接数等多种策略
2. 认证鉴权(Authentication & Authorization)
作为系统的唯一入口,网关承担着统一认证的重要职责。
认证流程:
业务服务 认证中心 API网关 客户端 业务服务 认证中心 API网关 客户端 1. 请求(携带Token) 2. 提取Token 3. 验证Token 4. 返回用户信息 5. 权限校验 6. 转发请求(携带用户上下文) 7. 返回响应 8. 返回结果
核心能力:
- 多协议支持:JWT、OAuth2.0、API Key、Basic Auth等
- 多用户类型:支持C端用户、B端员工、供应商等不同用户体系
- 权限校验:基于RBAC或ABAC模型进行细粒度权限控制
- 三级缓存:本地缓存 + Redis + 数据库,保证高性能
3. 限流熔断(Rate Limiting & Circuit Breaking)
保护后端服务不被流量洪峰击垮,是网关的重要使命。
限流算法对比:
| 算法 | 原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 计数器 | 固定窗口内计数 | 实现简单 | 临界问题严重 | 低并发系统 |
| 滑动窗口 | 滑动时间窗口计数 | 解决临界问题 | 内存占用高 | 中等并发 |
| 漏桶 | 恒定速率流出 | 流量平滑 | 无法应对突发 | 需要匀速处理 |
| 令牌桶 | 按速率生成令牌 | 允许突发流量 | 实现复杂 | 生产推荐 |
神话网关采用方案:
- 限流:基于Redis的令牌桶算法(Redisson RateLimiter)
- 熔断:集成Alibaba Sentinel,支持慢调用比例、异常比例、异常数三种熔断策略
- 降级:熔断触发时返回统一降级响应(429 Too Many Requests)
4. 协议转换(Protocol Translation)
不同的客户端和后端服务可能使用不同的协议,网关需要提供协议适配能力。
典型场景:
- HTTP → gRPC:移动端使用HTTP,后端服务使用gRPC
- WebSocket → HTTP:实时通讯转换为HTTP轮询
- HTTP/1.1 → HTTP/2:协议升级
5. 日志监控(Logging & Monitoring)
作为流量入口,网关是监控的最佳观测点。
核心指标:
- QPS/TPS:每秒请求数/事务数
- 响应时间:P50/P95/P99延迟
- 错误率:4xx/5xx错误占比
- 流量分布:按服务、接口、用户维度统计
神话网关监控体系:
请求到达
↓
TraceIdFilter(-1000) → 生成全局TraceId
↓
AccessLogFilter(-999) → 记录请求入口时间
↓
... 业务处理 ...
↓
MetricsFilter(1000) → 采集指标、计算耗时
↓
上报到Prometheus/SkyWalking
6. 灰度发布(Canary Release)
支持新版本灰度上线,降低发布风险。
灰度策略:
- 按用户ID:指定用户ID范围使用新版本
- 按百分比:随机将x%流量导向新版本
- 按Header :根据请求头
X-Canary-Version路由 - 按地理位置:先在部分地区灰度
1.3 API网关在微服务架构中的定位
在微服务架构的全景图中,API网关处于边界层(Edge Layer),扮演着"守门员"和"交通警察"的双重角色。
微服务分层架构
数据层
基础设施层
应用服务层
边界层
客户端层
移动App
Web前端
小程序
API网关
用户服务
订单服务
商品服务
支付服务
配置中心
Nacos
注册中心
Nacos
认证中心
SSO
权限中心
RBAC
MySQL
Redis
Elasticsearch
南北流量 vs 东西流量
-
南北流量 (North-South Traffic):客户端与服务端之间的流量,由API网关处理
-
东西流量(East-West Traffic):服务与服务之间的内部流量,由**服务网格(Service Mesh)**处理
南北流量: 客户端 ←→ API网关 ←→ 服务
东西流量: 服务A ←→ 服务B ←→ 服务C
职责边界:
- API网关:聚焦外部流量管控、统一认证、协议转换
- 服务网格:聚焦服务间通信、服务发现、故障注入
1.4 API网关的技术演进
API网关技术历经三代演进:
第一代:传统代理(Nginx时代)
代表产品:Nginx、HAProxy
特点:
- 基于静态配置文件
- 高性能(C语言编写)
- 功能简单,主要做反向代理和负载均衡
痛点:
- 配置变更需要reload,影响性能
- 缺乏动态路由能力
- 扩展性差,需要编写Lua脚本
第二代:API管理平台(Kong/APISIX时代)
代表产品:Kong、Apache APISIX、Tyk
特点:
- 动态配置,支持Admin API
- 插件化架构,易于扩展
- 提供Web管理界面
痛点:
- 学习曲线陡峭
- 与Java生态集成不便
- 部署复杂(依赖PostgreSQL/Cassandra)
第三代:云原生网关(Spring Cloud Gateway时代)
代表产品:Spring Cloud Gateway、Envoy、Zuul 2.0
特点:
- 云原生设计,Kubernetes友好
- 响应式编程(高并发)
- 与Spring生态无缝集成
- 声明式配置 + 编程式扩展
优势:
- Java技术栈团队零学习成本
- 与Spring Cloud Alibaba完美配合
- 支持动态路由(Nacos配置中心)
- 性能优异(基于Netty + Reactor)
第一部分总结:API网关是微服务架构的流量守门员,承担着路由转发、认证鉴权、限流熔断等核心职责。理解网关的定位和演进,是选择合适技术方案的基础。
第二部分:主流网关框架对比分析
在选择API网关技术方案之前,我们需要对市面上主流的网关框架进行全面对比。本部分将深入分析Nginx/OpenResty、Kong、Apache APISIX、Spring Cloud Gateway四大主流方案的技术特点、优劣势和适用场景。
2.1 Nginx/OpenResty
技术架构
Nginx是由Igor Sysoev开发的高性能Web服务器和反向代理服务器,OpenResty在Nginx基础上集成LuaJIT,提供了强大的扩展能力。
核心特性:
- C语言编写:性能极致,单机QPS可达10万+
- 事件驱动:基于epoll/kqueue的异步非阻塞IO模型
- 静态配置:nginx.conf配置文件定义路由规则
- Lua扩展:OpenResty支持Lua脚本实现复杂逻辑
典型配置示例:
nginx
# Nginx反向代理配置
upstream user_service {
server 192.168.1.10:8080 weight=3;
server 192.168.1.11:8080 weight=1;
keepalive 32;
}
server {
listen 80;
server_name api.mythos.com;
location /api/user/ {
proxy_pass http://user_service;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# OpenResty Lua脚本进行权限校验
access_by_lua_block {
local token = ngx.var.http_authorization
if not token then
ngx.status = 401
ngx.say('{"code": "401", "message": "Unauthorized"}')
ngx.exit(401)
end
-- 调用Redis验证Token
local redis = require "resty.redis"
local red = redis:new()
red:connect("127.0.0.1", 6379)
local res = red:get("token:" .. token)
if not res then
ngx.exit(403)
end
}
}
}
优势与劣势
| 优势 | 劣势 |
|---|---|
| 性能顶尖:C语言实现,内存占用低 | 动态配置困难:修改配置需reload,有短暂中断 |
| 成熟稳定:经过20年生产验证,Bug极少 | 学习曲线陡峭:Lua脚本开发需要额外学习成本 |
| 生态丰富:大量第三方模块和插件 | 缺乏管理界面:纯命令行操作,对运维不友好 |
| 文档完善:中文资料丰富 | 服务发现弱:需要额外集成Consul/Etcd |
适用场景
- 静态路由为主:路由规则相对固定,不需要频繁变更
- 极致性能要求:秒级百万QPS的流量入口
- 边缘网关:作为最外层的7层负载均衡器
- 团队技术栈:运维团队熟悉Nginx/Lua
2.2 Kong
技术架构
Kong是基于OpenResty(Nginx + Lua)构建的云原生API网关,由Mashape公司(现Kong Inc.)开发。
核心特性:
- 插件化架构:官方提供50+插件,支持自定义Lua插件
- Admin API:RESTful API管理路由、插件、服务
- 数据库支持:PostgreSQL或Cassandra存储配置
- 企业版功能:RBAC、OIDC、金丝雀发布(收费)
架构图:
Kong架构
Client
Kong Gateway
Nginx + Lua
认证插件
JWT/OAuth2
限流插件
Rate Limiting
日志插件
File/HTTP Log
Upstream Service
PostgreSQL
配置存储
Kong Admin API
Kong Manager
Web UI
配置示例(通过Admin API):
bash
# 创建服务
curl -i -X POST http://localhost:8001/services/ \
--data "name=user-service" \
--data "url=http://192.168.1.10:8080"
# 创建路由
curl -i -X POST http://localhost:8001/services/user-service/routes \
--data "paths[]=/api/user" \
--data "methods[]=GET" \
--data "methods[]=POST"
# 启用JWT插件
curl -i -X POST http://localhost:8001/services/user-service/plugins \
--data "name=jwt"
# 启用限流插件
curl -i -X POST http://localhost:8001/services/user-service/plugins \
--data "name=rate-limiting" \
--data "config.minute=100" \
--data "config.policy=redis" \
--data "config.redis_host=127.0.0.1"
优势与劣势
| 优势 | 劣势 |
|---|---|
| 插件生态丰富:官方+社区插件覆盖大部分场景 | 部署复杂:依赖PostgreSQL/Cassandra数据库 |
| 动态配置:Admin API实时生效,无需重启 | 企业版收费:高级功能需要购买License |
| 社区活跃:GitHub 38k+ stars,文档齐全 | 性能损耗:相比原生Nginx,性能下降30-40% |
| 云原生友好:Kubernetes Ingress Controller | 学习成本高:自定义插件需要Lua开发能力 |
适用场景
- API管理平台:需要完善的API生命周期管理
- 多租户SaaS:支持租户隔离和计费
- 云原生环境:Kubernetes部署的微服务集群
- 插件化需求:需要灵活组合各种插件能力
2.3 Apache APISIX
技术架构
Apache APISIX是国内团队开发的云原生API网关,2019年进入Apache孵化器,2020年毕业成为顶级项目。
核心特性:
- etcd存储:配置存储在etcd,支持毫秒级动态更新
- 插件热加载:插件代码变更无需重启网关
- 全动态设计:路由、插件、上游服务全部动态可配
- 多语言插件:支持Lua、Java、Python、Go插件
技术优势:
APISIX架构
APISIX Dashboard
Web管理界面
etcd
配置中心
APISIX Node 1
APISIX Node 2
APISIX Node N
Upstream Services
Admin API
配置示例(通过Admin API):
bash
# 创建上游服务(支持服务发现)
curl http://127.0.0.1:9180/apisix/admin/upstreams/1 -H 'X-API-KEY: xxx' -X PUT -d '
{
"type": "roundrobin",
"nodes": {
"192.168.1.10:8080": 1,
"192.168.1.11:8080": 1
},
"discovery_type": "nacos",
"service_name": "user-service"
}'
# 创建路由(带插件)
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: xxx' -X PUT -d '
{
"uri": "/api/user/*",
"methods": ["GET", "POST"],
"upstream_id": 1,
"plugins": {
"jwt-auth": {},
"limit-count": {
"count": 100,
"time_window": 60,
"rejected_code": 429
},
"prometheus": {}
}
}'
优势与劣势
| 优势 | 劣势 |
|---|---|
| 性能优异:QPS是Kong的2倍(官方数据) | 社区规模:相比Kong生态还在成长中 |
| 真正全动态:etcd + 热加载,配置毫秒级生效 | 文档质量:部分文档不够详细,有中英文混用 |
| 中国团队:本土化支持好,响应速度快 | 生产案例:国外知名公司采用案例较少 |
| 多协议支持:HTTP/HTTPS/gRPC/MQTT/Dubbo | 学习曲线:配置复杂度高于Spring Cloud Gateway |
适用场景
- 超高并发场景:需要单机10万+ QPS的极致性能
- 配置频繁变更:需要秒级动态更新路由和插件
- 多协议网关:HTTP、gRPC、Dubbo混合使用
- 国产化要求:Apache顶级项目,满足国产化需求
2.4 Spring Cloud Gateway
技术架构
Spring Cloud Gateway是Spring官方推出的第二代网关(Zuul的替代者),基于Spring Framework 5、Project Reactor和Spring Boot 3构建。
核心特性:
- 响应式编程:基于Reactor Netty,非阻塞高并发
- Spring生态集成:无缝集成Nacos、Sentinel、Sleuth
- 编程式配置:Java代码定义路由,类型安全
- 轻量级部署:无需额外数据库,Spring Boot jar运行
三大核心概念:
匹配成功
匹配失败
Request
Route
路由
Predicate
断言匹配
Filter Chain
过滤器链
404 Not Found
Pre Filters
前置过滤
Upstream Service
上游服务
Post Filters
后置过滤
Response
配置示例:
yaml
# application.yml声明式配置
spring:
cloud:
gateway:
routes:
- id: user-service-route
uri: lb://user-service # 从Nacos服务发现
predicates:
- Path=/api/user/**
- Method=GET,POST
- Header=X-Request-Source, mobile
filters:
- StripPrefix=2
- AddRequestHeader=X-Gateway-Timestamp, ${timestamp}
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 10
redis-rate-limiter.burstCapacity: 20
java
// Java编程式配置
@Configuration
public class GatewayRouteConfig {
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("user-service-route", r -> r
.path("/api/user/**")
.and().method("GET", "POST")
.filters(f -> f
.stripPrefix(2)
.addRequestHeader("X-Gateway-Timestamp", LocalDateTime.now().toString())
.requestRateLimiter(c -> c
.setRateLimiter(redisRateLimiter())
)
)
.uri("lb://user-service")
)
.build();
}
}
优势与劣势
| 优势 | 劣势 |
|---|---|
| Spring生态无缝集成:与Spring Cloud Alibaba完美配合 | 性能略逊:相比Nginx/APISIX性能稍低(但足够用) |
| Java技术栈友好:团队零学习成本,调试方便 | 内存占用高:JVM运行,占用内存是Nginx的5-10倍 |
| 响应式高并发:基于Reactor,支持10万+ QPS | 启动速度慢:Spring Boot应用启动需要10-30秒 |
| 动态路由支持:Nacos配置中心实现秒级刷新 | 调优复杂:需要深入理解JVM调优和响应式编程 |
| 可观测性强:与Sleuth、Micrometer无缝集成 | 企业级功能缺失:没有现成的Web管理界面 |
适用场景
- Java技术栈团队:团队主要使用Spring全家桶
- Spring Cloud微服务:已经使用Spring Cloud生态
- 灵活定制需求:需要深度定制网关逻辑
- 内部系统网关:对性能要求不极致,更看重开发效率
2.5 技术选型建议
对比矩阵
| 维度 | Nginx/OpenResty | Kong | Apache APISIX | Spring Cloud Gateway |
|---|---|---|---|---|
| 性能(QPS) | ⭐⭐⭐⭐⭐ 100k+ | ⭐⭐⭐ 30k-50k | ⭐⭐⭐⭐⭐ 100k+ | ⭐⭐⭐⭐ 50k-100k |
| 动态配置 | ⭐⭐ 需reload | ⭐⭐⭐⭐ Admin API | ⭐⭐⭐⭐⭐ etcd毫秒级 | ⭐⭐⭐⭐ Nacos秒级 |
| 学习成本 | ⭐⭐ Lua学习曲线 | ⭐⭐⭐ 配置复杂 | ⭐⭐⭐ 配置复杂 | ⭐⭐⭐⭐⭐ Java友好 |
| 管理界面 | ⭐ 无 | ⭐⭐⭐⭐ 企业版 | ⭐⭐⭐⭐ Dashboard | ⭐⭐ 需自建 |
| 插件生态 | ⭐⭐⭐ OpenResty | ⭐⭐⭐⭐⭐ 50+插件 | ⭐⭐⭐⭐ 40+插件 | ⭐⭐⭐ 内置丰富 |
| 云原生 | ⭐⭐⭐ 需适配 | ⭐⭐⭐⭐⭐ K8s原生 | ⭐⭐⭐⭐⭐ K8s原生 | ⭐⭐⭐⭐ Spring Cloud |
| 社区成熟度 | ⭐⭐⭐⭐⭐ 20年历史 | ⭐⭐⭐⭐⭐ 38k stars | ⭐⭐⭐⭐ 14k stars | ⭐⭐⭐⭐⭐ Spring官方 |
| 企业支持 | ⭐⭐⭐ 社区版免费 | ⭐⭐⭐⭐⭐ 企业版收费 | ⭐⭐⭐⭐ 开源+商业 | ⭐⭐⭐⭐ Spring官方 |
选型决策树
是
否
是
否
是
否
>100k <100k
频繁
不频繁
是
否
开始选型
是否Java技术栈?
是否已使用
Spring Cloud?
QPS需求?
Spring Cloud Gateway
⭐推荐
是否需要
管理界面?
自建管理端
+SCG
配置变更频率?
是否需要
插件生态?
Apache APISIX
⭐推荐
Nginx/OpenResty
⭐推荐
Kong
⭐推荐
Nginx/OpenResty
神话公司的选型历程
背景:
- 技术栈:Spring Boot 3 + Spring Cloud Alibaba + Nacos
- 团队:Java后端开发团队,无Lua/Go开发能力
- 需求:动态路由管理、JWT认证、权限校验、灰度发布
选型过程:
-
第一轮筛选(淘汰Nginx/OpenResty)
- ❌ 动态配置困难,reload影响性能
- ❌ Lua脚本开发成本高,团队不熟悉
- ❌ 缺乏与Nacos、Sentinel的集成方案
-
第二轮对比(Kong vs APISIX vs Spring Cloud Gateway)
对比项 Kong APISIX Spring Cloud Gateway 技术栈匹配度 ❌ Lua ❌ Lua ✅ Java Nacos集成 ⚠️ 需自研 ✅ 官方支持 ✅ 天然集成 Sentinel集成 ❌ 无 ⚠️ 需配置 ✅ starter即用 管理界面 ✅ 企业版 ✅ Dashboard ❌ 需自建 学习成本 ⚠️ 中等 ⚠️ 中等 ✅ 低 调试便利性 ❌ Lua调试难 ❌ Lua调试难 ✅ IDEA直接调试 -
最终决策:Spring Cloud Gateway + 自建管理端
核心原因:
- ✅ 技术栈统一:团队100% Java开发,零学习成本
- ✅ 生态集成:Nacos、Sentinel、Sleuth开箱即用
- ✅ 调试方便:断点调试、日志追踪非常便捷
- ✅ 定制灵活:Java代码实现任意复杂逻辑
- ✅ 性能足够:单机5万QPS满足当前业务需求
弥补短板:
- 自研mythos-gateway-admin管理端(控制面)
- 基于MySQL存储配置,Nacos推送到数据面
- 提供Web界面和Admin API管理路由
推荐组合方案
场景一:互联网ToC业务(高并发)
┌─────────────────────────────────────┐
│ CDN(静态资源加速) │
└──────────┬──────────────────────────┘
↓
┌──────────────────────────────────────┐
│ Nginx/APISIX(边缘网关,QPS 100k+)│
│ - SSL卸载 │
│ - IP黑白名单 │
│ - DDoS防护 │
└──────────┬───────────────────────────┘
↓
┌──────────────────────────────────────┐
│ Spring Cloud Gateway(业务网关) │
│ - JWT认证 │
│ - 权限校验 │
│ - 灰度路由 │
│ - 业务监控 │
└──────────┬───────────────────────────┘
↓
[后端微服务集群]
场景二:企业ToB系统(稳定为主)
┌──────────────────────────────────────┐
│ Spring Cloud Gateway(All-in-One) │
│ - 认证鉴权 │
│ - 路由转发 │
│ - 限流熔断 │
│ - 日志监控 │
└──────────┬───────────────────────────┘
↓
[后端微服务集群]
场景三:混合架构(Java + Go/Python)
┌──────────────────────────────────────┐
│ Kong/APISIX(统一网关) │
│ - 多语言插件支持 │
│ - 协议转换(HTTP/gRPC/Dubbo) │
│ - 插件生态丰富 │
└──────────┬───────────────────────────┘
↓
┌────────┴────────┐
↓ ↓
[Java微服务] [Go/Python服务]
第二部分总结:选择API网关需要综合考虑性能、技术栈匹配度、学习成本、生态集成等因素。对于Java技术栈团队,Spring Cloud Gateway是最佳选择;对于追求极致性能和多语言环境,Apache APISIX更合适;对于成熟的插件生态和企业级支持,Kong是不错的方案。神话公司基于Spring Cloud Alibaba生态,最终选择了Spring Cloud Gateway + 自建管理端的方案。