关于 Shenyu
Apache ShenYu 是面向服务流量代理与 API 治理的 Java 网关,适用于管理后端服务的团队。它以可扩展插件链结合协议转发、流量控制、动态配置及 AI 和 MCP 能力。
主要功能
- 01可扩展的请求插件链
- 02HTTP、WebSocket、Dubbo 和 gRPC 路由
- 03服务注册与发现
- 04认证、限流和容错
- 05动态配置与可观测性
- 06AI 代理与 MCP 服务插件
适用场景
- 01将请求路由到 HTTP 和 RPC 后端
- 02为 API 应用认证和限流
- 03管理多个网关副本的配置
MCP 相关
MCP 服务插件通过 SSE 和 Streamable HTTP 提供 MCP 支持。ShenYu 也提供 AI 代理和提示词处理能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
概述
Apache ShenYu 是一个基于 Java 的网关,用于服务代理、协议转换和 API 治理。可扩展的插件链负责处理请求,而 ShenYu Admin 管理配置并将其分发到网关副本。
核心功能
| 领域 | ShenYu 提供的功能 |
|---|---|
| 插件路由与扩展 | 用于处理 HTTP 请求的有序插件链,并在适用时进行选择器和规则匹配。Spring Boot starter 用于选择插件;自定义 Java 插件、SPI 实现和 WASM 插件 API 可扩展网关。 |
| 协议与上游服务 | HTTP 和 Spring Cloud 服务、WebSocket 连接,以及 Apache Dubbo 和 gRPC 后端。可选的 TCP 和 MQTT 监听器可提供额外的入口;SOFA 和 Tars 网关插件可作为外部 plugin-store starter 使用。 |
| 注册与发现 | 客户端 SDK 向 Admin 注册服务地址和 API 元数据。注册中心集成支持服务发现;可选的 Kubernetes 控制器会协调 Ingress 和 Endpoints 资源。 |
| 安全与流量控制 | WAF、签名、身份验证插件、负载均衡、速率限制,以及通过 Resilience4j 和 Sentinel 实现的容错;已弃用的 Hystrix 仍可作为外部插件使用(参见 plugin-store-hystrix)。 |
| 缓存与转换 | 内存或基于 Redis 的响应缓存、URL 重写、重定向,以及请求/响应转换。 |
| 动态配置 | Admin 持久化插件、选择器、规则、元数据和身份验证数据。默认使用 WebSocket 同步;也可使用 HTTP 长轮询、ZooKeeper、Nacos 和 etcd。Apollo 在弃用版本期间仍可使用,计划迁移为外部扩展(参见 Apollo 迁移)。Consul 同步可作为外部扩展使用(参见 plugin-store-consul)。网关副本会将更新应用到本地缓存。 |
| 可观测性 | 指标和日志插件,包括 Kafka 和 Elasticsearch 目标;Admin 提供电子邮件和钉钉告警。 |
| AI 与 MCP | AI 代理、提示词处理、Token 限制、敏感词过滤、AI 请求/响应转换,以及支持 SSE 和 Streamable HTTP 的 MCP 服务插件。 |
架构

开始使用
Docker 快速开始
使用 Docker 和 OpenSSL 启动 ShenYu Admin、网关和示例 HTTP 服务。在同一个 Shell 中运行以下命令。
启动服务
docker network create shenyu
export SHENYU_JWT_SECRETKEY="$(openssl rand -hex 32)"
export SHENYU_SYNC_WEBSOCKET_TOKEN="$(openssl rand -hex 32)"
export SHENYU_LOCAL_KEY="$(openssl rand -hex 24)"
export SHENYU_LOCAL_SHA512KEY="$(printf %s "$SHENYU_LOCAL_KEY" | openssl dgst -sha512 -r | awk '{print $1}')"
docker run -d --name shenyu-admin --network shenyu -p 127.0.0.1:9095:9095 \
-e SHENYU_JWT_SECRETKEY -e SHENYU_SYNC_WEBSOCKET_TOKEN \
apache/shenyu-admin:latest
docker run -d --name shenyu-demo --network shenyu nginx:stable-alpine
docker run -d --name shenyu-bootstrap --network shenyu -p 127.0.0.1:9195:9195 \
-e SHENYU_SYNC_WEBSOCKET_URLS=ws://shenyu-admin:9095/websocket \
-e SHENYU_SYNC_WEBSOCKET_TOKEN \
-e SHENYU_HEARTBEAT_SERVERLISTS=http://shenyu-admin:9095 \
-e SHENYU_LOCAL_ENABLED=true -e SHENYU_LOCAL_SHA512KEY \
apache/shenyu-bootstrap:latest
Admin 监听 http://localhost:9095;网关监听 http://localhost:9195。等待这两项服务启动,然后检查其健康端点:
curl -fsS http://localhost:9095/actuator/health
curl -fsS http://localhost:9195/actuator/health
配置示例路由
以下请求会在此网关上配置 divide 插件,将 /index.html 转发到示例服务:
curl -fsS http://localhost:9195/shenyu/plugin/selectorAndRules \
-H 'Content-Type: application/json' \
-H "localKey: ${SHENYU_LOCAL_KEY}" \
-d '{
"pluginName": "divide",
"selectorHandler": "[{\"upstreamUrl\":\"shenyu-demo:80\",\"protocol\":\"http\",\"weight\":100}]",
"conditionDataList": [
{"paramType": "uri", "operator": "match", "paramValue": "/index.html"}
],
"ruleDataList": [{
"ruleHandler": "{\"loadBalance\":\"random\"}",
"conditionDataList": [
{"paramType": "uri", "operator": "match", "paramValue": "/index.html"}
]
}]
}'
此请求只会更新此网关实例;不会将路由写入 Admin。对于由中心管理的持久路由,请在 Admin 中使用持久化数据库进行配置,而不要使用默认的内存 H2 数据库。
SOFA 和 Tars 支持不再随默认网关发行版提供。要运行这些协议,请在网关类路径中安装对应的 plugin-store starter,并继续使用现有的 Admin 元数据、客户端注册 SDK 和示例进行协议配置。
验证路由
curl -i http://localhost:9195/index.html
响应中应包含通过 ShenYu 提供的 NGINX 欢迎页面。
为什么选择 Apache ShenYu?
ShenYu(神禹)是中国古代统治者夏禹的尊称,也称大禹。人们铭记他三过黄河,为民造福,并成功治理水患。与尧、舜并称为中国古代三大圣王。
这个名字体现了三种理念:
- 弘扬中华文明的传统美德。
- 呼应网关在流量治理中的核心作用。
- 表达社区秉持公平、公正、开放和任人唯贤的承诺,以此向神禹致敬,并践行 Apache Way。
社区与支持
已知用户
已知用户页面按注册顺序列出了已注册用户。
欢迎使用 Apache ShenYu 的组织通过 GitHub issue #68 注册。注册仅面向开源用户。
Star 历史
许可证
Apache ShenYu 根据 Apache License, Version 2.0 授权。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。