《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容 。本期推荐的是一个轻量级的规则引擎框架——LiteFlow 。
文章插图
在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻辑,几乎每个需求都和这些核心业务有关,这些核心业务业务逻辑冗长,涉及内部逻辑运算,缓存操作,持久化操作,外部资源调取,内部其他系统RPC调用等等 。时间一长,项目几经易手,维护的成本就会越来越高 。各种硬代码判断,分支条件越来越多 。代码的抽象,复用率也越来越低,各个模块之间的耦合度很高 。一小段逻辑的变动,会影响到其他模块,需要进行完整回归测试来验证 。如要灵活改变业务流程的顺序,则要进行代码大改动进行抽象,重新写方法 。实时热变更业务流程,几乎很难实现 。
如何打破僵局?LiteFlow为解耦逻辑而生,为编排而生,在使用LiteFlow之后,你会发现打造一个低耦合,灵活的系统会变得易如反掌!
功能特性
- 组件定义统一: 所有的逻辑都是组件,为所有的逻辑提供统一化的组件实现方式,小身材,大能量 。
- 规则轻量: 基于规则文件来编排流程,学习规则入门只需要5分钟,一看即懂 。
- 规则多样化: 规则支持xml、json、yml三种规则文件写法方式,喜欢哪种用哪个 。
- 任意编排: 同步异步混编,再复杂的逻辑过程,利用LiteFlow的规则,都是很容易做到的,看规则文件就能知道逻辑是如何运转的 。
- 规则能从任意地方加载: 框架中提供本地文件配置源和zk配置源的实现,也提供了扩展接口,您可以把规则存储在任何地方 。
- 优雅热刷新机制: 规则变化,无需重启您的应用,即时改变应用的规则 。高并发下不会因为刷新规则导致正在执行的规则有任何错乱 。
- 支持广泛: 不管你的项目是不是基于Springboot,Spring还是任何其他JAVA框架构建,LiteFlow都能游刃有余 。
- JDK支持: 从JDK8到JDK17,统统支持 。无需担心JDK版本 。
- 脚本语言支持: 可以定义脚本语言节点,支持QLExpress和Groovy两种脚本 。未来还会支持更多的脚本语言 。
- 规则嵌套支持: 只要你想得出,你可以利用简单的表达式完成多重嵌套的复杂逻辑编排 。
- 组件重试支持: 组件可以支持重试,每个组件均可自定义重试配置和指定异常 。
- 上下文隔离机制: 可靠的上下文隔离机制,你无需担心高并发情况下的数据串流 。
- 声明式组件支持: 你可以让你的任意类秒变组件 。
- 详细的步骤信息: 你的链路如何执行的,每个组件耗时多少,报了什么错,一目了然 。
- 稳定可靠: 历时2年多的迭代,在各大公司的核心系统上稳定运行 。
- 性能卓越: 框架本身几乎不消耗额外的性能,性能取决你的组件执行效率 。
- 自带简单监控: 框架内自带一个命令行的监控,能够知道每个组件的运行耗时排行 。
系统架构
文章插图
框架优势如果你要对复杂业务逻辑进行新写或者重构,用LiteFlow最合适不过 。它是一个轻量,快速的组件式规则引擎框架,组件编排,帮助解耦业务代码,让每一个业务片段都是一个组件,并支持热加载规则配置,实现即时修改 。
LiteFlow利用规则表达式为驱动引擎,去驱动你定义的组件 。你有想过类似以下的多线程流程编排该如何写吗?
文章插图
推荐阅读
- 投影仪|同价位亮度天花板!当贝投影F3 Air开箱图赏
- 微信老是占内存?只需4步即可瞬间清出大量空间,速度比原来快10倍
- 记住这3点即可,回归最简单的养金鱼方法 怎样养金鱼
- 我用的4G手机能用5G网络吗 4g手机能用5g网络吗
- 河北:全省立即进入战时状态 石家庄为发布会延迟道歉
- 汉堡|什么眼霜好用又实惠 最好用的十大眼霜排名
- 河北10家医院发紧急公告 河北:全省立即进入战时状态
- 苹果|未来要取代iPhone!苹果首款AR/VR设备即将启动量产
- 即使中医文化的经典理论是完整的
- 格力空调有哪些非常好用的功能 格力空调怎么样