一种分布式系统的表匹配处理方法及装置与流程

文档序号:18361036发布日期:2019-08-06 23:51阅读:141来源:国知局
一种分布式系统的表匹配处理方法及装置与流程

本发明实施例涉及计算机技术领域,具体涉及一种分布式系统的表匹配处理方法及装置。



背景技术:

现有表匹配算法一般采用逐行遍历算法实现,时间复杂度与行数成正比。当行数较小时,时间复杂度还可以容忍。当行数较大时,时间复杂度随之变大。特别是对于网络安全引擎模式匹配资源池的应用场景,每条原始数据均需执行表匹配算法,逐行遍历算法成为系统瓶颈。

因此,现有技术的逐行遍历表匹配算法较为耗时,无法满足分布式系统的实时性。



技术实现要素:

由于现有方法存在上述问题,本发明实施例提出一种分布式系统的表匹配处理方法及装置。

第一方面,本发明实施例提出一种分布式系统的表匹配处理方法,包括:

若判断获知分布式系统中预设的表匹配表达式为核心逻辑路径,则将所述表匹配表达式置于栈内当前的第一栈顶元素的孩子节点;

依次对所述表匹配表达式的各孩子表达式进行表达式匹配,并根据匹配结果设置键检测上下文;

若所述表匹配表达式匹配结束后,所述键检测上下文存在键值代码,则生成键行匹配器对所述分布式系统的表进行匹配。

第二方面,本发明实施例还提出一种分布式系统的表匹配处理装置,包括:

表达式判断模块,用于若判断获知分布式系统中预设的表匹配表达式为核心逻辑路径,则将所述表匹配表达式置于栈内当前的第一栈顶元素的孩子节点;

表达式匹配模块,用于依次对所述表匹配表达式的各孩子表达式进行表达式匹配,并根据匹配结果设置键检测上下文;

表匹配生成模块,用于若所述表匹配表达式匹配结束后,所述键检测上下文存在键值代码,则生成键行匹配器对所述分布式系统的表进行匹配。

第三方面,本发明实施例还提出一种电子设备,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述方法。

第四方面,本发明实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述方法。

由上述技术方案可知,本发明实施例通过判断表匹配表达式是否存在核心逻辑路径来选择最优的键行匹配器对分布式系统的表进行匹配,匹配了有效的动态数据,得到了准确的计算结果;同时去除了不必要的行匹配,降低了表匹配算法的时间复杂度,保障了分布式系统的正常运行。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1为本发明一实施例提供的一种分布式系统的表匹配处理方法的流程示意图;

图2为本发明另一实施例提供的一种分布式系统的表匹配处理方法的流程示意图;

图3为本发明一实施例提供的一种分布式系统的表匹配处理装置的结构示意图;

图4为本发明一实施例提供的电子设备的逻辑框图。

具体实施方式

下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

图1示出了本实施例提供的一种分布式系统的表匹配处理方法的流程示意图,包括:

s101、若判断获知分布式系统中预设的表匹配表达式为核心逻辑路径,则将所述表匹配表达式置于栈内当前的第一栈顶元素的孩子节点。

其中,所述表匹配表达式为用于配置匹配动态数据表的逻辑表达式,由若干个孩子表达式组成,表匹配表达式的结果为布尔类型,true表示符合表匹配表达式,false表示不符合表匹配表达式。其中,动态数据表中的数据通常指系统可配置的外部资源池,比如网络地址、端口、主机、网页链接等,动态数据表用于配置表匹配算法的数据源,会加载可配置的外部资源池表,并将外部资源池表缓存到内存,形成动态数据值。表匹配算法用于动态数据表相关的分布式任务的处理。

所述核心逻辑路径包括逻辑表达式和比较表达式两类,除此两类之外的表达式均不是核心逻辑路径。

所述栈用于存储表匹配表达式及其孩子表达式。由于栈的特殊存储结构,其栈顶元素是不断变化的,即每个新添加的元素将成为新的栈顶元素。

所述第一栈顶元素为上一次入栈的表达式。

s102、依次对所述表匹配表达式的各孩子表达式进行表达式匹配,并根据匹配结果设置键检测上下文。

具体地,由于表匹配表达式包括若干个孩子表达式,需要对各孩子表达式依次进行表达式匹配,每一个孩子表达式匹配后均生成一个匹配结果,若匹配结果符合要求,则设置键检测上下文。

其中,所述键检测上下文为本实施例中共享的参数,表示键(key)检测的结果。与之对应的为行(row)检测,即现有技术采用的逐行遍历表匹配算法中使用的检测技术。

s103、若所述表匹配表达式匹配结束后,所述键检测上下文存在键值代码,则生成键行匹配器对所述分布式系统的表进行匹配。

具体地,当表匹配表达式的任一孩子表达式满足表匹配表达式,则键检测上下文存在键值代码,而存在键值代码表示能够使用键行匹配器取代现有技术中的普通行匹配器,进行分布式系统的表匹配。

其中,所述键行匹配器采用基于键的表匹配模式算法进行表匹配的匹配器。

本实施例通过判断表匹配表达式是否存在核心逻辑路径来选择最优的键行匹配器对分布式系统的表进行匹配,匹配了有效的动态数据,得到了准确的计算结果;同时去除了不必要的行匹配,降低了表匹配算法的时间复杂度,保障了分布式系统的正常运行。

进一步地,在上述方法实施例的基础上,s102具体包括:

若所述表匹配表达式的第一孩子表达式为逻辑表达式,且行匹配器键选择器的当前状态为需要检测状态,则检测所述第一孩子表达式的左孩子节点和右孩子节点是否为核心逻辑路径,如果所述第一孩子表达式的左孩子节点和右孩子节点中一个或全部为核心逻辑路径,则将所述第一孩子表达式置于栈内当前的第二栈顶元素的孩子节点,并对所述第一孩子表达式的各孩子表达式进行表达式匹配。

若所述表匹配表达式的第二孩子表达式为比较表达式,且所述第二孩子表达式的左孩子节点和右孩子节点的节点类型不同,则对所述第二孩子表达式进行键比较表达式检测;所述节点类型包括行值函数节点或键值节点。

若进行所述键比较表达式检测时获知键值节点存在键值代码,则生成键比较表达式,根据所述键比较表达式为所述键检测上下文设置键值代码,并将行匹配器键选择器的状态设置为不需要检测状态。

其中,所述逻辑表达式和所述比较表达式均为核心逻辑路径,逻辑表达式为用逻辑运算符将关系表达式或逻辑量连接起来的有意义的表达式,所述比较表达式为检查常量值、属性值或方法结果是否等于、不等于、大于或小于另一个值的表达式。

所述行匹配器键选择器用于标识行匹配和键选择的具体情况,键检测上下文是所述行匹配器键选择器的其中一个标识参数。

所述行匹配器键选择器包括两个状态:需要检测状态和不需要检测状态。当所述行匹配器键选择器为需要检测状态时,才对执行本实施例提供的表匹配处理方法,即确认是否可以采用键行匹配器对所述分布式系统的表进行匹配;当所述行匹配器键选择器为不需要检测状态时,无需进行判断,直接采用普通行匹配器对所述分布式系统的表进行匹配。

需要说明的是,在本实施例执行过程中,当为所述键检测上下文设置键值代码后,需要将行匹配器键选择器的状态设置为不需要检测状态;当判断表匹配表达式为核心逻辑路径时,需要将行匹配器键选择器的状态设置为需要检测状态,及时更新行匹配器键选择器的状态,以便于后续准确确定分布式系统的表匹配可以选择的匹配器,即,在上述方法实施例的基础上,s101可以具体包括:

若判断获知分布式系统中预设的表匹配表达式为核心逻辑路径,则将所述表匹配表达式置于栈内当前的第一栈顶元素的孩子节点,并将行匹配器键选择器的当前状态为需要检测状态。

所述键比较表达式为基于键的比较表达式。

所述键值代码为表征表达式可以采用键行匹配器进行表匹配的代码。

所述第一孩子表达式为表匹配表达式的孩子表达式中为逻辑表达式的孩子表达式。

所述第二孩子表达式为表匹配表达式的孩子表达式中为比较表达式的孩子表达式。

具体地,如图2所示,配置完表匹配表达式配置参数动态数据表、表匹配表达式和表匹配收集测量,并判断表匹配表达式是否为核心逻辑路径后,将表匹配表达式入栈,表匹配表达式设置为栈顶元素的孩子节点,同时将行匹配器键选择器设置为需要检测,并递归访问表达式的孩子表达式;当孩子表达式为逻辑表达式时,若是“与”运算,且行匹配器键选择器为需要检测状态,孩子节点如果为核心逻辑路径,则此逻辑表达式入栈,其孩子节点设置为当前栈顶元素的孩子节点,然后递归访问该孩子节点的左右孩子节点;当孩子表达式为比较表达式时,只有“等于(==)”类型的“比较表达式”符合核心逻辑表达式要求,如果栈顶端的孩子节点包含此“比较表达式”,并且“比较表达式”的左右孩子节点其中一个为行值函数(获取动态数据行中某个字段的函数)节点,另一个为键值(获取源事件数据某个字段)节点,则需检测是否为键比较表达式;检测键比较表达式时,采用rowvalueastnode和keyvalueastnode初始化行匹配器键选择器的键检测上下文,然后访问键值节点得到键值代码,并判断键值节点是否包含与rowvalueastnode相同的行值函数,如果不包含则生成键比较表达式;生成键比较表达式时,访问rowvalueastnode,并将键检测上下文的键值设置为行值函数的参数,同时将键检测上下文的键值代码设置为键值代码,将行匹配器键选择器的状态设置为不需要检测状态。

本实施例提出的分布式系统中表匹配处理的方法,具有面向分布式、结果正确、时间复杂度低等优点,分为三部分:表匹配表达式配置、核心逻辑表达式判断、表匹配模式选择,其中表匹配表达式配置用于设置动态数据表、表匹配表达式及表匹配收集策略。

其中,表匹配收集策略用于配置符合表匹配表达式时,收集动态数据行的策略,可以配置为none、all、first和last。none表示不收集,all表示收集符号要求所有行,first表示收集符号要求的第一行,last表示收集符号要求的最后一行。

进一步地,在上述方法实施例的基础上,所述方法还包括:

s104、若所述表匹配表达式匹配结束后,所述键检测上下文不存在键值代码,则生成普通行匹配器对所述分布式系统的表进行匹配。

具体地,当表匹配表达式匹配结束后,键检测上下文不存在键值代码,则说明表匹配表达式及其孩子表达式均无法使用键行匹配器对所述分布式系统的表进行匹配,因此可以选择常规的普通行匹配器对所述分布式系统的表进行匹配。

本实施例提供的表匹配处理方法解决了逐行遍历表匹配算法较为耗时,无法满足分布式流式系统的实时性的问题,能够准确判断核心逻辑表达式,选择合适的表匹配模式算法,满足表匹配准确性的前提下,更快的得到表匹配结果,保证分布式流式系统的实时性。

图3示出了本实施例提供的一种分布式系统的表匹配处理装置的结构示意图,所述装置包括:表达式判断模301、表达式匹配模块302和表匹配生成模块303,其中:

所述表达式判断模301用于若判断获知分布式系统中预设的表匹配表达式为核心逻辑路径,则将所述表匹配表达式置于栈内当前的第一栈顶元素的孩子节点;

所述表达式匹配模块302用于依次对所述表匹配表达式的各孩子表达式进行表达式匹配,并根据匹配结果设置键检测上下文;

表匹配生成模块303用于若所述表匹配表达式匹配结束后,所述键检测上下文存在键值代码,则生成键行匹配器对所述分布式系统的表进行匹配。

具体地,所述表达式判断模301若判断获知分布式系统中预设的表匹配表达式为核心逻辑路径,则将所述表匹配表达式置于栈内当前的第一栈顶元素的孩子节点;所述表达式匹配模块302依次对所述表匹配表达式的各孩子表达式进行表达式匹配,并根据匹配结果设置键检测上下文;所述表匹配生成模块303若所述表匹配表达式匹配结束后,所述键检测上下文存在键值代码,则生成键行匹配器对所述分布式系统的表进行匹配。

本实施例通过判断表匹配表达式是否存在核心逻辑路径来选择最优的键行匹配器对分布式系统的表进行匹配,匹配了有效的动态数据,得到了准确的计算结果;同时去除了不必要的行匹配,降低了表匹配算法的时间复杂度,保障了分布式系统的正常运行。

进一步地,在上述装置实施例的基础上,所述表达式匹配模块302具体用于若所述表匹配表达式的第一孩子表达式为逻辑表达式,且行匹配器键选择器的当前状态为需要检测状态,则检测所述第一孩子表达式的左孩子节点和右孩子节点是否为核心逻辑路径,如果所述第一孩子表达式的左孩子节点和右孩子节点中一个或全部为为核心逻辑路径,则将所述第一孩子表达式置于栈内当前的第二栈顶元素的孩子节点,并对所述第一孩子表达式的各孩子表达式进行表达式匹配。

进一步地,在上述装置实施例的基础上,所述表达式匹配模块302具体用于:

若所述表匹配表达式的第二孩子表达式为比较表达式,且所述第二孩子表达式的左孩子节点和右孩子节点的节点类型不同,则对所述第二孩子表达式进行键比较表达式检测;所述节点类型包括行值函数节点或键值节点;

若进行所述键比较表达式检测时获知键值节点存在键值代码,则生成键比较表达式,根据所述键比较表达式为所述键检测上下文设置键值代码,并将行匹配器键选择器的状态设置为不需要检测状态。

进一步地,在上述装置实施例的基础上,所述表达式判断模块301具体用于若判断获知分布式系统中预设的表匹配表达式为核心逻辑路径,则将所述表匹配表达式置于栈内当前的第一栈顶元素的孩子节点,并将行匹配器键选择器的当前状态为需要检测状态。

进一步地,在上述装置实施例的基础上,所述装置还包括:

表匹配模块,用于若所述表匹配表达式匹配结束后,所述键检测上下文不存在键值代码,则生成普通行匹配器对所述分布式系统的表进行匹配。

本实施例所述的分布式系统的表匹配处理装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。

参照图4,所述电子设备,包括:处理器(processor)401、存储器(memory)402和总线403;

其中,

所述处理器401和存储器402通过所述总线403完成相互间的通信;

所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1