一种流式文档解析的并行执行方法及系统技术方案

技术编号:27976613 阅读:21 留言:0更新日期:2021-04-06 14:11
本发明专利技术公开了一种流式文档解析的并行执行方法及系统,该方法包括以下步骤:S1、接收文档并开始流式解析业务;S2、采用预设方法创建工作线程组;S3、通过获取数据包,查找协程上下文,实现工作线程到指定协程的切换;S4、切换到指定协程后,对报文进行解析;S5、完成对报文的处理,采用预设规则实现指定协程到工作线程的切换;S6、文档处理结束,对指定协程进行释放。有益效果:本发明专利技术将协程技术引入到流式解析中,由于协程的切换会自动恢复函数的调用堆栈,所以不需要复杂的上下文切换。而协程的切换在用户态完成,可以非常高效。同时可以根据需要确定执行协程的线程数量,所以可以充分利用系统的多核cpu资源。

【技术实现步骤摘要】
一种流式文档解析的并行执行方法及系统
本专利技术涉及文档解析
,具体来说,涉及一种流式文档解析的并行执行方法及系统。
技术介绍
在网络安全技术中,流量还原是一项基本的技术手段。而为了快速、实时地发现网络流量中的攻击、入侵、泄密等行为,对网络流量中的文件采用流式解析就成为一种必要手段:即在仅采集到文档的部分内容时就开始对文档进行解析。流式文档解析虽然可以及时发现在网络中传输的文档内容,但也面临几方面的困难,其中一个困难就是:如何解决并发问题,网络中同时传输的文档可能在几百到几千个不等,而下一个来到报文属于哪个文档又是不确定的,如何简单、高效地处理这些文档,就成了一个必须面对的问题。目前,主流的解决方案有两种:1.多线程方式:为每个文档创建一个解析线程来处理,另外一个分发线程负责收取数据包,并将收到是数据包分发到正确的解析线程中。对于解析线程来说,只在一个文件的上下文中工作。这种方案的优点是实现简单,但缺点也很明显,占有资源多,不适合在大流量的网络环境。2.单线程方式:只有一个线程负责解析文档,该线程记录所有文档的上下文信息,当收到一个数据包时再找到对应的上下文,恢复上下文环境,再进行后续的处理。这种方式的有点是节约资源,但编程相对复杂,同时不能充分利用系统的资源。针对相关技术中的问题,目前尚未提出有效的解决方案。
技术实现思路
针对相关技术中的问题,本专利技术提出一种流式文档解析的并行执行方法及系统,以克服现有相关技术所存在的上述技术问题。为此,本专利技术采用的具体技术方案如下:根据本专利技术的一个方面,提供了一种流式文档解析的并行执行方法,该方法包括以下步骤:S1、接收文档并开始流式解析业务;S2、采用预设方法创建工作线程组;S3、通过获取数据包,查找协程上下文,实现工作线程到指定协程的切换;S4、切换到指定协程后,对报文进行解析;S5、完成对报文的处理,采用预设规则实现指定协程到工作线程的切换;S6、文档处理结束,对指定协程进行释放。进一步的,所述预设方法为根据包括但不限于硬件配置或网络流量的因素,完成对线程组的数量的配置。进一步的,所述通过获取数据包,查找协程上下文,完成工作线程到指定协程的切换还包括以下步骤:S31、主线程从网络设备上读取数据包,当获取到一个数据包后,根据一定规则,将数据包分发到指定的工作线程;S32、工作线程从自己的队列中获取数据包,并与文档内容进行对比,当文档内容已存在时,则根据连接的特性及文档的特征,对该文档的协程上下文进行查找处理,当接受的是新文档时,则利用系统创建一个新协程;S33、通过查找或创建找到指定协程,并切换进入该指定协程。进一步的,所述一定规则包括但不限于五元组规则、源IP地址及目的地址。进一步的,所述利用系统创建一个新协程还包括以下步骤:S321、为新协程分配堆栈资源;S322、创建新的协程上下文。进一步的,所述通过查找或创建找到指定协程,并切换进入该指定协程还包括以下步骤:S331、保存当前协程的上下文;S332、修改当前协程标识;S333、切换堆栈指针;S334、调用操作系统的swapcontext(交换上下文)函数进行用户上下文切换。进一步的,所述预设规则包括以下步骤:S51、当前的指定协程交出执行权;S52、切换出当前协程,回到进入指定协程前的状态;S53、等待下一次调度。进一步的,所述文档处理结束,对指定协程进行释放还包括以下步骤:S61、释放指定协程的资源;S62、将指定协程从协程列表中移除。进一步的,所述资源包括但不限于堆栈及上下文。根据本专利技术的另一方面,还提供了一种流式文档解析的并行执行系统,该系统包括:启动模块,用于接收文档并开始流式解析业务;工作线程组模块,用于采用预设方法创建工作线程组;协程切换模块,用于通过获取数据包,查找协程上下文,实现工作线程到指定协程的切换;报文解析模块,用于切换到指定协程后,对报文进行解析;工作线程切换模块,用于完成对报文的处理,采用预设规则实现指定协程到工作线程的切换;协程释放模块,用于文档处理结束,对指定协程进行释放。本专利技术的有益效果为:1、本专利技术将协程技术引入到流式解析中,协程是一种轻量级的、用户态的协作组件,允许执行、挂起与恢复,它比子例程更一般和灵活,比线程更轻量级。且由于协程的切换会自动恢复函数的调用堆栈,所以不需要复杂的上下文切换。而协程的切换在用户态完成,可以非常高效。同时可以根据需要确定执行协程的线程数量,所以可以充分利用系统的多核cpu资源。解决了流式文档解析过程中文档上下文切换问题,使得并发解析多个文档的过程,和独立解析一个文件类似,从而大大简化了多文档并行处理时编程的复杂度。2、本专利技术采用多线程与多协程的组合方式,既避免了单线程模式下资源利用率不高的问题,又避免了多线程模式下线程数量过多、线程切换开销过大的问题。3、由于协程的创建、切换、销毁,都是在用户态完成,不涉及耗时的系统调用,所以协程的数量可以达到数万级甚至更多,而不会带来额外的性能损耗。同时协程的这种切换,应用层是感知不到的,所以应用层看上去像独立处理一个文档时一样,没有复杂的上下文切换、恢复等操作,大大降低了编程的复杂度。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本专利技术实施例的一种流式文档解析的并行执行方法的流程图;图2是根据本专利技术实施例的一种流式文档解析的并行执行方法中协程流式文档解析结构示意图;图3是根据本专利技术实施例的一种流式文档解析的并行执行系统的系统框图。图中:1、启动模块;2、工作线程组模块;3、协程切换模块;4、报文解析模块;5、工作线程切换模块;6、协程释放模块。具体实施方式为进一步说明各实施例,本专利技术提供有附图,这些附图为本专利技术揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本专利技术的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。根据本专利技术的实施例,提供了一种流式文档解析的并行执行方法及系统。现结合附图和具体实施方式对本专利技术进一步说明,如图1-2所示,根据本专利技术实施例的流式文档解析的并行执行方法,该方法包括以下步骤:S1、接收文档并开始流式解析业务;S2、采用预设方法创建工作线程组;其中,这些线程组负责解析功能的真正执行本文档来自技高网...

【技术保护点】
1.一种流式文档解析的并行执行方法,其特征在于,该方法包括以下步骤:/nS1、接收文档并开始流式解析业务;/nS2、采用预设方法创建工作线程组;/nS3、通过获取数据包,查找协程上下文,实现工作线程到指定协程的切换;/nS4、切换到指定协程后,对报文进行解析;/nS5、完成对报文的处理,采用预设规则实现指定协程到工作线程的切换;/nS6、文档处理结束,对指定协程进行释放。/n

【技术特征摘要】
1.一种流式文档解析的并行执行方法,其特征在于,该方法包括以下步骤:
S1、接收文档并开始流式解析业务;
S2、采用预设方法创建工作线程组;
S3、通过获取数据包,查找协程上下文,实现工作线程到指定协程的切换;
S4、切换到指定协程后,对报文进行解析;
S5、完成对报文的处理,采用预设规则实现指定协程到工作线程的切换;
S6、文档处理结束,对指定协程进行释放。


2.根据权利要求1所述的一种流式文档解析的并行执行方法,其特征在于,所述预设方法为根据包括但不限于硬件配置或网络流量的因素,完成对线程组的数量的配置。


3.根据权利要求1所述的一种流式文档解析的并行执行方法,其特征在于,所述通过获取数据包,查找协程上下文,完成工作线程到指定协程的切换还包括以下步骤:
S31、主线程从网络设备上读取数据包,当获取到一个数据包后,根据一定规则,将数据包分发到指定的工作线程;
S32、工作线程从自己的队列中获取数据包,并与文档内容进行对比,当文档内容已存在时,则根据连接的特性及文档的特征,对该文档的协程上下文进行查找处理,当接受的是新文档时,则利用系统创建一个新协程;
S33、通过查找或创建找到指定协程,并切换进入该指定协程。


4.根据权利要求3所述的一种流式文档解析的并行执行方法,其特征在于,所述一定规则包括但不限于五元组规则、源IP地址及目的地址。


5.根据权利要求3所述的一种流式文档解析的并行执行方法,其特征在于,所述利用系统创建一个新协程还包括以下步骤:
S321、为新协程分配堆栈资源;
S322、创建新的协程上下文。<...

【专利技术属性】
技术研发人员:潘飚殷博袁春峰
申请(专利权)人:南京中孚信息技术有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1