CN116775041B - 基于流计算和rete算法的实时决策引擎实现方法 - Google Patents
基于流计算和rete算法的实时决策引擎实现方法 Download PDFInfo
- Publication number
- CN116775041B CN116775041B CN202311050400.9A CN202311050400A CN116775041B CN 116775041 B CN116775041 B CN 116775041B CN 202311050400 A CN202311050400 A CN 202311050400A CN 116775041 B CN116775041 B CN 116775041B
- Authority
- CN
- China
- Prior art keywords
- flink
- rule
- rete
- task
- manager
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000004364 calculation method Methods 0.000 title claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 36
- 230000015654 memory Effects 0.000 claims abstract description 10
- 230000009471 action Effects 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 claims description 7
- 230000002776 aggregation Effects 0.000 claims description 3
- 238000004220 aggregation Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 238000005192 partition Methods 0.000 claims description 3
- 230000002688 persistence Effects 0.000 claims description 3
- 230000003936 working memory Effects 0.000 claims description 3
- 230000004931 aggregating effect Effects 0.000 claims 1
- 238000001914 filtration Methods 0.000 claims 1
- 238000010606 normalization Methods 0.000 claims 1
- 230000007423 decrease Effects 0.000 abstract 1
- 238000012360 testing method Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于流计算和RETE算法的实时决策引擎实现方法,涉及大数据技术领域,通过把分布式流计算处理框架FLINK和RETE模式匹配算法结合起来,形成一个实时分布式流计算决策引擎,极大提高了大数据量且业务规则复杂场景下决策处理的吞吐量、处理速度和系统的高可用性,从而大大提高了业务实时决策的能力,解决了现有技术中数据处理吞吐量偏小,当需要处理的数据量庞大且需匹配的规则数多的情况下,系统处理时间大大增加,内存和CPU等计算资源消耗很大,数据处理严重延迟,系统性能严重下降等问题。
Description
技术领域
本发明涉及大数据技术领域,具体涉及一种基于流计算和RETE算法的实时决策引擎实现方法。
背景技术
决策引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件。规则引擎实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策,接受数据输入,解释业务规则,并根据规则做出业务决策,即触发应用程序中相应的操作。
Flink是一个分布式流处理计算框架,用于对无界和有界数据流进行有状态计算。Flink在所有常见的分布式集群环境中运行,以高性能的内存执行速度和灵活的可伸缩集群规模来执行计算。
RETE算法是一种进行大量模式集合和大量对象集合间比较的高效方法,通过网络筛选的方法找出所有匹配各个模式的对象和规则。其核心思想是用分离的匹配项构造匹配网络,同时缓存中间结果,以空间换时间。其工作过程大致分为规则编译(rulecompilation)和运行时执行(runtime execution)两个阶段。
目前基于RETE算法的决策引擎,主要的缺点是数据处理吞吐量偏小,当需要处理的数据量庞大且需匹配的规则数多的情况下,系统处理时间大大增加,内存和CPU等计算资源消耗很大,数据处理严重延迟,系统性能严重下降。
发明内容
针对上述问题,本发明提供一种基于流计算和RETE算法的实时决策引擎实现方法,通过把分布式流计算处理框架FLINK和RETE模式匹配算法结合起来,形成一个实时分布式流计算决策引擎,极大提高了大数据量且业务规则复杂场景下决策处理的吞吐量、处理速度和系统的高可用性;
本发明采用下述的技术方案:
基于流计算和RETE算法的实时决策引擎实现方法,包括以下步骤:
S1、通过决策规则图形设计器的推送功能把存储在规则文件数据库中的XML规则文件提交到决策规则管理器中;
S2、用户根据业务实际需求,发送决策请求到决策引擎服务接口上,RETE-FLINK规则编译器根据决策引擎服务接口转发的用户请求参数中的对应规则编码从规则管理器中提取相应的规则文件;
RETE-FLINK规则编译器解析规则文件,从而获取用户定义的业务含义,并把这些业务含义映射到内存的JAVA对象中;
S3、RETE-FLINK规则编译器根据RETE算法规范,把已经存储在内存中带有业务含义的JAVA对象再封装成符合RETE算法规范的JAVA对象,为生成RETE网络树做准备;
S4、RETE-FLINK规则编译器构建RETE网络树:
RETE-FLINK规则编译器根据规则文件中具体的规则定义读取此规则的引用类、参数定义、规则条件以及如果满足规则条件需要执行的动作,并将引用类、参数定义、规则条件以及动作与封装成符合RETE算法规范的JAVA对象中的数据结构匹配,RETE-FLINK规则编译器从封装成符合RETE算法规范JAVA对象中的Root Node节点开始向下一直到TerminalNode节点,构建一个完整的规则RETE网络树;
S5、RETE-FLINK规则编译器通过RETE网络树进行规则匹配,同步生成基于Flink算子的JAVA代码:
RETE网络树构建完成后,RETE-FLINK规则编译器从工作存储器里取Fact事实集来与规则文件数据库进行匹配,匹配过程是Fact事实集对象沿着RETE网络树遍历的过程,匹配过程中,RETE-FLINK规则编译器根据规则的RETE网络树、RETE算法规范、Flink框架规范同步进行编译操作,生成相应的基于Flink算子的JAVA程序代码;
编译完成后的FLINK算子代码可以运行在FLINK环境中,这样就可以充分利用FLINK流计算框架的优势,极大提高了大数据量且业务规则复杂场景下决策处理的吞吐量、处理速度和系统的高可用性,从而提高了业务实时决策的能力;
S6、RETE-FLINK规则编译器把编译好的基于Flink算子的JAVA代码提交到Flink流计算框架执行环境中,Flink流计算框架将编译好的基于Flink算子的JAVA代码映射成Stream Graph计算逻辑流图,然后提交Stream Graph计算逻辑流图到Flink Job Graph生成器中;
S7、Flink Job Graph生成器将Stream Grap计算逻辑流图优化处理后生成对应的Job Graph任务图,然后再提交到Flink Job Manager中;
S8、 Flink Job Manager向FLINK ResourceManager资源管理器申请执行分布式任务必要的资源,该资源主要包括有Flink Task Manager和其上的任务运行插槽Taskslot;
Flink Job Manager根据实际获取到的资源将Job Graph任务图再进行优化处理后生成可并行运行的Execution Graph执行图,然后根据Execution Graph执行图调度计算子任务到Flink Task Manager集群资源和其上的任务运行插槽Task slot中进行分布式并行处理;
S9、Flink Job Manager协调资源集群中所有Flink Task Manager进行计算子任务的分布式并行处理,并取得最终的RETE规则计算结果,然后将最终结果异步写入到KAFKA队列和数据持久化系统中,用户通过KAFKA消息队列异步获取到决策规则的最终结果。
优选的,步骤S2中,所述决策引擎服务接口用于解析用户请求参数,校验用户访问权限,然后再转发用户请求和参数到RETE-FLINK规则编译器上。
优选的,步骤S3中,所述规范的JAVA对象包括:根节点Root Node、对象类型节点Object Type Node、连接节点Join Node、条件节点Condition Node、终点节点TerminalNode、动作Action。
优选的,步骤S4中,引用类、参数定义、规则条件以及动作与封装成符合RETE算法规范的JAVA对象中的数据结构匹配方法为:
引用类对应对象类型节点Object Type Node;
规则条件对应条件节点Condition Node;
连接节点Join Node节点在构建网络树时,根据不同对象类型节点Object TypeNode是否有关联条件构建;
动作对应规则条件完全匹配后,终点节点Terminal Node所要执行的规则动作Action。
优选的,步骤S5中,所述Flink框架包括7类JAVA程序算子,分别是:映射Map/FlatMap、过滤Filter、分区KeyBy、聚合Reduce/Aggregations、合并Union/Connect、拆分Split、标记Select。
优选的,步骤S8中, Flink Task Manager的处理步骤为:
S81、Flink Task Manager集群启动后,向Flink Job Manager发送心跳包,并等待Flink Job Manager向其分配计算子任务,同时也向Flink Resource Manager进行TaskSlot运行插槽的注册;
S82、Flink Task Manager接收到Flink Job Manager分配的计算子任务后,FlinkTask Manager通过线程池来调度线程在自己所管理的Task Slot任务槽中执行Flink JobManager分配的计算子任务,Flink Task Manager上并行运行的计算子任务就形成了Flink流计算物理执行图,这些物理执行图用来完成实际的计算任务。
优选的,所述RETE-FLINK规则编译器为:
根据用户请求参数中的规则编码,从规则管理器中取到相应的XML规则文件,解析这些规则文件从中获取用户定义的业务含义,生成RETE推理网络树,然后再把RETE推理网络树编译为基于Flink算子实现的JAVA代码,最后把编译好的Flink算子代码提交到Flink流计算分布式环境中执行。
本发明的有益效果是:
1、本发明通过把分布式流计算处理引擎FLINK,结合RETE模式匹配算法执行能力联合起来,形成一个大数据分布式流计算实时决策引擎,大大增加了决策引擎系统的规则和数据处理能力和吞吐量,降低了数据处理的延时,极大的提高了业务实时决策的能力;
2、本发明解决当前没有使用大数据流计算技术的决策引擎系统处理能力低下,资源不易扩展、处理延迟严重等问题,大大提高了业务实时决策的能力;
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本发明的一些实施例,而非对本发明的限制。
图1为本发明基于FLINK流计算框架和RETE算法实现的大数据分布式实时决策示意图;
图2为本发明规则引擎工作原理示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图和实施例对本发明进一步说明。
如图1所示,
基于流计算和RETE算法的实时决策引擎实现方法,包括以下步骤:
1.在决策规则图形设计器中,通过鼠标拖拽图形控件来实现业务规则的图形化设计,然后通过点击保存按钮把图形化设计的业务规则按XML文件格式保存到规则文件数据库中;
所述决策规则图形设计器主要用于设计、保存、推送决策规则,用户可通过决策规则图形设计器设计业务规则,并把设计好的业务规则按XML格式保存到规则文件数据库中,并推送、提交规则文件到决策规则管理器中;
所述决策规则管理器主要用来发布、更新、导入、导出规则文件以及配置规则文件访问权限等功能;
所述规则文件数据库是使用基于Java Content Repository(JSR-170)标准的高性能文档数据库Apache Jackrabbit;
2.通过决策规则图形设计器的推送功能把存储在Apache Jackrabbit文档数据库中的XML规则文件提交到决策规则管理器中;
通过决策规则管理器统一管理已提交的规则文件,并根据业务需求来发布、更新、导入、导出规则文件,配置规则文件的访问权限等操作;
3.用户根据自己业务的实际需求,发送决策请求到决策引擎服务接口上,用户发送的决策请求中必须带有对应规则的编码;
4.决策引擎服务接口负责解析用户请求中的规则编码、校验用户访问权限,转发合法的用户请求和参数到RETE-FLINK规则编译器;
5.RETE-FLINK规则编译器根据决策引擎服务接口转发的用户请求参数中的对应规则编码,从决策规则管理器中取到相应的XML规则文件;解析这些XML规则文件从中获取用户定义的业务含义,生成RETE推理网络树,然后再把RETE推理网络树编译为基于Flink算子实现的JAVA代码,最后把编译好的基于Flink算子实现的JAVA代码提交到Flink流计算分布式环境中(FLINK流计算框架)去高效的执行;
6.RETE-FLINK规则编译器使用DOM4J组件解析XML规则文件,取到规则文件中定义的业务含义,并把这些业务含义映射到内存的JAVA对象中;
7.RETE-FLINK规则编译器根据RETE算法规范,把已经存储在内存中带有业务含义的JAVA对象再封装成符合RETE算法规范的JAVA对象,包括:
根节点Root Node;
对象类型节点Object Type Node;
连接节点Join Node;
条件节点Condition Node;
终点节点Terminal Node;
动作Action等数据结构,为生成RETE网络树做准备;
8.RETE-FLINK规则编译器构建RETE网络树:
规则文件中的语义是根据RETE算法中的节点类型定义的,根据某一个具体的规则定义读取此规则的引用类import、参数定义parameter、规则条件Object Type Node节点,condition以及如果满足条件需要执行的动作action。引用类对应规则条件节点ConditionNode,动作对应规则条件完全匹配后,Terminal Node所要执行的规则动作Action;RootNode是一个进入节点,对应规则文件中规则集元素;Join Node节点是在构建网络树时根据不同Object Type Node是否有关联条件来构建的。
根据以上描述的处理流程和原则,RETE-FLINK规则编译器从Root Node节点开始向下一直到Terminal Node节点,构建一个完整的规则RETE网络树。
9.RETE-FLINK规则编译器通过RETE网络树进行规则匹配,同步生成基于Flink 算子的JAVA代码:
RETE网络树构建完成后,RETE-FLINK规则编译器从工作存储器里取Fact事实集来与规则文件数据库进行匹配,匹配过程是Fact事实集对象沿着RETE网络树遍历的过程。在规则匹配过程中,RETE-FLINK规则编译器根据规则的RETE网络树、RETE算法规范、Flink框架规范来同步进行编译操作,生成相应的基于Flink算子的JAVA程序代码。
Flink框架包括了7类经典的JAVA程序算子,分别是:映射Map/Flat Map、过滤Filter、分区Key By、聚合Reduce/Aggregations、合并Union/Connect、拆分Split、标记Select。RETE-FLINK规则编译器使用这7类算子来表达规则执行过程中的各种场景和业务含义。
编译完成后的FLINK算子代码可以运行在FLINK环境中,这样就可以充分利用FLINK流计算框架的优势,极大提高了大数据量且业务规则复杂场景下决策处理的吞吐量、处理速度和系统的高可用性,从而提高了业务实时决策的能力。
10.RETE-FLINK规则编译器把编译好的用Flink算子实现的JAVA代码提交到Flink流计算框架执行环境中;
11.Flink流计算框架用Flink Stream Graph生成器将Flink算子实现的RETE算法的JAVA代码映射成Stream Graph计算逻辑流图,然后提交Stream Graph计算逻辑流图到Flink Job Graph生成器中;
12.Flink Job Graph生成器对Stream Grap计算逻辑流图优化处理后生成对应的Flink Job Graph任务图,然后再提交到Flink Job Manager中;其中主要的优化措施包括将Stream Grap计算逻辑流图中多个符合条件的节点链在一起合并为一个节点,这样可以有效的减少数据在节点之间流动所需要的对象序列化和反序列化操作以及对象在网络中传输的消耗;
Flink Job Manager:负责申请资源,协调以及控制整个job的执行过程,具体包括:调度任务、处理checkpoint、容错等。
13.Flink Job Manager向Flink ResourceManager资源管理器申请执行分布式任务必要的资源,该资源主要包括有Flink Task Manager和其上的任务运行插槽Task slot;
Flink Task Manager是运行在不同节点上的进程,负责接收并执行Flink JobManager发送的Task,并且与Flink Job Manager通信,反馈任务状态信息,Flink JobManager是任务主控制节点,Flink Task Manager是任务执行节点,用于执行具体的任务,每个Flink Task Manager包含一个或者多个Slot;
Slot是Flink Task Manager资源粒度划分的单元,Slot平均分配Flink TaskManager的内存。每个Slot可以运行多个Task。Slot的个数代表了Flink运行时的并行度。
Task是在操作算子的子任务进行链化之后形成的,具体Flink job中有多少任务与算子的并行度策略有关。
Flink Task Manager负责接收Flink Job Manager分配的RETE决策计算子任务,然后通过线程池来调度线程在自己的Task Slot任务槽中执行分配的计算子任务,然后将自己的计算结果返回给Flink Job Manager;
14.Flink Job Manager一旦从分布式运行环境中获取到被分配的资源,会根据实际获取到的资源将Job Graph任务图再进行优化处理后生成可并行运行的ExecutionGraph执行图,Execution Graph执行图是Job Graph任务图的并行化版本,是调度层最核心的数据结构,然后根据Execution Graph执行图开始调度计算子任务到Flink TaskManager集群资源和其上的任务运行插槽Task slot中进行分布式并行处理;
15.Flink Task Manager集群启动后,会向Flink Job Manager发送心跳包,并等待Flink Job Manager向其分配计算子任务,同时也向Flink Resource Manager进行TaskSlot运行插槽的注册;
16.Flink Task Manager一旦接收到Flink Job Manager分配的计算子任务后,Flink Task Manager通过线程池来调度线程在自己所管理的Task Slot任务槽中执行Flink Job Manager分配的计算子任务,Flink Task Manager上并行运行的计算子任务就形成了Flink流计算物理执行图,这些物理执行图用来完成实际的计算任务;
17.Flink Job Manager协调集群中所有Flink Task Manager进行计算子任务的分布式并行处理;
18.当Flink集群协同完成全部计算子任务,并取得决策规则的最终结果后,就会将该结果异步写入到KAFKA消息队列中;
19.用户可通过KAFKA消息队列异步获取到决策规则的最终结果,同时最终结果也会通过KAFKA异步保存到Mysql,Redis,Hbase等持久化系统中。
测试对比:
1、测试环境配置:
如表1、表2所示为基于RETE算法的普通决策引擎和本申请的测试环境系统配置,测试对比结果见表3所示;
表1基于RETE算法的普通决策引擎测试环境系统配置
表2基于Flink框架和RETE算法的实时决策引擎测试环境系统配置
表3基于RETE算法的普通决策引擎与本申请的测试结果对比
通过分析以上的测试结果,可以清楚地发现,在大数据量、高并发的场景中,基于Flink和RETE算法的实时决策引擎的TPS和处理耗时比基于RETE算法的普通决策引擎提高了大约30倍,表现十分优秀;
由以上测试结果可知,基于Flink和RETE算法的实时决策引擎极大地提高了决策处理的吞吐量和处理速度,从而大大提高了实时决策的能力,解决了现有普通决策引擎处理能力低下,吞吐量小,处理时间长,性能下降严重等问题。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (7)
1.基于流计算和RETE算法的实时决策引擎实现方法,其特征在于,包括以下步骤:
S1、通过决策规则图形设计器的推送功能把存储在规则文件数据库中的XML规则文件提交到决策规则管理器中;
S2、用户根据业务实际需求发送决策请求到决策引擎服务接口上,RETE-FLINK规则编译器根据决策引擎服务接口转发的用户请求参数中包含的规则编码,从决策规则管理器中获取相应的规则文件;
RETE-FLINK规则编译器解析规则文件,从中获取用户定义的业务含义,并把这些业务含义映射到内存的JAVA对象中;
S3、RETE-FLINK规则编译器根据RETE算法规范,把已经存储在内存中带有业务含义的JAVA对象再封装成符合RETE算法规范的JAVA对象,为生成RETE网络树做准备;
S4、RETE-FLINK规则编译器构建RETE网络树:
RETE-FLINK规则编译器根据规则文件中具体的规则定义读取此规则的引用类、参数定义、规则条件以及如果满足规则条件需要执行的动作,并将引用类、参数定义、规则条件以及动作与封装成符合RETE算法规范的JAVA对象中的数据结构进行匹配,RETE-FLINK规则编译器从封装成符合RETE算法规范的JAVA对象中的Root Node节点开始向下一直到TerminalNode节点,构建一个完整的规则RETE网络树;
S5、RETE-FLINK规则编译器通过RETE网络树进行规则匹配,同步生成基于Flink算子的JAVA代码:
RETE网络树构建完成后,RETE-FLINK规则编译器从工作存储器里取Fact事实集并与规则文件数据库进行匹配,匹配过程中,RETE-FLINK规则编译器根据相应规则的RETE网络树、RETE算法规范、Flink框架规范同步进行编译操作,生成相应的基于Flink算子的JAVA程序代码;
S6、RETE-FLINK规则编译器把编译好的基于Flink算子的JAVA代码提交到Flink流计算框架执行环境中,Flink流计算框架将编译好的基于Flink算子的JAVA代码映射成StreamGraph计算逻辑流图,然后提交Stream Graph计算逻辑流图到Flink Job Graph生成器中;
S7、Flink Job Graph生成器将Stream Grap计算逻辑流图生成对应的Job Graph任务图,然后再提交到Flink Job Manager中;
S8、 Flink Job Manager向FLINK ResourceManager资源管理器申请执行分布式任务必要的资源,该资源包括Flink Task Manager集群资源和其上的任务运行插槽Task slot;
Flink Job Manager根据实际获取到的资源将Job Graph任务图生成可并行运行的Execution Graph执行图,然后根据Execution Graph执行图调度计算子任务到Flink TaskManager集群资源和其上的任务运行插槽Task slot中进行分布式并行处理;
S9、Flink Job Manager协调资源集群中所有Flink Task Manager进行计算子任务的分布式并行处理,并取得最终的RETE规则计算结果,然后将最终RETE规则计算结果异步写入到KAFKA队列和数据持久化系统中,用户通过KAFKA消息队列异步获取到决策规则的最终结果。
2.根据权利要求1所述的基于流计算和RETE算法的实时决策引擎实现方法,其特征在于,步骤S2中,所述决策引擎服务接口用于解析用户请求参数,校验用户访问权限,然后再转发用户请求和参数到RETE-FLINK规则编译器上。
3.根据权利要求1所述的基于流计算和RETE算法的实时决策引擎实现方法,其特征在于,步骤S3中,所述规范的JAVA对象包括:
根节点Root Node、对象类型节点Object Type Node、连接节点Join Node、条件节点Condition Node、终点节点Terminal Node、动作Action。
4.根据权利要求1所述的基于流计算和RETE算法的实时决策引擎实现方法,其特征在于,步骤S4中,引用类、参数定义、规则条件以及动作与规范后的JAVA对象中的数据结构匹配方法为:
引用类对应对象类型节点Object Type Node;
规则条件对应条件节点Condition Node;
连接节点Join Node在构建网络树时,根据不同对象类型节点Object Type Node是否有关联条件构建;
动作对应规则条件完全匹配后,终点节点Terminal Node所要执行的规定动作Action。
5.根据权利要求1所述的基于流计算和RETE算法的实时决策引擎实现方法,其特征在于,步骤S5中,所述Flink框架包括7类JAVA程序算子,分别是:
映射Map与FlatMap;
过滤Filter;
分区KeyBy;
聚合Reduce与Aggregations;
合并Union与Connect;
拆分Split;
标记Select。
6.根据权利要求1所述的基于流计算和RETE算法的实时决策引擎实现方法,其特征在于,步骤S8中, Flink Task Manager的处理步骤为:
S81、Flink Task Manager集群启动后,向Flink Job Manager发送心跳包,并等待Flink Job Manager向其分配计算子任务,同时也向Flink Resource Manager进行TaskSlot运行插槽的注册;
S82、Flink Task Manager接收到Flink Job Manager分配的计算子任务后,FlinkTask Manager通过线程池来调度线程在自己所管理的Task Slot任务槽中执行Flink JobManager分配的计算子任务,Flink Task Manager上并行运行的计算子任务就形成了Flink流计算物理执行图,这些物理执行图用来完成实际的计算任务。
7.根据权利要求1所述的基于流计算和RETE算法的实时决策引擎实现方法,其特征在于,所述RETE-FLINK规则编译器为:
根据用户请求参数中的规则编码,从规则管理器中取到相应的规则文件,解析这些规则文件并从中获取用户定义的业务含义,生成RETE推理网络树,然后再把RETE推理网络树编译为基于Flink算子实现的JAVA代码,最后把编译好的Flink算子代码提交到Flink流计算分布式环境中执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311050400.9A CN116775041B (zh) | 2023-08-21 | 2023-08-21 | 基于流计算和rete算法的实时决策引擎实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311050400.9A CN116775041B (zh) | 2023-08-21 | 2023-08-21 | 基于流计算和rete算法的实时决策引擎实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116775041A CN116775041A (zh) | 2023-09-19 |
CN116775041B true CN116775041B (zh) | 2023-12-05 |
Family
ID=88008436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311050400.9A Active CN116775041B (zh) | 2023-08-21 | 2023-08-21 | 基于流计算和rete算法的实时决策引擎实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775041B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117370400B (zh) * | 2023-12-05 | 2024-02-13 | 民航成都信息技术有限公司 | 航空数据的加工聚合处理方法、装置、电子设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710215A (zh) * | 2018-12-25 | 2019-05-03 | 福建南威软件有限公司 | 分布式流计算的可视化流程处理引擎及其使用方法 |
CN112131014A (zh) * | 2020-09-02 | 2020-12-25 | 广州市双照电子科技有限公司 | 决策引擎系统及其业务处理方法 |
CN115129736A (zh) * | 2022-07-04 | 2022-09-30 | 东方合智数据科技(广东)有限责任公司 | 基于规则引擎的规则事件动态加载与更新方法及相关设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191768B2 (en) * | 2015-09-16 | 2019-01-29 | Salesforce.Com, Inc. | Providing strong ordering in multi-stage streaming processing |
-
2023
- 2023-08-21 CN CN202311050400.9A patent/CN116775041B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710215A (zh) * | 2018-12-25 | 2019-05-03 | 福建南威软件有限公司 | 分布式流计算的可视化流程处理引擎及其使用方法 |
CN112131014A (zh) * | 2020-09-02 | 2020-12-25 | 广州市双照电子科技有限公司 | 决策引擎系统及其业务处理方法 |
CN115129736A (zh) * | 2022-07-04 | 2022-09-30 | 东方合智数据科技(广东)有限责任公司 | 基于规则引擎的规则事件动态加载与更新方法及相关设备 |
Non-Patent Citations (2)
Title |
---|
Benchmarking Streaming Computation Engines: Storm, Flink and Spark Streaming;Sanket Chintapalli 等;《2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)》;第1789-1792页 * |
支持有状态规则的实时决策引擎的设计与实现;丁上峰;《中国优秀硕士学位论文全文数据库 信息科技辑》;I138-801 * |
Also Published As
Publication number | Publication date |
---|---|
CN116775041A (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108510082B (zh) | 对机器学习模型进行处理的方法及装置 | |
Ali et al. | From conceptual design to performance optimization of ETL workflows: current state of research and open problems | |
EP4028906B1 (en) | Techniques of heterogeneous hardware execution for sql analytic queries for high volume data processing | |
US8762964B2 (en) | Optimizing symbol manipulation language-based executable applications for distributed execution | |
CN106663010B (zh) | 执行基于图的程序规范 | |
CN107077364B (zh) | 基于特定数据端口连接的识别使用图组件的自动聚类的基于图的程序规范的编译 | |
Ogasawara et al. | Chiron: a parallel engine for algebraic scientific workflows | |
EP2831767B1 (en) | Method and system for processing data queries | |
US8239847B2 (en) | General distributed reduction for data parallel computing | |
US10515118B2 (en) | Processing a data flow graph of a hybrid flow | |
Bu et al. | Scaling datalog for machine learning on big data | |
US8046373B2 (en) | Structured parallel data intensive computing | |
CN116775041B (zh) | 基于流计算和rete算法的实时决策引擎实现方法 | |
Requeno et al. | Quantitative analysis of apache storm applications: the newsasset case study | |
Abualigah et al. | Advances in MapReduce big data processing: platform, tools, and algorithms | |
Xun et al. | HBPFP-DC: A parallel frequent itemset mining using Spark | |
Emoto et al. | Parallel tree reduction on MapReduce | |
Vijayalakshmi et al. | The survey on MapReduce | |
Rakadjiev et al. | Parallel SMT solving and concurrent symbolic execution | |
McSherry et al. | Composable incremental and iterative data-parallel computation with naiad | |
Alemi et al. | CCFinder: using Spark to find clustering coefficient in big graphs | |
CN107168795A (zh) | 基于cpu‑gpu异构复合式并行计算框架的密码子偏差系数模型方法 | |
CN116401728A (zh) | 面向电磁数据的可视化建模分析方法及平台 | |
CN113902567B (zh) | 执行任务的方法、装置和电子设备 | |
CN115982230A (zh) | 数据库的跨数据源查询方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |