一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在分布式流数据处理引擎实现复杂事件处理的方法及系统与流程

2022-04-25 02:47:44 来源:中国专利 TAG:


1.本发明涉及分布式计算技术领域,特别是涉及一种在分布式流数据处理引擎实现复杂事件处理的方法及系统。


背景技术:

2.随着政企信息化的进一步深入,各行各业持续产生具有隐性价值的海量数据,比如证券市场的交易数据,电力行业的探测数据等。用关系型数据库处理这些实时数据,已经力不从心了。更重要的是,业务与决策人员需要从这些数据里面及时发现、处理一些有意义的信息模式,比如证券市场交易中具有高度违规嫌疑的反常操作,需要进一步跟踪观察,进而进行人工干预。诸如此类需求,若用传统的数据处理方式去解决,比如将所有的数据导入到关系数据库中后,随后用分析工具统一分析处理,虽然也能得到部分有意义的数据,但是无法满足实时性的需求,导致出现不必要的损失。
3.由于cep是一种在事件序列中发现特定事件模式的方法。事件指在业务里发生的事情,包括业务活动、流程状态、网络条件等。很多事件只要能够识别出来就可以进行处理,通常会伴随着警报发送等动作。当无法可靠地通过处理单个事件来发现异常而必须在上下文里分析时,就会使用到cep。几乎所有场景里,cep分析都要求事件能够实时关联,并且要求带有准确时间戳的一定格式。cep是流式处理的典型应用之一,应用场景包括金融服务,自动货物管理,点击流分析,电子健康系统等需要识别,理解并快速响应的领域。基于分布式流数据处理引擎实现的cep天然继承了引擎的高吞吐、低延迟等优点,能够满足大部分实际场景的需要。因此,本发明提出了一种利用现有的分布式流数据处理引擎实现cep的技术。


技术实现要素:

4.鉴于以上所述现有技术的缺点,本发明的目的在于提供一种在分布式流数据处理引擎实现复杂事件处理的方法及系统,用于解决现有技术中存在的问题。
5.为实现上述目的及其他相关目的,本发明提供一种在分布式流数据处理引擎实现复杂事件处理的系统,所述系统包括分布式流数据处理引擎,所述分布式流数据处理引擎中嵌入有cep模块和cep算子;所述cep模块包括有:事件模式定义子模块、nfa子模块、事件模式处理子模块;
6.所述事件模式定义子模块,用于定义需要匹配的事件序列模式,以及定义匹配成功的事件序列的处理逻辑;
7.所述事件模式处理子模块,
8.所述nfa子模块,用于接收事件序列,并根据事件本身信息以及当前状态信息更新状态和匹配信息;
9.所述cep算子,用于处理不同时间语义下的事件序列,并将语义正确的事件序列发送给独立的nfa模块去处理。
10.可选地,所述nfa子模块包括共享缓冲区构件、nfa编译器构件、匹配后策略构件和nfa构件;
11.所述共享缓冲区构件用于存储事件序列匹配过程中的状态信息;所述状态信息至少包括两个关键数据结构,其中一个关键数据结构为事件集合,另一个关键数据结构为缓冲区节点集合;所述事件集合用于保存事件编号与真实事件的映射关系,所述缓冲区节点集合用于保存缓冲区节点编号与具体节点信息的映射关系;
12.所述nfa编译器构件用于将匹配的事件模式编译成初始状态的nfa;
13.所述匹配后策略构件用于过滤匹配过程中出现的特定重复匹配序列;
14.所述nfa构件用于接收事件序列,并根据事件本身信息以及当前状态信息更新状态和匹配信息;并在出现新的匹配时,根据所述匹配后策略确定是否保留所述新的匹配。
15.可选地,所述cep算子处理不同时间语义下的事件序列的过程包括:
16.根据指定的时间语义对事件进行判断,确定所述事件为实际处理时间还是事件发生时间;
17.如果是实际处理时间,则继续判断是否需要在相同时间戳的事件中按特定顺序进行处理;并在不需要处理时,更新时间信息,以及将所述事件直接交给nfa子模块进行处理,并记录更新后的nfa状态;否则,在需要处理时,缓存该事件,直到实际处理时间增加后,统一处理对应时间戳下所有缓存的事件;
18.如果是事件发生时间,则继续判断事件中包含的实际发生时间是否超过当前程序处理的最小事件时间;如果没有超过,则缓存该事件,直到实际处理时间增加后,统一处理对应时间戳下所有缓存的事件;如果超过,则判定所述事件为迟到事件,并进行对应处理。
19.可选地,所述cep算子在实际处理时间增加后,统一处理对应时间戳下所有缓存的事件的过程包括:
20.当实际处理时间或者处理的最小事件时间增加时,将前一个单位时间戳的所有事件取出;
21.对取出的所有事件按照预设规则进行排序,并将排序后的时间依次交给nfa子模块处理;
22.更新时间信息,并记录更新后的nfa子模块状态。
23.可选地,所述cep算子包括一个或多个cep分区,且每个cep分区包括一个或多个键,每个键用于映射当前接收到的所有事件、当前nfa状态以及当前匹配到的所有部分事件序列。
24.可选地,所述系统还包括有输入模块,用于获取cep业务的原始事件信息来源。
25.本发明还提供一种在分布式流数据处理引擎实现复杂事件处理的方法,所述方法包括以下步骤:
26.获取预先定义的需要匹配的事件序列模式以及数据处理逻辑,所述数据处理逻辑至少包括:对匹配成功的事件序列的处理逻辑;
27.将cep算子嵌入至所述数据处理逻辑中,并对分布式流数据处理引擎下发执行指令;
28.获取进入cep算子中的事件,并按照取键逻辑将所述时间分配至分区中某个键对应的事件队列中;其中,所述cep算子包括一个或多个cep分区,且每个cep分区包括一个或
多个键;
29.判断所述事件中的时间概念是实际处理时间还是事件发生时间,并根据判断结果进行对应的事件处理。
30.可选地,所述判断所述事件中的时间概念是实际处理时间还是事件发生时间,并根据判断结果进行对应的事件处理的过程包括:
31.根据指定的时间语义对事件进行判断,确定所述事件为实际处理时间还是事件发生时间;
32.如果是实际处理时间,则继续判断是否需要在相同时间戳的事件中按特定顺序进行处理;并在不需要处理时,更新时间信息,以及将所述事件直接交给nfa进行处理,并记录更新后的nfa状态;否则,在需要处理时,缓存该事件,直到实际处理时间增加后,统一处理对应时间戳下所有缓存的事件;
33.如果是事件发生时间,则继续判断事件中包含的实际发生时间是否超过当前程序处理的最小事件时间;如果没有超过,则缓存该事件,直到实际处理时间增加后,统一处理对应时间戳下所有缓存的事件;如果超过,则判定所述事件为迟到事件,并进行对应处理。
34.可选地,在实际处理时间增加后,统一处理对应时间戳下所有缓存的事件的过程包括:
35.当实际处理时间或者处理的最小事件时间增加时,将前一个单位时间戳的所有事件取出;
36.对取出的所有事件按照预设规则进行排序,并将排序后的时间依次交给nfa处理;
37.更新时间信息,并记录更新后的nfa状态。
38.可选地,将所述事件直接交给nfa进行处理,并记录更新后的nfa状态的过程包括:
39.获取正在匹配的事件序列和需要处理的事件;
40.根据正在匹配的事件序列所对应的匹配状态图,并根据所述匹配状态图枚举消费所述需要处理的事件后,能够到达的新的匹配状态图的状态;
41.其中,枚举消费所述需要处理的事件后,能够到达的新的匹配状态图的状态的方式包括:枚举对应事件会引起的所有转换动作;所有转换动作至少包括:忽略动作和接收动作。
42.如上所述,本发明提供一种在分布式流数据处理引擎实现复杂事件处理的方法及系统,具有以下有益效果:
43.本发明首先获取预先定义的需要匹配的事件序列模式以及数据处理逻辑,再将cep算子嵌入至所述数据处理逻辑中,并对分布式流数据处理引擎下发执行指令;获取进入cep算子中的事件,并按照取键逻辑将所述时间分配至分区中某个键对应的事件队列中;最后判断所述事件中的时间概念是实际处理时间还是事件发生时间,并根据判断结果进行对应的事件处理。本发明提供一种有效的用于在现有的分布式流数据处理引擎上实现cep的方案,该方案在实现了一个功能完善的cep模块的同时,还将其与现有的分布式流数据处理引擎加以融合,使其完美继承处理引擎的诸多优良特性,能够在大规模的数据量下水平拓展。本发明采用cep模块的基本功能与流数据处理引擎相互独立的架构思想,使得cep模块与流数据处理引擎都能够单独进行测试调优,易维护性能够得到很好的保证。对于一个具体的cep业务来说,用户可根据业务需要选择将事件发送至同一个partition(分区)或不同
的partition处理,不仅方便在本地进行功能调试,而且适合在实际生产环境进行部署,从而在用户角度上体现了本发明较好的易用性。此外,本发明可以使用户在现有的分布式流数据处理引擎的基础上,增加机制完整的cep功能。相对于单独的cep模块,本发明在分布式流数据处理引擎的基础上实现的cep功能可以完美继承引擎的分布式处理优势,由单机处理水平拓展为集群工作,同时cep算子可继续分解为两层功能子单元,能够较好地解决数据倾斜的问题。
附图说明
44.图1为一实施例提供的在分布式流数据处理引擎实现复杂事件处理的系统的硬件结构示意图;
45.图2为一实施例提供的在分布式流数据处理引擎实现复杂事件处理的方法的流程示意图。
具体实施方式
46.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
47.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
48.在共享缓冲区中,一个事件集合为一张事件编号与真实事件的映射表,一个节点集合为一张节点编号与缓冲区节点的映射表;除此之外,还包含一张时间戳与某个时间戳到来的所有事件数量的映射表,一个事件集合的缓存以及一个节点集合的缓存,后两者用来提高计算的吞吐量。该共享缓冲区包含多种可供调用的方法。当系统时间前进一个单位,则会令时间戳映射表清空当前系统时间之前的所有事件计数。当系统发现一个新的事件,则需要在共享缓冲区中注册该事件,将时间戳映射表该事件所在的时间戳对应的计数值增加一,并在事件结合缓存区中加入该事件。当系统需要将一个节点件添加到节点集合中,则需要首先创建或获取一个节点,然后将该节点与消费该事件之前的状态节点建立联系,再将该节点加入到集合中。
49.本发明提供一种在分布式流数据处理引擎实现复杂事件处理的系统,所述系统包括分布式流数据处理引擎,所述分布式流数据处理引擎中嵌入有cep模块和cep算子;所述cep模块包括有:事件模式定义子模块、nfa子模块、事件模式处理子模块;
50.所述事件模式定义子模块,用于定义需要匹配的事件序列模式,以及定义匹配成功的事件序列的处理逻辑;
51.所述事件模式处理子模块,
52.所述nfa子模块,用于接收事件序列,并根据事件本身信息以及当前状态信息更新
状态和匹配信息;
53.所述cep算子,用于处理不同时间语义下的事件序列,并将语义正确的事件序列发送给独立的nfa模块去处理。其中,所述cep算子包括一个或多个cep分区,且每个cep分区包括一个或多个键,每个键用于映射当前接收到的所有事件、当前nfa状态以及当前匹配到的所有部分事件序列。
54.根据上述记载,在一示例性实施例中,本实施例中的nfa子模块包括共享缓冲区构件、nfa编译器构件、匹配后策略构件和nfa构件;
55.所述共享缓冲区构件用于存储事件序列匹配过程中的状态信息;所述状态信息至少包括两个关键数据结构,其中一个关键数据结构为事件集合,另一个关键数据结构为缓冲区节点集合;所述事件集合用于保存事件编号与真实事件的映射关系,所述缓冲区节点集合用于保存缓冲区节点编号与具体节点信息的映射关系;
56.所述nfa编译器构件用于将匹配的事件模式编译成初始状态的nfa;
57.所述匹配后策略构件用于过滤匹配过程中出现的特定重复匹配序列;
58.所述nfa构件用于接收事件序列,并根据事件本身信息以及当前状态信息更新状态和匹配信息;并在出现新的匹配时,根据所述匹配后策略确定是否保留所述新的匹配。
59.根据上述记载,在一示例性实施例中,所述cep算子处理不同时间语义下的事件序列的过程包括:
60.根据指定的时间语义对事件进行判断,确定所述事件为实际处理时间还是事件发生时间;
61.如果是实际处理时间,则继续判断是否需要在相同时间戳的事件中按特定顺序进行处理;并在不需要处理时,更新时间信息,以及将所述事件直接交给nfa子模块进行处理,并记录更新后的nfa状态;否则,在需要处理时,缓存该事件,直到实际处理时间增加后,统一处理对应时间戳下所有缓存的事件;
62.如果是事件发生时间,则继续判断事件中包含的实际发生时间是否超过当前程序处理的最小事件时间;如果没有超过,则缓存该事件,直到实际处理时间增加后,统一处理对应时间戳下所有缓存的事件;如果超过,则判定所述事件为迟到事件,并进行对应处理。
63.具体地,所述cep算子在实际处理时间增加后,统一处理对应时间戳下所有缓存的事件的过程包括:
64.当实际处理时间或者处理的最小事件时间增加时,将前一个单位时间戳的所有事件取出;
65.对取出的所有事件按照预设规则进行排序,并将排序后的时间依次交给nfa子模块处理;
66.更新时间信息,并记录更新后的nfa子模块状态。
67.在一示例性实施例中,所述系统还包括有输入模块,用于获取cep业务的原始事件信息来源。
68.在一具体实施例中,该实施例也提供了一种在现有的分布式流数据处理引擎上逐步实现cep功能的系统,包括有:cep模块和cep算子。所述cep模块具体包括:事件模式定义子模块,nfa(非确定性有限状态自动机)子模块,事件模式处理子模块;为分布式流数据处理引擎增加相适应的cep算子,按照事件是否区分时间概念分为两种处理模式,区分时间概
念的处理模式又根据按实际处理时间和按事件发生时间两种情况分别加以考虑;将以上两者嵌入到分布式流数据处理引擎中,并通过定义合适的事件流模式对某一或某些事件序列进行检测,并对匹配的事件进行相应的处理。
69.具体地,本实施例中的nfa子模块包括共享缓冲区,nfa编译器,匹配后策略以及nfa本身等多项构件,其中:
70.所述共享缓冲区构件用于存储事件序列匹配过程中的状态信息,其中包括两个关键数据结构,分别为事件集合和缓冲区节点集合,前者用来保存事件编号与真实事件的映射关系,后者用来保存缓冲区节点编号与具体节点信息的映射关系;
71.所述nfa编译器构件用于将用户指定的用于匹配的事件模式编译成初始状态的nfa;
72.所述匹配后策略构件用于过滤匹配过程中出现的特定重复匹配序列;
73.所述nfa构件用于接收事件序列并根据事件本身信息以及当前状态信息发生状态更新同时更新匹配信息,若有新的匹配出现,则根据匹配后策略选择是否保留该匹配。
74.根据上述记载,本实施例中的cep算子用来处理不同时间语义下的事件序列,并将语义正确的事件序列发送给独立的nfa模块去处理,包括以下步骤:
75.i)根据用户指定的时间语义判断,如果是实际处理时间,则继续判断是否需要在相同时间戳的事件中按特定顺序进行处理,如果不需要,则更新时间信息,并将该事件直接交给nfa处理,并记录更新后的nfa状态;否则,需要缓存该事件,直到系统中的实际处理时间增加再统一处理该时间戳下所有缓存的事件,具体见iii)。如果是事件发生时间,则跳转至ii);
76.ii)首先判断事件中包含的实际发生时间是否超过当前程序处理的最小事件时间,如果没有,则需要缓存该事件,直到系统中处理的最小事件时间增加再统一处理该时间戳下所有缓存的事件,具体见iii),否则,需要宣布该事件为迟到事件,并进行相应的处理;
77.iii)当系统中的实际处理时间或者处理的最小事件时间增加时,首先需要将之前一个单位时间戳的所有事件取出,如果需要按照一定规则排序,则进行全局排序,并依次交给nfa处理,否则直接按照事件到来顺序交给nfa处理。接着更新时间信息,并记录更新后的nfa状态。
78.根据上述记载,本实施例中系统还可以具有以下特点:对于需要区分不同键的cep业务,可将一个cep算子分解为多个cep partition(分区),同时每个cep partition持有多个键,每个键映射该键当前接收到的所有事件、该键当前的nfa状态以及该键当前所有匹配到的部分事件序列。如此,可以将大规模的cep业务水平分布到多台计算机上,同一台机器可以包含一个或多个cep partition,同一个partition可以包含一个或多个键,不同键包含的事件数量可多可少,能够根据实际的业务情况进行合理的负载均衡。
79.由上可知,本实施例使得用户可以在现有的分布式流数据处理引擎的基础上,增加机制完整的cep功能。进一步地,相对于单独的cep模块,在分布式流数据处理引擎的基础上实现的cep功能可以完美继承引擎的分布式处理优势,由单机处理水平拓展为集群工作,同时cep算子可继续分解为两层功能子单元,能够较好地解决数据倾斜的问题。
80.在另一示例性实施例中,如图1所示,本实施例的cep框架图包括以下相关模块:输入模块,流数据引擎其他算子模块,cep算子模块,nfa模块。其中,输入模块为cep业务的原
始事件信息来源,流数据引擎其他算子模块为cep的预处理和后处理阶段,cep算子模块为实际调用cep功能的模块,nfa模块为cep功能执行的依赖核心。
81.综上所述,本系统提供一种有效的用于在现有的分布式流数据处理引擎上实现cep的方案,该方案在实现了一个功能完善的cep模块的同时,还将其与现有的分布式流数据处理引擎加以融合,使其完美继承处理引擎的诸多优良特性,能够在大规模的数据量下水平拓展。本系统采用cep模块的基本功能与流数据处理引擎相互独立的架构思想,使得cep模块与流数据处理引擎都能够单独进行测试调优,易维护性能够得到很好的保证。对于一个具体的cep业务来说,用户可根据业务需要选择将事件发送至同一个partition(分区)或不同的partition处理,不仅方便在本地进行功能调试,而且适合在实际生产环境进行部署,从而在用户角度上体现了本系统较好的易用性。
82.本发明还提供一种在分布式流数据处理引擎实现复杂事件处理的方法,所述方法包括以下步骤:
83.获取预先定义的需要匹配的事件序列模式以及数据处理逻辑,所述数据处理逻辑至少包括:对匹配成功的事件序列的处理逻辑;
84.将cep算子嵌入至所述数据处理逻辑中,并对分布式流数据处理引擎下发执行指令;
85.获取进入cep算子中的事件,并按照取键逻辑将所述时间分配至分区中某个键对应的事件队列中;其中,所述cep算子包括一个或多个cep分区,且每个cep分区包括一个或多个键;
86.判断所述事件中的时间概念是实际处理时间还是事件发生时间,并根据判断结果进行对应的事件处理。
87.根据上述记载,在一示例性实施例中,所述判断所述事件中的时间概念是实际处理时间还是事件发生时间,并根据判断结果进行对应的事件处理的过程包括:
88.根据指定的时间语义对事件进行判断,确定所述事件为实际处理时间还是事件发生时间;
89.如果是实际处理时间,则继续判断是否需要在相同时间戳的事件中按特定顺序进行处理;并在不需要处理时,更新时间信息,以及将所述事件直接交给nfa进行处理,并记录更新后的nfa状态;否则,在需要处理时,缓存该事件,直到实际处理时间增加后,统一处理对应时间戳下所有缓存的事件;
90.如果是事件发生时间,则继续判断事件中包含的实际发生时间是否超过当前程序处理的最小事件时间;如果没有超过,则缓存该事件,直到实际处理时间增加后,统一处理对应时间戳下所有缓存的事件;如果超过,则判定所述事件为迟到事件,并进行对应处理。
91.根据上述记载,具体地,在实际处理时间增加后,统一处理对应时间戳下所有缓存的事件的过程包括:
92.当实际处理时间或者处理的最小事件时间增加时,将前一个单位时间戳的所有事件取出;
93.对取出的所有事件按照预设规则进行排序,并将排序后的时间依次交给nfa处理;
94.更新时间信息,并记录更新后的nfa状态。
95.具体地,将所述事件直接交给nfa进行处理,并记录更新后的nfa状态的过程包括:
96.获取正在匹配的事件序列和需要处理的事件;
97.根据正在匹配的事件序列所对应的匹配状态图,并根据所述匹配状态图枚举消费所述需要处理的事件后,能够到达的新的匹配状态图的状态;
98.其中,枚举消费所述需要处理的事件后,能够到达的新的匹配状态图的状态的方式包括:枚举对应事件会引起的所有转换动作;所有转换动作至少包括:忽略动作和接收动作。
99.如图2所示,在一具体实施例中,还提供一种在分布式流数据处理引擎实现复杂事件处理的方法,所述方法包括以下步骤:
100.步骤110,用户对需要匹配的事件序列模式进行自定义,需要声明包括开始阶段的过滤条件,多个中间阶段的过滤条件以及各个阶段之间的连接条件等诸多条件;
101.步骤120,用户还需要自定义对匹配成功的事件序列的处理逻辑,比如输出到控制台中或者发出报警信息等;
102.步骤130,用户定义其他数据处理逻辑,将cep算子放置于其中一环,并对数据处理引擎下达执行指令;
103.步骤140,对于某一个进入cep算子中的事件,首先按照取键逻辑将其分配于某个partition中的某个键对应的事件队列中;
104.步骤150,判断系统中的时间概念是实际处理时间还是事件发生时间,如果是前者,跳转至步骤151;否则,跳转至步骤160;
105.步骤151,继续判断是否需要在相同时间戳的事件中按特定顺序进行处理,如果不需要,则跳转至步骤152;否则,跳转至步骤153;
106.步骤152,更新时间信息,并将该事件直接交给nfa模块处理,跳转至步骤180,并记录更新后的nfa状态;
107.步骤153,缓存该事件,直到系统中的实际处理时间增加再统一处理该时间戳下所有缓存的事件,跳转至步骤170;
108.步骤160,首先判断事件中包含的实际发生时间是否超过当前程序处理的最小事件时间,如果没有,跳转至步骤161;否则,跳转至步骤162;
109.步骤161,缓存该事件,直到系统中处理的最小事件时间增加再统一处理该时间戳下所有缓存的事件,跳转至步骤170;
110.步骤162,宣布该事件为迟到事件,若有需要则进行相应的处理;
111.步骤170,当系统中的实际处理时间或者处理的最小事件时间增加时,首先需要将之前一个单位时间戳的所有事件取出,如果需要按照一定规则排序,则跳转至步骤171;否则跳转至步骤180,完成后需要更新时间信息,并记录更新后的nfa状态;
112.步骤171,对该时间戳下的事件进行全局排序,并依次交给nfa模块处理,并跳转至步骤180;
113.步骤180,将该事件尝试放入当前nfa记录到的所有正在匹配的事件序列中并进行匹配状态更新,具体过程见步骤190,之后判断是否有新的完整匹配序列出现,再根据匹配后策略决定是否保留这些新完整匹配序列,若保留,则继续进行后续处理,否则直接舍弃;
114.步骤190,对于某一个正在匹配的事件序列和某一个需要处理的事件,根据该匹配事件序列对应的匹配状态图为该事件枚举消费该事件后可能到达的新的匹配状态图的状
态,方式是枚举该事件可能引起的所有转换动作,根据转换动作的类型区分包括以下两种情况:
115.i)忽略动作,又根据匹配状态分为三种子情况。第一种情况下,当前匹配状态为开始状态,则不作任何操作;第二种情况下,若下一个匹配状态与当前状态相同,则增加当前节点的版本号;第三种情况下,跳过该匹配状态,进入下一个匹配状态,则更新当前节点的版本号并增加新的状态列;
116.ii)接受动作,则首先需要为共享缓冲区添加新的节点,该节点的版本号为当前匹配状态的版本号;其次添加新的状态列,该状态列的版本号的增量为该事件引起的接受动作的数量和;最后,如果下一个匹配状态可直接跳过至结束状态,则需要将其取出,作为完整的匹配事件序列集合返回给用户。
117.本发明提供一种在分布式流数据处理引擎实现复杂事件处理的方法,首先获取预先定义的需要匹配的事件序列模式以及数据处理逻辑,再将cep算子嵌入至所述数据处理逻辑中,并对分布式流数据处理引擎下发执行指令;获取进入cep算子中的事件,并按照取键逻辑将所述时间分配至分区中某个键对应的事件队列中;最后判断所述事件中的时间概念是实际处理时间还是事件发生时间,并根据判断结果进行对应的事件处理。本发明提供一种有效的用于在现有的分布式流数据处理引擎上实现cep的方案,该方案在实现了一个功能完善的cep模块的同时,还将其与现有的分布式流数据处理引擎加以融合,使其完美继承处理引擎的诸多优良特性,能够在大规模的数据量下水平拓展。本发明采用cep模块的基本功能与流数据处理引擎相互独立的架构思想,使得cep模块与流数据处理引擎都能够单独进行测试调优,易维护性能够得到很好的保证。对于一个具体的cep业务来说,用户可根据业务需要选择将事件发送至同一个partition(分区)或不同的partition处理,不仅方便在本地进行功能调试,而且适合在实际生产环境进行部署,从而在用户角度上体现了本发明较好的易用性。此外,本发明可以使用户在现有的分布式流数据处理引擎的基础上,增加机制完整的cep功能。相对于单独的cep模块,本发明在分布式流数据处理引擎的基础上实现的cep功能可以完美继承引擎的分布式处理优势,由单机处理水平拓展为集群工作,同时cep算子可继续分解为两层功能子单元,能够较好地解决数据倾斜的问题。
118.上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献