Apache ShenYu 发布 2.5.0


前言

时隔 4 个月,Apache ShenYu 迎来 2.5.0 的大版本,本次版本内容,共有 300 + 的 pull Request,60 + 的贡献者参与提交,88000 + 的添加或者修改的代码行数,该版本优化许多内容,让我们看下这个版本都做了什么。以下只是列举比较重要的一些功能。

日志功能

  • 新增对接阿里云SLS日志插件

具体使用参考:https://shenyu.apache.org/zh/docs/plugin-center/observability/logging-aliyun-sls/

  • 新增对接Elastic Search日志插件

具体使用参考:https://shenyu.apache.org/zh/docs/plugin-center/observability/logging-elasticsearch

  • 新增对接Apache RocketMQ日志插件

具体使用参考:https://shenyu.apache.org/zh/docs/plugin-center/observability/logging-rocketmq

  • 新增对接Apache Kafka日志插件

具体使用参考:https://shenyu.apache.org/zh/docs/plugin-center/observability/logging-kafka

新功能

新增 mock 插件。

为请求指定响应状态码和响应体方便进行测试。 支持设置请求的响应状态码和响应体。 支持配置 ${int|min-max} , ${double|min-max|format} , ${email} , ${phone} , ${zh|min-max} , ${list|[arg1,arg2...]} , ${array|item|length} 等占位符自动生成数据。

具体使用参考:https://shenyu.apache.org/zh/docs/plugin-center/mock/mock-plugin

用户也可以自定义开发其他占位符:

具体开发:https://shenyu.apache.org/zh/docs/developer/spi/custom-mock-generator

response 插件中自定义输出结果

ShenYu代码 :

@Bean
public ShenyuPlugin responsePlugin(final ObjectProvider<List<MessageWriter>> httpWriter) {
Map<String, MessageWriter> writerMap = new LinkedHashMap<>();
List<MessageWriter> writerList = httpWriter.getIfAvailable(ArrayList::new);
for (MessageWriter writer : writerList) {
List<String> supportTypes = writer.supportTypes();
for (String type : supportTypes) {
writerMap.put(type, writer);
}
}
return new ResponsePlugin(writerMap);
}

用户自定实现 :rg.apache.shenyu.plugin.response.strategy.MessageWriter

/**
 * The interface Message writer.
 */
public interface MessageWriter {

/**
 * Write with exchange and shenyu plugin chain.
 *
 * @param exchange exchange the current server exchange
 * @param chain provides a way to delegate to the next filter
 * @return {@code Mono<Void>} to indicate when request processing is complete
 */
Mono<Void> writeWith(ServerWebExchange exchange, ShenyuPluginChain chain);

/**
 * Support type list.
 *
 * @return the list
 */
List<String> supportTypes();
}

注册中心

ShenYu的注册中心的目的是将网关的实例暴露出去,以便支持ShenYu的集群功能。可以使用shenyu-nginx项目,也可以对接其他的负载均衡服务。

ShenYu-Nginx:https://github.com/apache/shenyu-nginx

新增 Nacos的支持

使用: 在网关bootstarp的yaml新增如下配置:

shenyu :
instance:
enabled: true //设置true表示打开
registerType: nacos //类型为nacos
serverLists: localhost:8848
props:

新增 Consul的支持

使用: 在网关bootstarp的yaml新增如下配置:

shenyu :
instance:
enabled: true //设置true表示打开
registerType: consul //类型为consul
serverLists: localhost:2379
props:

性能优化

  • 升级SpringBoot 到 2.6.8, 同时将Reactor-netty升级到 1.0.19

  • 网关自定义Netty全量参数配置。满足用户的个性化配置

具体可以参考:https://shenyu.apache.org/zh/docs/user-guide/property-config/gateway-property-config

新增匹配缓存策略。流量匹配效率为 O(1)

如何使用? 在网关的yaml文件中进行配置:

shenyu:
matchCache:
enabled: true //设置为true 开启
maxFreeMemory: 256 # //内存大小 单位M

新增自定义线共享线程池。

如何使用? 在网关的yaml文件中进行配置:

shenyu:
 sharedPool:
 enable: true
 prefix: "shenyu-shared"
 corePoolSize: 200
 maximumPoolSize: 2000
 keepAliveTime: 60000
 maxWorkQueueMemory: 1073741824 # 1GB
 maxFreeMemory: 268435456 # 256MB

原理:自定义shenyu线程池,重写队列等等。具体可以查看如下代码:

image.png

管控平台

  • 数据存储新增支持 oracle 数据库。
  • 新增API文档管理功能。
  • ShenYu Admin管理控制台新增日志记录。
  • 更多....

重构

  • 重构 spring cloud插件负载均衡。

  • 重构 IpUtils 获取 ip逻辑 。

  • Zookeeper 客户端替换成 Apache Curator。

  • 重构ShenYu Java Client注册逻辑。

  • 更多....

BugFix

  • 修复 divide插件空指针异常.
  • 修复 body 体过大的异常。
  • 修复 Java客户端注册,循环错误。
  • 修复 Grpc客户端注册错误。
  • 修复 加载本地插件失败的问题。
  • 修复 Consul注册只注册1个元数据的问题。
  • 修复 使用Websocket同步数据时候的 CSRF攻击。
  • 修复 Admin pg脚本错误。
  • 更多....

贡献者

特别感谢对 2.5.0 的支持的贡献者,排名不分顺序。

dragon-zhang,renzhuyan,moremind,xiaoyu,likeguo,qinghai777,Kevin, Qicz,,yunlongn,lianjunwei,zhengpeng,Han,weihubeats,Zihao, DamonXue(Fibonacci),Luke.Z,ShawnSiao,sunshujie1990,Codd,dayu, LiuTianyou,PJ,Sixh-PrFor,ChineseTony,chuang,erdengk,hutaishi,impactCn, Jiageng,lahmxu,qifanyyy,Shawn,SongTao,zouchangfu,damonxue,Kunshuai, mango,nuo-promise,Salted,Seth,SongTaoZhuang,wklong,AhahaGe,Bigbang, Chencheng,Dongx,Ethan,haibo.duan,Haitao,huanccwang,jerbo99,Lidyaqf Liming,midnight2104,Nick-fengzl,ningminglong,Rubén,Shuaiqi,vijay wjlonger,Zhang,zhc,Zhiqiang,ZZQ

关于Apache ShenYu

image.png

Apache ShenYu 一款使用 Java Reactor 开发的响应式 API 网关。以其高性能,动态灵活的流量管控,热插拔,易部署等特性,开箱即用为用户提供整套全生命周期的 API 网关,包含 API 注册、服务代理、协议转换与 API 治理等功能。于2022年7月毕业成为Apache顶级项目。


相關推薦

2023-08-16

关于Apache ShenYu Apache ShenYu 一款使用 Java Reactor 开发的响应式API 网关。以其高性能,动态灵活的流量管控,热插拔,易部署等特性,开箱即用为用户提供整套全生命周期的 API网关,包含 API注册、服务代理、协议转换、API文档与 A

2023-07-06

爱心💗 这个版本我们支持对freebsd, debian, opensuse, redhat, apache doris等新的监控类型和指标。 支持WEB页面配置邮件服务器,取代之前的文件配置 支持告警收敛,是否遇到了重复告警频繁发送,有了告警收敛马上解决 公共消

2023-10-13

源技术,扩展性强。 10.开源、安全、自主可控,许可证 Apache 2.0 License & MaxKey版权声明。 界面 下载 当前版本网盘下载,历史版本 版本 日期 网盘(提取码) Docker v 4.0.2 2023/10/11 下载( mxk9 ) 链接

2023-01-17

新增支持 rabbitmq 消息中间件监控 #562 [manager] 新增支持 apache activemq 消息中间件监控#563 [doc] support rabbitmq and activemq help doc #564 [alerter] 新增单元测试用例 AlerterWorkerPoolTest (#443) #565 @898349230 [manager,doc] 新增支持 jetty server me

2024-10-18

组织副秘书长,Gitee 封面人物第 33 期,Stream-Query 作者,Apache StreamPark Committer、Apache ShenYu Committer、Dromara Hutool 成员、Baomidou Mybatis-Plus 成员,合十思维(北京)科技有限公司技术副总监 阿超是一位极具创新精神的年轻开发者,他

2023-02-10

buntu, CentOS, Windows Tomcat, Nacos, Zookeeper, RabbitMQ, Flink, Kafka, ShenYu, DynamicTp, Jetty, ActiveMQ Kubernetes, Docker 和更多您的自定义监控。 通知支持 Discord Slack Telegram 邮件 钉钉 微信 飞书 短信 Webhook。

2024-08-27

pringCloud Loadbalancer 功能单一 RPC远程调用 采用 全新 Apache Dubbo 3.X 历史悠远不用多说 采用 feign 功能有限编写方式 网络波动大 不稳定 分布式限流熔断 采用 Alibaba Sentinel 源码集成便于调试扩展与二次开发 框架还为其

2024-07-10

pringCloud Loadbalancer 功能单一 RPC远程调用 采用 全新 Apache Dubbo 3.X 历史悠远不用多说 采用 feign 功能有限编写方式 网络波动大 不稳定 分布式限流熔断 采用 Alibaba Sentinel 源码集成便于调试扩展与二次开发 框架还为其

2023-03-04

引状态管理等功能。OpenSearch 项目中的所有软件均采用了 Apache License 2.0 开源许可协议,可作为 Elasticsearch 的替代方案。 下载地址 使用 OpenSearch 的 simple schema 解锁数据源 随着 OpenSearch 继续增加功能以支持分析和可观察

2022-10-10

项目名称 数据集成 airbytehq/airbyte alibaba/DataX apache/camel apache/flume apache/incubator-seatunnel apache/inlong apache/sqoop dbt-labs/dbt-core debezium/debezium ververica/flink-cdc-connectors 流处理 apache/beam apache/flink apache/incubator-heron apache/i

2023-12-19

亲爱的社区小伙伴们,Apache Doris 2.0.3 版本已于 2023 年 12 月 14 日正式发布,该版本对复杂数据类型、统计信息收集、倒排索引、数据湖分析、分布式副本管理等多个功能进行了优化,欢迎大家下载体验。 此外,由衷感谢 104 位

2023-02-03

Apache 软件基金会(ASF)孵化器于2022年12月03日,通过了 Apache Linkis 计算中间件项目的孵化毕业投票。2023年01月18日,Apache 软件基金会官方宣布 Apache Linkis 顺利毕业,成为 Apache 顶级项目(TLP)。 以上截图来自 Apache 官网

2023-02-07

2023年1月26日,Apache 软件基金会 (ASF) 官方宣布 Apache bRPC 正式毕业,成为 Apache 顶级项目 (Top-Level Project, TLP)。 Apache bRPC 是由百度初始创立并持续贡献的工业级别 RPC 开源项目,在 2018 年正式贡献给 Apache 软件基金会进行项目孵化

2023-09-27

《Apache Open Office as an unmaintained project?》这篇文章今天在 Hacker News 引起了广泛讨论。作者指出,Apache OpenOffice 最后一个大版本更新是在 2014 年 (Apache OpenOffice 4.1.0),后面一直只发布小版本更新,目前最新版本是今年 2 月发布的 4.1