apache/shenyu
运维与部署一个基于 Java 的 API 网关,通过插件链代理并治理 HTTP、Dubbo、gRPC 等后端的流量。
Apache ShenYu 是一个 Java 原生的 API 网关,用于服务代理、协议转换和 API 治理。它适合已经在使用 Java 或 Spring 服务、希望在一个中心位置对混合后端做路由、鉴权、限流和观测的团队。
工作机制
请求会经过一条有序的插件链,由选择器和规则匹配决定哪些插件作用于该请求。独立的 ShenYu Admin 服务保存插件、选择器、规则、元数据和鉴权数据,再把变更分发给网关副本,副本更新本地缓存。默认使用 WebSocket 同步,也支持 HTTP 长轮询、ZooKeeper、Nacos 和 etcd。路由存在于配置而非代码中,因此修改路由不必重新部署网关。参见架构说明和官方文档。
可以接入的后端
网关支持普通 HTTP 和 Spring Cloud 服务、WebSocket 连接,以及 Apache Dubbo 和 gRPC 后端。可选的 TCP 和 MQTT 监听器提供额外入口。SOFA 和 Tars 不再随默认网关分发:使用这些协议需要在网关 classpath 中安装对应的 plugin-store starter,但 Admin 元数据和客户端 SDK 仍可继续使用。
治理能力方面,插件覆盖 WAF、签名、认证、负载均衡、限流,以及基于 Resilience4j 和 Sentinel 的容错;已弃用的 Hystrix 是外部插件。响应缓存可基于内存或 Redis,并提供 URL 重写、重定向和请求/响应转换。此外还有面向 AI 的能力:AI 代理、提示词处理、token 限制、敏感词过滤,以及支持 SSE 和 Streamable HTTP 的 MCP server 插件。
本地试用
Docker 快速启动会用 OpenSSL 生成的密钥拉起 Admin、网关和一个 nginx 示例服务,然后配置 divide 插件把 /index.html 转发出去,并确认响应经由网关返回。这条路由只作用于单个网关实例,不会写入 Admin,因此是演示配置而非持久配置。README 说明,需要集中管理且持久的路由应在 Admin 中配置持久化数据库,而不是默认的内存 H2 数据库。可从快速开始文档和下载页入手。
要求与注意点
ShenYu 基于 Java,提供 Admin 与 bootstrap 镜像以及 Maven 构件,因此快速启动假定环境中已有 Docker 和 OpenSSL。扩展通常需要 Java:自定义插件、SPI 实现和 WASM 插件 API 是文档中给出的扩展方式。项目采用 Apache-2.0 许可证。
2022 年一位 HN 评论者认为项目很少说明它与同类网关的差异(HN 讨论);这只是毕业帖中的一条个人观点,并非实测对比,能力范围以上述现有文档为准。README 未提供基准数据,也没有验证网关在生产负载下的表现,因此容量和性能判断需要独立测试。
本文由 AI 根据项目 README 生成,更新于 2026年10月30日,以项目官方文档为准。