您现在的位置是:首页 > 文章详情

LiteFlow v2.11.4 正式版本发布!一个越来越强大的规则引擎

日期:2024-01-15点击:71

                    

前言

2.11.4经历了BETA1,BETA2,BETA3版本之后,正式版发布!

2.11.4总共有18个issue的更新,绝大多数为增强类issue。在这个版本中,我们优化了底层,着重优化了性能。也提供了一些小特性的升级。

强烈建议还在用2.11.3版本的同学进行升级。

接下来挑几个更新的增强来详细说下。

重写了声明式的部分

此增强issue困扰我半个多月,一直以来,LiteFlow声明式的底层代码比较混乱。不太好阅读,而且始终会在一些边缘场景莫名其妙的出问题。我一直想对其进行重写,这个版本,我阅读了大量了spring bean构造的底层代码,终于在底层实现了更加优化的改造。改造之后的声明式底层代码更加合理,结构层次也更加清晰,应该会摆脱一些边缘场景的问题。

改造之后的使用方式同之前一致,用户并不会感知到。

只是为了说明下,我们对底层代码是有追求的,并会为了追去极致的代码优雅而去不停努力。

希望你们去使用LiteFlow,因为LF正在变得更强大。

解决了并行线程池的性能问题

源于社区的小伙伴在落地LF时发现,第一次请求会比后面的请求慢上一些。社区小伙伴也进行排查,发现LF是第一次请求时去初始化并行线程池,并报上了issue。

这里确实是之前的版本没考虑周全,这一次,我们修复了这个问题。之后所有的线程池的初始化全都在启动时进行,包括用户自定义的线程池,也是如此。

并行线程池隔离BUG的修复

在2.11.1版本中曾经推出了并行线程池的隔离特性,旨在对一些并行分支非常多的进行线程池的隔离,以达到优化性能的目的,没想到这个特性一直存在BUG。这次我们也深度进行了排查,并修复了这个问题。

增加映射关键字SER和PAR

曾经有一个issue我还记得,说是LF中的THEN和WHEN是表示串行和并行的意思,但是关键字意义却不精准。

虽然我承认THEN和WHEN表示串行和并行的确有些牵强,但是LF用户一直这么用,突然改变最主要的关键字也不太好。

所以这次新推出了SERPAR关键字,等同于THENWHEN。当然继续使用THENWHEN也是可以的。

CmpStep中加入startTime和endTime

以前的CmpStep提供了耗时,但是没有组件的执行时间参数,这次提供了startTime和EndTime。

加入了快速解析的参数

这个增强,也是源于社区内的一位落地的小伙伴,他和我说项目内有几万的流程。启动耗时非常久。

详细分析原因后,发现是LF的CopyOnWriteHashMap比较慢的缘故,当初用这个是为了平滑更新的因素。

所以,2.11.4版本推出了liteflow.fast-load参数,当这个参数为true时。那么启动解析的速度回提升4到5倍。

我也进行了测试,1w条流程(每个流程均有14个组件)耗时3秒,这个解析是线性的。所以在配置了这个参数后,解析速度还是可以接受的。

但是我并不推荐所有的人把快速load模式打开,因为快速load模式牺牲了热更新时的平滑性。换句话说就是,在正常模式下,如果当你热更新时正好有正在执行的流程,那么正在执行的流程是会用老的链路的,只有下一次才会用最新的链路。如果你打开了快速load模式,那么在热更新时,正好在执行过程中的流程有可能前半部分是老的流程,而后半部分有可能读到新的流程。这样就造成了不一致了。

当然这种场景是非常极端的场景,在普通的场景中,可能根本也不需要保持热更新时的平滑性。所以fast-load模式是有代价的。鱼和熊掌不可兼得。看项目要求了。

Nacos配置模式新增对阿里云MSE的鉴权方式

新版本的LiteFlow在Nacos层面可以支持阿里云的MSE鉴权方式了。

只需要这么配置就行了:

 liteflow.rule-source-ext-data={\     "serverAddr":"127.0.0.1:8848",\     "dataId":"demo_rule",\     "group":"DEFAULT_GROUP",\     "namespace":"your namespace id",\     "accessKey":"xxxxxxxxxx",\     "secretKey":"xxxxxxxxxx"\ }

2.11.4全部更新列表

 增强 #I8UQR4 while组件本身加入loopIndex https://gitee.com/dromara/liteFlow/issues/I8UQR4 增强 #I8TZFQ 优化EL的check报错提示,代码优化 https://gitee.com/dromara/liteFlow/issues/I8TZFQ 增强 #I8QJE1 增加映射关键字SER和PAR https://gitee.com/dromara/liteFlow/issues/I8QJE1 增强 #I8PWWO CmpStep中加入startTime和endTime https://gitee.com/dromara/liteFlow/issues/I8PWWO 增强 #I8MXIB WHEN线程池可能存在第一次调用的时候初始化 https://gitee.com/dromara/liteFlow/issues/I8MXIB 增强 #I8MXHX isAccess在WHEN中会被执行2次的问题 https://gitee.com/dromara/liteFlow/issues/I8MXHX 增强 #I8J622 动态组件el语句data参数缺少单引号 https://gitee.com/dromara/liteFlow/issues/I8J622 增强 #I8IDE5 对声明式代理底层代码进行增强 https://gitee.com/dromara/liteFlow/issues/I8IDE5 增强 #I8H1LT 希望提供nacos对于阿里云MSE的鉴权方式 https://gitee.com/dromara/liteFlow/issues/I8H1LT 增强 #I8FC4F 超大量规则场景下项目启动时间过长的问题 https://gitee.com/dromara/liteFlow/issues/I8FC4F 增强 #I8FBBW chain及script新增enable字段后sql打印错误 https://gitee.com/dromara/liteFlow/issues/I8FBBW 增强 #I8DW1J LiteFlowChainELBuilder.validate()依然存在bug https://gitee.com/dromara/liteFlow/issues/I8DW1J 增强 #I8AE9G 超时控制增加maxWaitMilliseconds关键字,以增加更精细的时间控制 https://gitee.com/dromara/liteFlow/issues/I8AE9G 修复 #I8TZTK EL语句构建的时候,如果出现了脚本节点。会出NPE的异常 https://gitee.com/dromara/liteFlow/issues/I8TZTK 修复 #I8S75A 去除循环检测,低版本的jackson可能导致的内存溢出问题 https://gitee.com/dromara/liteFlow/issues/I8S75A 修复 #I8RWGZ 开启WHEN线程池隔离线程池创建有问题 https://gitee.com/dromara/liteFlow/issues/I8RWGZ 修复 #I8PEZ0 修复sql插件中script表中enable字段不起作用的bug https://gitee.com/dromara/liteFlow/issues/I8PEZ0 修复 #I8AF1O 修复redis的订阅模式mode解析的bug https://gitee.com/dromara/liteFlow/issues/I8AF1O 

开设了LF CLUB付费社区

相信老用户都知道,我们在微信群努力帮大家答疑解惑,坚持了2年之多,目前微信群一共有12个群。

随着社区人越来越多,有些问题我有时也没有时间精力去一一回答。为了提高质量,为此我创建了LF CLUB的知识星球。

LF CLUB为付费知识星球,既然是付费星球,加入星球的用户拥有以下权益:

  • • 凡是在星球向我提问的问题,当天必定得到详细的回复和指导建议。

  • • 每个加入的用户每年提供2次远程问题排查,咨询类的服务。

  • • 每1到2天会分享LF目前的进度,以及下一个版本的重点。

  • • 每周发布一篇LF的解析和相关理念分析。

  • • 提供之后视频教程的折扣购买权益。

当然您也可以选择不加入星球,在微信群里向我提问,但是迫于精力问题,也不可能保证每位的问题都能得到细致的回复和指导。

原文链接:https://www.oschina.net/news/275773/liteflow-2-11-4-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章