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、若您需使用非免费的软件或服务,请购买正版授权并合法使用!