【技术实现步骤摘要】
本专利技术实施例涉及计算机网络技术,尤其涉及一种数据处理方法和装置。
技术介绍
随着计算机网络技术的发展,多核多线程并发处理技术也得到的了迅速发展。在多核多线程并发处理的环境中,各线程在处理报文之前,需要读写报文所在业务流数据流的中间状态数据,如果同一业务流数据流的不同报文被多个线程同时处理,则会出现多个线程同时读写同一业务流数据流的中间状态数据的情形,而由于一个业务流数据流的中间状态数据同一时刻只能由同一线程读写,因此,存在资源竞争的问题,不同进程同一时刻处理同流报文则会存在冲突。为了避免冲突,现有技术中,根据报文的五元组信息计算哈希值,按业务处理线程数对哈希值进行求模运算,运算结果对应逻辑线程标识(Identity,以下简称:ID),从而产生了流到线程的映射关系,最后根据映射关系,将一条流的报文分发到固定的线程处理,这样对于一条流的数据是保证单线程处理,从而避免并发冲突。然而,由于报文分发的不均匀性,采用现有技术的方案,会出现在一段时间内,某些线程比较繁忙,而某些线程比较空闲的情况,从而导致多业务并发执行的性能以及网络设备的处理器的资源利用率均不高。
技术实现思路
本专利技术实施例提供一种数据处理方法和装置,以增加多业务并发执行的性能,提高网络设备的处理器的资源利用率。本专利技术实施例第一方面,提供一种数据处理方法,包括:在对待处理报文进行业务处理之前,检测所述待处理报文所在数据流中是否存在正在被处理的报文;若所述待处理报文所在数据流中不存在正在被处理的报文,则将所述待处理报文发送到业务处理线程,以进行业务处理。结合第一方面,在第一种可能的实现方式中,所 ...
【技术保护点】
一种数据处理方法,其特征在于,包括:在对待处理报文进行业务处理之前,检测所述待处理报文所在数据流中是否存在正在被处理的报文;若所述待处理报文所在数据流中不存在正在被处理的报文,则将所述待处理报文发送到业务处理线程,以进行业务处理。
【技术特征摘要】
1.一种数据处理方法,其特征在于,包括: 在对待处理报文进行业务处理之前,检测所述待处理报文所在数据流中是否存在正在被处理的报文; 若所述待处理报文所在数据流中不存在正在被处理的报文,则将所述待处理报文发送到业务处理线程,以进行业务处理。2.根据权利要求1所述的方法,其特征在于,所述检测所述待处理报文所在数据流中是否存在正在被处理的报文,包括: 检测所述待处理报文所在数据流的处理状态,所述处理状态包括正在被处理状态和未被处理状态,其中,正在被处理状态用于指示数据流中的一个或多个报文正在被业务处理线程处理,未被处理状态用于指示数据流中没有任何报文正在被业务处理线程处理; 所述若所述待处理报文所在数据流中不存在正在被处理的报文,则将所述待处理报文发送到业务处理线程,以进行业务处理,包括: 若检测到所述待处理报文所在数据流的处理状态为未被处理状态,将所述待处理报文所在数据流的处理状态置为正在被处理状态,将所述待处理报文发送到业务处理线程,以进行业务处理,并在所述业务处理线程对所述待处理报文处理完毕之后,将所述待处理报文所在数据流的处理状态置为未被处理状态。3.根据权利要求2所述的方法,其特征在于,还包括: 若检测到所述待处理报文所在数据流的处理状态为正在被处理状态,则将所述待处理报文缓存在第一缓存区中。4.根据权利要求3所述的方法,其特征在于,所述检测所述待处理报文所在数据流的处理状态之前, 还包括: 判断所述第一缓存区是否为空; 若是,则从第二缓存区中获取一个待处理报文,其中,所述第二缓存区用于缓存来自网络接口报文; 若否,则从所述第一缓存区中获取一个待处理报文; 相应地,所述检测所述待处理报文所在数据流的处理状态,包括:检测从所述第一缓存区或第二缓存区获取的待处理报文所在数据流的处理状态。5.根据权利要求4所述的方法,其特征在于, 所述第一缓存区包括一个或多个队列,其中,每一个队列与一条数据流相关联,用于缓存该数据流中的待处理报文,所述队列的个数大于等于所有业务处理线程的个数; 所述将所述待处理报文缓存在第一缓存区中,包括: 判断所述第一缓存区中是否存在与所述待处理报文所在数据流相关联的队列; 若是,则将所述待处理报文缓存在与所述待处理报文所在数据流相关联的队列中; 若否,则将所述待处理报文缓存在所述第一缓存区中的空的队列中,并建立所述空的队列与所述待处理报文所在数据流的关联关系,以使所述空的队列与所述待处理报文所在的数据流相关联。6.根据权利要求5所述的方法,其特征在于,所述将所述待处理报文所在数据流的处理状态置为正在被处理状态,包括: 在流表中将所述待处理报文所在数据流的处理状态修改为正在被处理状态;其中,所述流表存储有所述待处理报文的流标识和处理状态的对应关系; 所述将所述待处理报文所在数据流的处理状态置为未被处理状态,包括: 在流表中将所述待处理报文所在数据流的处理状态修改为未被处理状态; 所述检测从所述第一缓存区或第二缓存区获取的待处理报文所在数据流的处理状态,包括: 若所述待处理报文为从所述第二缓存区中获取的待处理报文,则根据所述待处理报文的五元组信息,确定所述待处理报文的流标识,根据所述流标识从所述流表中查询得到所述待处理报文所在数据流的处理状态; 若所述待处理报文为从所述第一缓存区的队列中获取的待处理报文,则根据所述队列对应的流标识从所述流表中查询得到所述待处理报文所在数据流的处理状态。7.根据权利要求5或6所述的方法,其特征在于,所述从所述第一缓存区中获取一个待处理报文之后,还包括: 若缓存所述待处理报文的队列为空,则删除所述队列与所述待处理报文所在数据流之间的关联关系。8.根据权利要求4所述的方法,其特征在于,所述第一缓存区包括一个或多个链表,其中,每一个链表与一条数据流相关联,用于缓存该数据流中的待处理报文,所述链表的个数大于等于所有业务处理线程的个数; 所述将所述待处理报文缓存在第一缓存区中,包括: 判断所述第一缓存区中是否存在与所述待处理报文所在数据流相关联的链表; 若是,则将所述待处理报文缓存在与所述待处理报文所在数据流相关联的链表中;若否,则将所述待处理报文缓存在所述第一缓存区中的空的链...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。