Apache ShenYu 一款使用 Java Reactor 开发的响应式 API 网关。以其高性能,动态灵活的流量管控,热插拔,易部署等特性,开箱即用为用户提供整套全生命周期的 API 网关,包含 API 注册、服务代理、协议转换与 API 治理等功能。

功能特性
-
「代理:」 支持 Apache® Dubbo™、Spring Cloud、gRPC、Motan、SOFA、TARS、WebSocket、MQTT -
「安全性:」 Sign、OAuth 2.0、JSON Web Tokens、WAF 插件 -
「API治理:」 请求、响应、参数映射、Hystrix、RateLimiter插件 -
「可观察性:」 跟踪、指标、日志插件 -
「仪表板:」 动态流量控制,用户菜单权限的可视化后端 -
「扩展:」 插件热插拔、动态加载 -
「集群:」 NGINX、Docker、Kubernetes -
「语言:」 提供.NET、Python、Go、Java客户端进行API注册
模块
-
shenyu-admin: 插件和其他信息配置的管理后台 -
shenyu-bootstrap: 用于启动项目,用户可以参考 -
shenyu-client: 用户可以使用 Spring MVC,Dubbo,Spring Cloud 快速访问 -
shenyu-disruptor: 基于disruptor的封装 -
shenyu-register-center: shenyu-client提供各种rpc接入注册中心的支持 -
shenyu-common: 框架的通用类 -
shenyu-dist: 构建项目 -
shenyu-metrics: prometheus(普罗米修斯)实现的 metrics -
shenyu-plugin: ShenYu 支持的插件集合 -
shenyu-spi: 定义 ShenYu spi -
shenyu-spring-boot-starter: 支持 spring boot starter -
shenyu-sync-data-center: 提供 ZooKeeper,HTTP,WebSocket,Nacos 的方式同步数据 -
shenyu-examples: RPC 示例项目 -
shenyu-web: 包括插件、请求路由和转发等的核心处理包
快速入门
运行 Apache ShenYu Admin
> docker pull apache/shenyu-admin
> docker network create shenyu
> docker run -d -p 9095:9095 --net shenyu apache/shenyu-admin
运行 Apache ShenYu Bootstrap
> docker network create shenyu
> docker pull apache/shenyu-bootstrap
> docker run -d -p 9195:9195 --net shenyu apache/shenyu-bootstrap
设置路由器
-
设置路由规则
添加localKey: 123456到标题。如果需要自定义localKey,可以使用sha512工具基于明文生成key并更新属性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请求标头,选择器和规则用于路由的请求。 -
选择器是第一条路线,它是粗粒度的,例如,在模块级别。 -
规则是第二条路线,例如模块中的方法级别。 -
选择器和规则只匹配一次,然后返回匹配项。所以最粗粒度的应该排在最后。
数据缓存和数据同步
-
由于所有数据都在 JVM 中使用ConcurrentHashMap缓存,因此速度非常快。 -
通过监听ZooKeeper节点(或WebSocket推送、HTTP长轮询)动态更新缓存。


功能截图



版权声明:
1、本网站名称:帝企吧
2、本站永久网址:https://www.diqiba.com
3、本网站的文章部分内容可能来源于网络及作者投稿,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
7、本站所有资源来源于互联网,仅用于学习及参考使用,切勿用于商业用途,如产生法律纠纷本站概不负责! 8、资源除标明原创外均来自网络转载,版权归原作者所有,若侵犯到您权益请联系我们删除,我们将及时处理! 9、若您需使用非免费的软件或服务,请购买正版授权并合法使用!
1、本网站名称:帝企吧
2、本站永久网址:https://www.diqiba.com
3、本网站的文章部分内容可能来源于网络及作者投稿,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
7、本站所有资源来源于互联网,仅用于学习及参考使用,切勿用于商业用途,如产生法律纠纷本站概不负责! 8、资源除标明原创外均来自网络转载,版权归原作者所有,若侵犯到您权益请联系我们删除,我们将及时处理! 9、若您需使用非免费的软件或服务,请购买正版授权并合法使用!

评论(0)