选型应为apisix:其nginx+lua架构性能更优(万级qps稳定),天然支持etcd/nacos/eureka多注册中心,动态配置热生效能力强,且对spring cloud微服务集成轻量;shenyu虽java原生、协议转换强,但更适合dubbo→http等深度java栈场景。

构建基于 Apache 的微服务集群网关,核心是选对项目(ShenYu 或 APISIX),明确角色分工(网关统一入口 + 服务发现联动 + 动态路由治理),再按模块落地。不推荐“从零手写”,而是用成熟组件快速搭建可运维、可扩展的网关层。
明确选型:ShenYu 还是 APISIX?
两者都是 Apache 顶级项目,但定位略有差异:
- Apache ShenYu:Java 原生,深度适配 Spring Cloud/Dubbo/gRPC,插件链基于责任链模式,适合 Java 技术栈主导、需强协议转换和细粒度插件控制的团队。
- Apache APISIX:Nginx + Lua 架构,性能更高(万级 QPS 更稳),天然支持 etcd/Nacos/Eureka 多注册中心,更适合混合语言、高并发、强调动态配置热生效的场景。
若主力是 Spring Cloud 微服务且已有 Eureka/Nacos,APISIX 集成更轻量;若需在网关层做 Dubbo→HTTP 转换或定制 Java 插件,ShenYu 更直接。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
关键组件部署与对接
以 APISIX(主流选择)为例,三类核心组件必须协同工作:
-
网关节点(APISIX Bootstrap):部署多个实例,接入层负载均衡(如 Nginx 或云 LB)分发流量;配置启用
dubbo-proxy、limit-req、api-breaker等插件。 -
服务发现中心(如 Nacos):所有 Spring Cloud 微服务通过
spring-cloud-starter-alibaba-nacos-discovery注册;APISIX 在config.yaml中配置discovery: nacos并指定地址与命名空间。 - 管理后台(APISIX Dashboard 或自建 Admin):用于可视化配置路由、上游、SSL、插件开关;生产环境建议关闭公网访问,通过内网或 API Key 认证管控。
动态路由与服务治理配置
避免硬编码 IP 和端口,全部交由注册中心驱动:
- 定义一条路由时,
upstream.service_name填 Spring Cloud 应用的spring.application.name(如user-service); - 设置
upstream.discovery_type: nacos,APISIX 会自动拉取该服务下所有健康实例(状态为UP); - 配合
limit-req插件限制单 IP 每秒请求数,api-breaker设置失败率阈值(如 50% 错误持续 60 秒则熔断); - 如需灰度,可在路由中加
vars匹配请求头version: v2,并指向不同service_name或加权 upstream。
可观测性与稳定性加固
网关不是摆设,必须能看、能调、能防:
- 开启 Prometheus 插件暴露
/apisix/prometheus/metrics,接入 Grafana 查看 QPS、延迟、错误码分布; - 配置
zipkin或skywalking插件,让网关参与全链路追踪; - 日志输出到 ELK 或 Loki,关键字段(client_ip、upstream_addr、status、request_time)必留;
- 定期压测网关自身(如用 wrk 对
/anything路由打点),验证 5k+ 并发下的 P99 延迟是否稳定在 50ms 内。










