Apache ShenYu:响应式架构,释放API的全能潜能!

Apache ShenYu 一款使用 Java Reactor 开发的响应式 API 网关。以其高性能,动态灵活的流量管控,热插拔,易部署等特性,开箱即用为用户提供整套全生命周期的 API 网关,包含 API 注册、服务代理、协议转换与 API 治理等功能。Apache ShenYu:响应式架构,释放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长轮询)动态更新缓存。Apache ShenYu:响应式架构,释放API的全能潜能!Apache ShenYu:响应式架构,释放API的全能潜能!

功能截图

Apache ShenYu:响应式架构,释放API的全能潜能!Apache ShenYu:响应式架构,释放API的全能潜能!Apache ShenYu:响应式架构,释放API的全能潜能!

传送门

开源协议:Apache2.0

开源地址:https://github.com/apache/shenyu

项目合集:https://github.com/OpenTechCol/OpenTechCol

「回复【加群】加入开源技术交流群,干货很多!」

Apache ShenYu:响应式架构,释放API的全能潜能!

-END-

原文始发于微信公众号(开源技术专栏):Apache ShenYu:响应式架构,释放API的全能潜能!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135534.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!