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 的全能潜能!
图片

传送门

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

推荐:
最全的java面试题库
Apache ShenYu:全新的响应式架构,释放 API 的全能潜能!
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。“在看”支持我们吧!

原文始发于微信公众号(Java笔记虾):Apache ShenYu:全新的响应式架构,释放 API 的全能潜能!

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

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

(0)
小半的头像小半

相关推荐

发表回复

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