首页
学习
活动
专区
圈层
工具
发布
MCP广场 >详情页
Apache ShenYu网关2026-06-10164分享添加福利群:解决AI开发者的「MCP实战痛点」
Apache ShenYu是一个面向微服务的开源API网关,提供高性能、可扩展的代理和流量治理能力。它支持多种协议(如Dubbo、Spring Cloud等),具备安全认证、API治理、可观测性等核心功能,并通过插件机制实现灵活扩展。ShenYu采用动态配置和缓存技术优化性能,适用于微服务架构中的API路由、负载均衡和安全控制等场景。
By apache
2026-06-10164
github
详情内容

深色Logo

面向所有微服务的可扩展、高性能、响应式API网关解决方案

https://shenyu.apache.org/

英文文档 简体中文文档

github forks github stars github contributors Docker Pulls Ask DeepWiki



架构


为什么命名为Apache ShenYu

ShenYu(神禹)是中国古代君主夏禹的尊称(后世也称大禹),他留下了三过家门而不入的感人故事,成功治理了黄河水患。他是中国古代最伟大的三位君主之一,与尧、舜齐名。

  • 首先,ShenYu这个名字是为了弘扬中华文明的传统美德。

  • 其次,网关最重要的是流量的治理。

  • 最后,社区将以公平、公正、开放和任人唯贤的方式行事,向神禹致敬,同时也遵循Apache之道。


特性

  • 代理:支持Apache® Dubbo™、Spring Cloud、gRPC、Motan、SOFA、TARS、WebSocket、MQTT
  • 安全:签名、OAuth 2.0、JSON Web Tokens、WAF插件
  • API治理:请求、响应、参数映射、Hystrix、RateLimiter插件
  • 可观测性:追踪、指标、日志插件
  • 仪表盘:动态流量控制、用户菜单权限的可视化后端
  • 扩展:插件热插拔、动态加载
  • 集群:NGINX、Docker、Kubernetes
  • 语言:提供.NET、Python、Go、Java客户端用于API注册

快速开始(docker)

为ShenYu创建网络

> docker network create shenyu

运行Apache ShenYu Admin

> docker pull apache/shenyu-admin
> docker run -d --name shenyu-admin-quickstart -p 9095:9095 --net shenyu apache/shenyu-admin

运行Apache ShenYu Bootstrap

> docker pull apache/shenyu-bootstrap
> docker run -d --name shenyu-quickstart -p 9195:9195 -e "shenyu.local.enabled=true" -e SHENYU_SYNC_WEBSOCKET_URLS=ws://shenyu-admin-quickstart:9095/websocket --net shenyu apache/shenyu-bootstrap

设置路由

  • 真实请求 :http://127.0.0.1:8080/helloworld,
{
  "name" : "Shenyu",
  "data" : "hello world"
}
  • 设置路由规则(独立模式)

在Headers中添加localKey: 123456。如果需要自定义localKey,可以使用sha512工具根据明文生成密钥,并更新shenyu.local.sha512Key属性。

curl --location --request POST 'http://localhost:9195/shenyu/plugin/selectorAndRules' \
--header 'Content-Type: application/json' \
--header 'localKey: 123456' \
--data-raw '{
    "pluginName": "divide",
    "selectorHandler": "[{\"upstreamUrl\":\"127.0.0.1:8080\"}]",
    "conditionDataList": [{
        "paramType": "uri",
        "operator": "match",
        "paramValue": "/**"
    }],
    "ruleDataList": [{
        "ruleHandler": "{\"loadBalance\":\"random\"}",
        "conditionDataList": [{
            "paramType": "uri",
            "operator": "match",
            "paramValue": "/**"
        }]
    }]
}'

如果处理请求的后端服务运行在主机上,请将upstreamUrl设置为host.docker.internal:8080,或者如果容器可以访问,则指定IP地址。

在docker run命令中添加--network host而不是--net shenyu也可以正常工作。

  • 代理请求 :http://localhost:9195/helloworld
{
  "name" : "Shenyu",
  "data" : "hello world"
}

插件

每当有请求进入时,Apache ShenYu会通过责任链执行所有启用的插件。

作为Apache ShenYu的核心,插件是可扩展和热插拔的。

不同的插件做不同的事情。

当然,用户也可以自定义插件以满足自己的需求。

如果你想自定义,请参阅自定义插件


选择器与规则

根据你的HTTP请求头,选择器和规则用于路由你的请求。

选择器是你的第一层路由,它是较粗粒度的,例如在模块级别。

规则是你的第二层路由,决定你的请求应该做什么。例如模块中的方法级别。

选择器和规则只匹配一次,匹配成功后即返回。因此最粗粒度的应该最后排序。


数据缓存与数据同步

由于所有数据都使用ConcurrentHashMap缓存在JVM中,因此速度非常快。

Apache ShenYu通过监听ZooKeeper节点(或WebSocket推送、HTTP长轮询)在用户更改后台管理中的配置信息时动态更新缓存。


前提条件

  • JDK 17+

随时间变化的Star数

随时间变化的Star数


贡献者与支持


已知用户

按注册顺序排列,欢迎更多公司访问注册 https://github.com/apache/shenyu/issues/68(仅限开源用户)。

所有用户 : 已知用户

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档