osgi 让 java 系统变成模块化的形式,ASM 是一款修改字节码的框架,同类型的框架 Cglib。这些框架能加载一个 class 信息,Javaagent&Attach API 结合 ASM
LiteFlow 的理念很简单,就是把系统中的各个逻辑切分成一小块一小块的,称之为组件
,这些组件可以由 java 代码来写,也可以用脚本来写。然后一个完整业务就是把各个组件组搭一起,形成一个完整业务链。
这种模式的好处就是,不需要热更新的部分可以用 java 组件来写,需要经常变的部分可以用脚本来写。所有的组件均可混搭成为一个业务。如何编排这些组件,LiteFlow 独创了 ELF 语法,拥有非常好上手的编排语法。程序员的话,十分钟就可以上手。上图粉色部分就是最简单的一种串联形式。
业务链路中组件可实时更换,也可实时增加,形成一个新的业务链。同时定义好的组件也可复用在其他的链路中。
LiteFlow 的脚本方案也是利用 JSR223 来实现的,目前已经实现的脚本有三种:
为什么说利用 LiteFlow 编排引擎框架,你的所有逻辑都是可以变更的呢。因为你完全可以把所有的逻辑都用脚本组件来实现,LiteFlow 提供了非常强大的脚本支持,完全和 Java 底层打通,你可以在脚本中 import java 的类,也可以调用 java 的类方法,甚至于可以在脚本中去定义方法,定义类,一切写法和 java 中完全一样。
更夸张的是,LiteFlow 允许你在脚本中调用 spring 上下文的 bean,你可以在脚本中调用 DAO 取数据,可以在脚本中发送 rpc 给其他微服务。只要你愿意,你可以一行 java 业务代码不写,完全把业务搬到脚本组件中去。
而且连逻辑块的顺序你也可以随意变动,因为 LiteFlow 的编排规则和脚本均可实现热变更。
LiteFlow 为经常用的存储中间件也提供了原生支持:
LiteFlow 支持所有的关系型数据库,另外 zk,etcd,nacos 均可支持,还提供了额外的扩展接口,供你自己扩展成其他的存储方式。
有想过么,你所有的逻辑和规则编排语法,都是存在于系统之外的。只要更改其脚本和逻辑,你所有节点的系统不需要做任何事,实时的进行热变更。
而这一切,LiteFlow 做到了非常平滑,所谓平滑的意思是,不用担心在热变更的时候你的业务会受到任何的中断,也不会因为热变更造成正在执行的链路产生任何的异常。
LiteFlow 编排能力有多强大呢,简单的几个关键字就可以编排出超乎想象的效果:
结语
java 的业务热部署领域,LiteFlow 作为一款规则引擎
项目官网:
https://liteflow.yomahub.com
gitee 托管仓库:
liteFlow: 轻量,快速,稳定,可编排的组件式规则引擎/流程引擎。拥有全新设计的DSL规则表达式。组件复用,同步/异步编排,动态编排,复杂嵌套规则,热部署,平滑刷新规则等等功能,让你加快开发效率!
github 托管仓库:
https://github.com/dromara/liteflow