news 2026/4/18 10:22:37

API 网关 Apache ShenYu 使用文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
API 网关 Apache ShenYu 使用文档

架构图

什么是 Apache ShenYu

这是一个异步的,高性能的,跨语言的,响应式的API网关。

为什么叫ShenYu

ShenYu(神禹)是中国古代君主夏禹(后世亦称大禹)的尊称,他留下了三渡黄河造福人民并成功治理黄河洪水的感人故事。他和尧、舜一起被认为是中国古代三大帝王之一。

  • 首先,ShenYu这个名字是为了弘扬我们中华文明的传统美德。
  • 其次,对于网关来说最重要的是流量管理。
  • 最后,社区将以公平、公正、公开、择优的方式做事,在向神禹致敬的同时,也符合 Apache Way。

特点

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

脑图

快速开始 (docker)

运行 Apache ShenYu Admin

docker pull apache/shenyu-admin docker network create shenyu docker run -d -p 9095:9095 --net shenyu apache/shenyu-admin

默认账号:admin

默认密码:123456

运行 Apache ShenYu Bootstrap

docker pull apache/shenyu-bootstrap docker run -d -p 9195:9195 -e "shenyu.local.enabled=true" --net shenyu apache/shenyu-bootstrap

路由设置

  • Real requests :http://127.0.0.1:8080/helloworld,

    {"name":"Shenyu","data":"hello world"}
  • 设置路由规则 (Standalone)

    localKey: 123456添加到Headers中。如果需要自定义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": "/**" }] }] }'
  • 代理请求 :http://localhost:9195/helloworld

    {"name":"Shenyu","data":"hello world"}

插件

每当有请求进来,Apache ShenYu将基于责任链模式由所有启用的插件来执行它。

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

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

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

如果要自定义,见自定义插件


Selector & Rule

根据您的HTTP请求头,Selector和Rule将用于路由您的请求。

Selector是您的第一层路由,它是粗粒度的,例如模块级。

Rule是你的第二层路由,你认为你的请求应该做什么。例如模块中的方法级别。

Selector和Rule只匹配一次,然后返回匹配结果。因此最粗的粒度应该最后排序。


Data Caching & Data Sync

因为所有数据都是使用JVM中的ConcurrentHashMap缓存的,所以速度非常快。

Apache ShenYu通过监听ZooKeeper节点(或WebSocket push,HTTP long polling),在后台管理中用户更改配置信息时动态更新缓存。


Prerequisite

  • JDK 1.8+

Apache ShenYu 介绍 | Apache ShenYu

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:06:46

selenium 自动化测试工具实战项目(窗口切换)

介绍 测试的系统:白月黑羽网站的测试系统(白月SMS系统) 测试内容:点击【学习教程】链接跳转到白月黑羽网站,获取此网站上的标题,然后回到原来的系统。 所涉及的知识点:frame切换/窗口切换 这个iframe元素非常的特殊&…

作者头像 李华
网站建设 2026/4/17 9:00:17

excel 中如何快速归一化

B2/$G2B2 → 当前单元格的数据(要处理的值)$G2 → 除数$G → 锁定列 G(横向拖动公式时不会变列)2 → 行号相对(纵向填充公式时会自动变行)方法 A:横向先填充,再纵向填充 方法 B&…

作者头像 李华
网站建设 2026/4/18 7:54:49

AI Agent:2026年AI生态核心与开发实践指南

AI Agent是具备自主决策、规划和执行能力的数字实体,是2026年AI生态核心。主流架构包括感知、规划/推理、行动、记忆和反思/评估等组件。A2A协议促进Agent间协作,MCP标准化工具调用,Agent Skills实现能力模块化,使开发者能像搭乐高…

作者头像 李华
网站建设 2026/4/17 23:28:30

1.4 事务消息机制:如何确保重要通知100%送达用户?

1.4 事务消息机制:如何确保重要通知100%送达用户? 引言 在分布式系统中,确保重要消息的可靠传递是一个关键挑战。特别是在金融、电商等对数据一致性要求极高的场景中,任何一条重要通知的丢失都可能导致严重的业务后果。例如,用户支付成功后没有收到确认通知,或者系统关…

作者头像 李华
网站建设 2026/4/18 8:30:48

打造你的家庭 AI 助手(二):飞书机器人接入你的 OpenClaw

在上一篇文章中,我们完成了 OpenClaw 的安装和基础配置。现在,让我们把这只「小龙虾」接入飞书,用手机就能远程控制你的 AI 助手。 第一步:在飞书开放平台创建应用 1.1 进入飞书开放平台 打开浏览器,访问飞书开放平台&…

作者头像 李华
网站建设 2026/4/18 8:15:33

2026冲刺用!千笔写作工具,顶流之选的AI论文平台

你是否曾为论文选题发愁,反复修改却总对表达不满意?是否在深夜面对空白文档文思枯竭,又担心查重率过高?论文写作的每一个环节都让人倍感压力。而今,随着2026届毕业季临近,越来越多学生开始寻找高效、专业的…

作者头像 李华