基于规则引擎技术逐渐成为各类风控系统的建设的首选方案。规则引擎是一种嵌入在应用程序中的组件,从基于专家系统中的推理引擎发展而来。它的核心思想是将复杂多变的规则从业务流程中解放出来,以规则脚本的形式存放在文件中或者数据库,引擎工作时动态的加载规则,使用规则引擎的应用实现了业务规则的热插拔,使业务规则的变更不需要修正代码重启机器就可以立即在线上完成规则升级。

规则引擎对比springboot 规则引擎 规则引擎原理_规则引擎

        早在 20 世纪70 年代,美国斯坦福大学便使用LISP 语言开发出了世界上第一个基于规则的系统—— MYCIN 系统,该系统主要用于血液疾病的诊断,并给出了相应的治疗方法,该系统分离了知识和控制,即知识抽象出相应规则,并从评估、执行的控制逻辑程序中分离出来。这是业务规则引擎技术的启蒙时期。

        20 世纪90 年代,随着面向对象技术的兴起,分类机制、信息隐藏封装、消息通信机制等技术为人们解决复杂应用软件系统的问题提供了新的概念和模型,同时也为基于规则的程序提供了更好的集成和实现方式。可以说,面向对象机制很好地解决了数据与数据操作的关系,而业务规则管理技术为对象之间的消息通信提供了以业务规则数据形态处理业务逻辑的触发机制,使对象模型和业务规则模型较完美地结合在一起。此外,丰富的图形化的业务规则管理工具也是业务规则管理技术得到广泛应用的重要基础,而且商用业务规则引擎的性能和稳定性的极大提高,使得此技术的市场渗透率不断提高。

        21 世纪后,规则管理技术日趋成熟,2000 年 11 月,JavaCommunity Process组织开始着手起草 Java 规则引擎的API标准,即JSR94 规范。JSR94 在2003 年11 月正式定稿,支持 JSR 94标准的规则引擎也几乎同时推向市场。目前市场上规则引擎有很多种,商用的引擎主要代表是ILOG Jrules。它是完整的业务规则管理系统,提供了对整个企业业务规则进行建模、编写、测试、部署和维护所必须的工具。 Visual Rules是国内商业引擎的品牌,在规则编辑页面和执行效率上,都做的十分不错。开源的引擎也有很多种,目前社区做活跃的是Drools。它是基于Java和RETE算法的开源引擎,功能较为完善,符合业内标准,速度快、效率高。

       在当今移动互联网的格局下,各种结构化数据,非结构化数据成“井喷式”的增长,如何应用这些数据,并快速得到决策结果,已成为规则引擎发展的新的方向。其中某些技术研究人员借鉴了Map-Reduce的思想,提出了一种分布式规则引擎实现方案,将规则集进行拆分,分别部署于各个节点,再将节点产生的中间结果汇聚节点进行最终处理。这种方式在处理较大输入数据量时有很好的效率提升,也有些技术人员将规则引擎融入Storm拓扑中,实现平均日处理消息量近10亿,峰值事件QPS1.4万,很好拓展了业务的发展。

        规则引擎发展目前也遇到诸多问题。

1.规则可视化配置,如何让业务人员通过界面引导业务人员配置各类规则,而不是让技术人员从后台配置手工,从而彻底解放技术人员。;

2.规则的维护。当规则数量增多时,如何维护这些规则?当规则发生变更时,如何做到变更的规则与之前发布的规则不冲突。从而让这些规则彼此之间独立互不干扰。

3.规则执行效率,当规则数量越来越多,业务数据也呈指数及增长时,如何做到快速命中规则,进而做到快速准确决策,不让规则的数量成为系统的瓶颈。

        不过随着技术的不断发展,相信会有更好的技术或者方案来解决上述问题,那时候规则引擎技术将进入新的纪元。