API 网关 Apache ShenYu 使用文档

📅 发布时间:2026/7/8 20:12:00 👁️ 浏览次数:
API 网关 Apache ShenYu 使用文档
架构图什么是 Apache ShenYu这是一个异步的高性能的跨语言的响应式的API网关。为什么叫ShenYuShenYu(神禹)是中国古代君主夏禹后世亦称大禹的尊称他留下了三渡黄河造福人民并成功治理黄河洪水的感人故事。他和尧、舜一起被认为是中国古代三大帝王之一。首先ShenYu这个名字是为了弘扬我们中华文明的传统美德。其次对于网关来说最重要的是流量管理。最后社区将以公平、公正、公开、择优的方式做事在向神禹致敬的同时也符合 Apache Way。特点代理支持Apache DubboSpring CloudgRPCMotanSOFATARSWebSocketMQTT安全性签名OAuth 2.0JSON Web令牌WAF插件API治理请求、响应、参数映射、Hystrix、RateLimiter插件可观测性跟踪、指标、日志记录插件仪表板动态流量控制用户菜单权限的可视化后端扩展插件热插拔动态加载集群NGINX、Docker、Kubernetes语言提供.NETPythonGoJava客户端用于API注册脑图快速开始 (docker)运行 Apache ShenYu Admindocker pull apache/shenyu-admin docker network create shenyu docker run -d -p 9095:9095 --net shenyu apache/shenyu-admin默认账号:admin默认密码:123456运行 Apache ShenYu Bootstrapdocker pull apache/shenyu-bootstrap docker run -d -p 9195:9195 -e shenyu.local.enabledtrue --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 pushHTTP long polling)在后台管理中用户更改配置信息时动态更新缓存。PrerequisiteJDK 1.8Apache ShenYu 介绍 | Apache ShenYu