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长轮询)动态更新缓存。


功能截图



传送门
❝
开源地址:https://github.com/apache/shenyu ❞
推荐: 最全的java面试题库 PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
原文始发于微信公众号(Java笔记虾):Apache ShenYu:全新的响应式架构,释放 API 的全能潜能!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137208.html