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请求标头,选择器和规则用于路由的请求。 -
选择器是第一条路线,它是粗粒度的,例如,在模块级别。 -
规则是第二条路线,例如模块中的方法级别。 -
选择器和规则只匹配一次,然后返回匹配项。所以最粗粒度的应该排在最后。
数据缓存和数据同步
功能截图
传送门
开源协议:Apache2.0
开源地址:https://github.com/apache/shenyu
项目合集:https://github.com/OpenTechCol/OpenTechCol
「回复【加群】加入开源技术交流群,干货很多!」
-END-
原文始发于微信公众号(开源技术专栏):Apache ShenYu:响应式架构,释放API的全能潜能!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135534.html