国内开源规则引擎牛起来

简介: 国内开源规则引擎牛起来



原文首发:ITPUB,作者:王静

采访对象:「名人堂」LiteFlow 框架作者 张元成  


在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻辑,几乎每个需求都和这些核心业务有关。这些核心业务逻辑冗长,涉及内部逻辑运算、缓存操作、持久化操作、外部资源调取、内部其他系统RPC调用等等。时间一长,项目几经易手,维护的成本得就会越来越高。各种硬代码判断,分支条件越来越多。

代码的抽象,复用率也越来越低,各个模块之间的耦合度很高。一小段逻辑的变动,会影响到其他模块,需要进行完整回归测试来验证。如要灵活改变业务流程的顺序,则要进行代码大改动进行抽象,重新写方法。实时热变更业务流程几乎很难实现。

本期 ITPUB 有幸采访了开源 LiteFlow 框架的作者张元成老师,一起探讨一款轻量,快速的编排规则引擎框架。LiteFlow主要致力于逻辑驱动的编排。可以满足于大部分的生产业务场景。组件编排,帮助解耦业务代码,让每一个业务片段都是一个组件。

· 张元成  ·


问题 1:您好,张老师!很荣幸有机会采访到您,先简单介绍一下您自己!


大家好,我的网络ID叫铂赛东,可能大家对于这个ID更熟悉点。很荣幸受到IPUB社区对我采访的邀请。我是开源框架LiteFlow的作者,个人长期从事基础性架构方面的研究工作,工作中的职责也是如此,写了十几年的代码,其实写过很多框架,LiteFlow可能是被大家熟知的一个。

我的开源经历有5年多,目前2个项目荣获了GVP荣誉,我也是《开源指北》的编写者之一。

我目前所在的组织叫Dromara,是国内优秀的Java开源组织,致力于推动国内开源事业的发展,为广大的开发者提供优秀的解决方案,社区活跃,让参与的每一位开源爱好者,体会到开源的快乐。


问题 2:编排规则引擎 LiteFlow 的分工是怎样的?在开源网站上 LiteFlow 属于微服务框架类前几名,star 已超过4k,怎么想到开源 LiteFlow 呢?


LiteFlow是一个社区驱动型的开源框架,我们90%issue都来自于社区,也有社区的小伙伴成为了LiteFlow的Committer

很多项目都是先在公司内部用,用的稳定了后,然后剥离出来开源。但是LiteFlow的模式不是这样的,从一开始设计起,我就确定了LiteFlow将是一个开源框架的目标,从项目规划,设计,规范,开发流程上都完全按照开源的模式在走,第一个版本出来之后,先是运用到公司内部系统上,然后根据表现来完善初代版本。然后后续都是按照社区来驱动的。

很幸运,LiteFlow这个项目兑现了最初的规划,迭代了两年,成为了国内比较知名的规则引擎。

当然在这过程中,我也有过挣扎,曾几度放弃过这个项目。但是社区和使用者其实是会倒逼你的,我就不停的在放弃和前进中徘徊,直到有一天我觉得,LiteFlow的确可以走的更远,这个项目倾注了我太多的时间和精力,既然已经走出了一段距离了,为什么不再多往前一点呢。

开源LiteFlow不是一时兴起,是我2年来一直拥有的信念:我要把他带的更远,开源需要信念和坚持,人生和生活亦是如此。


问题 3:请您介绍一下 LiteFlow 是什么?LiteFlow 设计之初遵循了哪些设计理念/设计原则?


LiteFlow是一个java编排式的规则引擎框架,它不仅能把核心逻辑剥离出来,还能进行业务的编排。是一个融合了规则引擎和编排引擎的框架。

LiteFlow框架设计理念是轻量,使用方便,四两拨千斤。在编排领域,LiteFlow能让你的系统分割成一个个小的组件,然后像搭积木一样拼装成一个完整的业务,同时组件可复用,可实时替换,删减和增加。组件是LiteFlow中最小的编排单位,我们把它想象成积木。LiteFlow提供一套非常简单易学的编排语法,程序员非常容易上手。同时每个“积木“可以用java来定义,也可以用脚本来写。非常灵活。


问题 4:LiteFlow 融合规则引擎和逻辑编排引擎的一款开源框架,什么是规则引擎和逻辑编排引擎?规则引擎与逻辑编排引擎分别解决的是什么问题?


简单来说,规则引擎解决的是系统的灵活问题,主要是把决策逻辑进行剥离,用预定义的语法来表示。使用者在外部改变决策语法,那么整个决策逻辑就发生改变,并且这个过程是要求能实时生效的,不需要系统发布重启的。


逻辑编排引擎解决的是系统的耦合问题,一个系统能够随意编排,就意味着有编排单元,是解耦的,否则上下有强依赖关系,怎么能实现编排呢。有了编排单元加上精妙的编排语法,编排引擎就能做到耦合问题,组件最大程度的解耦,可复用,替换组件即改变业务。


LiteFlow认为这2者之间是息息相关的,所以把这2者进行了巧妙结合。所以解决了系统灵活性,又解决了系统的耦合性,算是在规则引擎领域的一种全新的探索吧。



问题 5:LiteFlow 可以解决哪些问题?什么场景适用于使用 LiteFlow 呢?


LiteFlow在绝大多数的业务中都可以使用,尤其是针对于业务比较复杂的系统,使用LiteFlow简直是个解耦神器。因为LiteFlow的核心理念就是用搭积木的方式来搭出你的业务。使用这样理念设计打造出来的系统具有最大程度的解耦性,复用性和灵活性。如果你的系统维护艰难,历经多任修改,逻辑复杂,改一个地方就怕影响全局,要回归测好久。那么LiteFlow将会是最佳选型。


前面我提到过,LiteFlow不仅是一个规则引擎,还是一个编排引擎。所以不一定你需要规则引擎时才要用到,即使作为一款编排框架,都是很不错的选择,即使很简单的业务也可以使用,没有场景的限制。在规则引擎方面,LiteFlow更是提供了强大的脚本和中间件插件的支持。




问题 6:为什么 LiteFlow 框架可以给业务提供更多的自由度和可玩性?


首先是LiteFlow提供了非常简单易学的EL语法,经过简单学习之后就可以上手,运用语法,可以编排出非常复杂的业务,真正做到像搭积木一样的写代码。


其次LiteFlow的脚本提供了groovy,javascript,qlexpress三种脚本语言的支持,未来还将推出更多的脚本语言种类。使用者可以选择自己熟悉的语法来进行编写业务。用脚本语言完全能代替java来进行书写逻辑,LiteFlow打通了java系统和脚本语言之间的所有屏障,所有的逻辑都用脚本语言来完成也是可以的。


再者就是LiteFlow提供了众多的第三方存储中间件的支持,支持所有的关系型数据库,另外还支持了流行的注册中心,zk,nacos,etcd。把规则和脚本存储到第三方中间件,还支持自定义扩展你的存储接口。改变规则和脚本,无需做任何事情,即可实时平滑刷新你的整个业务。


所以说拥有了实时调整和像搭积木一样写业务的能力,业务的自由度就能得到巨大的提升。




问题 7:LiteFlow 与同类型哪些框架做过测试对比?在相同的场景下具备哪些优势?


业界开源的规则引擎框架其实并不算多,LiteFlow一直对标的就是老牌规则引擎Drools,其实早在十几年前,我刚毕业工作的时候就曾接触到,一直是规则引擎框架的标杆。


LiteFlow和Drools能解决的问题都类似,但是LiteFlow的设计理念会更加现代化一点,支持的脚本语言更多,对中间件的支持也丰富很多,学习成本也少于Drools。在热刷新上,也比Drools简单平滑很多。


最最重要的,LiteFlow的文档和社区都非常本地化,碰到问题了,提issue,或者进群反馈下,就立马能得到解决,我相信这不是国外的开源软件能比拟的。



问题 8:LiteFlow的的流转模式是怎样的?有什么特点?对比其他模式有什么改进?


LiteFlow的流转模式比较特别,因为有了组件化这个概念,所以LiteFlow的流转方式基于工作台模式的。


工作台模式就是所有的组件不需要互相进行交流,传递数据。而是统一的通过工作台这一容器进行存取数据。工作台我们可以简单的理解为上下文,每一个请求会自动分配一个上下文。这种模式最大的好处就是组件之间是解耦的,每个组件只关心自己需要什么资源,产出哪些数据,至于资源是谁给的,产出的数据是给谁的,组件并不需要知道。


LiteFlow的编排流转理念正是基于此开发的。




问题 9:您认为好的开源框架应具备哪些条件?开源编排规则引擎LiteFlow的下一步规划是什么?


我觉得好的开源框架一定要具备社区性,也就是说有多少人用它,很多人用,反过来也就说明了它能解决的问题是被大家认可的。还有就是框架的贡献度,如果一个框架完全由作者一个人长期维护,那除非这个作者具有非凡的毅力和决心,不然很难去完成这件事。很多国内好的框架也正是因为这个原因而最后不维护了。


我就时常反思开源的意义是什么,开源的本质就是让更多人参与进来,一起去完善项目。一个人的力量是有限的,一群人才能走的更远。


LiteFlow的下一步规划是分成技术方向和运营方向的,技术方向我们除了不断迭代解决社区内提出的issue外,我们也会在形态上进行升级,比如更稳定的功能,更规范的代码,更完善的注释,推出界面去管理去监控等等。在运营上,我希望LiteFlow这个项目被越来越多的人使用,希望社区能有更多人参与。我作为作者,也欢迎任何人能参与贡献,并且成为我们的长期贡献者,团队成员。



问题 10:如何看待国内开源生态链,有什么关于开源方向的意见和建议吗?在开源实战中,您印象最深的事情是什么?


我觉得国内开源生态比以前繁荣很多,但是开源一定是一个持续的过程,而且不是说我把代码托管到github,gitee上那就叫开源,那最多只能算你把代码公布了而已。公布代码只是第一步,接下来你还得持续迭代,建设社区,运营你的项目,写出完善的文档,如果有发布包或者依赖,还得发布到公有的仓库。如果你想让更多的人了解到你的开源并想让更多人来参与,那么持续的迭代和运营是必须的,借用我们社区一位大佬的名言,开源不能光埋头写代码,还要抬头看路。抬头看路很重要,知道路的方向比你写万行代码更有价值。方向永远是第一位的,做好了运营,做好了推广并持续迭代,才会有人关注你的项目,然后有人给你提issue,参与贡献,反过来又会倒逼着项目的持续迭代,这就是一个正向的循环过程。


在我的这几年的开源经验里,印象最深的是,有一个好的圈子是最重要的,就是说要寻找一批志同道合的朋友,一起学习,一起激励。正如我现在所处的Dromara组织,它是由国内顶尖的开源组织自发形成的一个组织,大家有各自的开源项目,一起交流技术,探讨国内开源的现状以及一起推动国内开源事业,这让我觉得很有意义,也很乐于去为组织,为开源事业贡献自己的力量。帮助到更多的人。


也希望大家能多多关注中国的开源事业,以及关注下我们的Dromara组织,希望更多热爱开源事业的人加入到我们的队伍中来。

相关文章
|
6月前
|
SQL 分布式计算 Hadoop
百川终入海 ,一站式海量数据迁移工具 X2Doris 正式发布
在这一过程中,如何将海量历史数据进行高效迁移成为用户的痛点所在。基于这一目标,我们启动了名为“百川入海”的专项开发任务,开发了**一站式海量数据迁移工具 X2Doris**,集自动建表和数据迁移于一体、提供了对 Apache Hive、ClickHouse、Apache Kudu 以及 StarRocks 等多个数据源的支持,全程界面化、可视化操作,仅通过鼠标操作即可完成大规模数据同步至 Doris 中,并提供了极速和稳定的迁移体验。在经过数个月的公开测试和近百家企业的打磨后,今天我们很高兴地宣布, **X2Doris 正式发布、面向所有社区用户免费下载使用**,数据迁移至 Apache Do
百川终入海 ,一站式海量数据迁移工具 X2Doris 正式发布
|
6月前
|
Dubbo Cloud Native 应用服务中间件
调研 7 个开源项目后,这家数据合规平台如何构建高性能网关
调研 7 个开源项目后,这家数据合规平台如何构建高性能网关
|
6月前
|
人工智能 监控 数据可视化
Springcloud可视化物联网智慧工地云SaaS平台源码 支持二开和私有化部署
Springcloud可视化物联网智慧工地云SaaS平台源码 支持二开和私有化部署
194 1
|
存储 机器学习/深度学习 人工智能
重磅!阿里巴巴所有产品未来将接入大模型全面升级
重磅!阿里巴巴所有产品未来将接入大模型全面升级
285 0
|
自然语言处理 算法 物联网
阿里云正式发布「IoT消费电子应用引擎解决方案」,应用开发提效70%
阿里云正式发布「IoT消费电子应用引擎解决方案」,应用开发提效70%
308 0
|
Cloud Native 安全 中间件
阿里云和中创中间件完成产品集成认证,共同助力基础软件生态建设
近日,山东中创软件商用中间件股份有限公司(以下简称“中创中间件”)产品“中创应用服务器软件V9.1、V10”与阿里云计算有限公司(以下简称阿里云)产品“阿里云PolarDB数据库管理软件V2.0”经过严格测试程序完成产品集成认证测试,此次认证意味着双方在云原生领域正式携手合作。
545 11
阿里云和中创中间件完成产品集成认证,共同助力基础软件生态建设
|
存储 算法 Cloud Native
PolarDB 开源生态插件心选 - 这些插件让业务战斗力提升100倍!!!
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍PolarDB 开源版插件生态, 通过插件给数据库加装新的算法和索引|存储结构, 结合PolarDB的大规模存储管理能力, 实现算法和存储双剑合璧, 是企业在数据驱动时代的决胜利器.
409 0
|
运维 Kubernetes Cloud Native
从构建到治理,业内首本微服务治理技术白皮书正式发布(含免费下载链接)
历经半年多的筹备,长达379页的《微服务治理技术白皮书》,于今天发布,这可能是业内首本聚焦微服务治理业务领域的白皮书,希望通过本书,能对高效解决云原生架构下的微服务治理难题,起到一点点作用。
从构建到治理,业内首本微服务治理技术白皮书正式发布(含免费下载链接)
|
存储 缓存 运维
开源项目推荐:物联网消息引擎EMQ X/大数据平台TDengine/可视化平台Grafana
开源项目推荐:物联网消息引擎EMQ X/大数据平台TDengine/可视化平台Grafana
819 12
|
存储 SQL 运维
如何构建云原生的开源大数据平台 | 产品新功能速递
云原生开源大数据的新产品和新功能「速递」:企业数据云 Cloudera CDP 正式商业化,0元免费测试火热申请中;Elasticsearch、实时计算Flink版、EMR、DLF重磅功能升级。更多优惠等您领取。
如何构建云原生的开源大数据平台 | 产品新功能速递
下一篇
无影云桌面