本申请涉及计算机的
技术领域:
:,具体涉及一种数据处理方法、装置和存储介质。
背景技术:
::近年来,随着集成电路迅猛发展,人们对高计算性能和低功耗的要求日益强烈,通用处理器(cpu)的朝着高频率的方向发展遇到了天花板,转而朝向处理核心数量越来越多的方向发展,目前,为了提高计算机设备的数据处理性能,可以采用numa(non-uniformmemoryaccess,非统一内存访问)技术将几十个cpu(甚至上百个cpu)组合在一个计算机设备中,该计算机设备具有多个数据处理模块,每个数据处理模块包括至少一个cpu,以及独立的本地内存,各数据处理模块可以通过互联模块(如称为crossbarswitch)进行互相访问。但是,访问远地内存的延时远远超过本地内存。计算机设备通常只有一个用于输入待处理数据的外部设备,只能设置在一个数据处理模块中。因此在数据处理时,由于访问远地内存或者仅应用一个数据处理模块,导致目前的数据处理方法效率较低。具体地,参考图6a,外部设备可以将待处理数据存储至本地内存,其它数据处理模块中的cpu需要访问外部设备的本地内存(相对于cpu为远地内存)来读取待处理数据。具体地,参考图6b,外部设备将待处理数据存储至本地内存和远地内存,cpu从各自对应的本地内存中读取待处理数据。具体地,参考图6c,外部设备将待处理数据存储至本地内存,仅使用对应的数据处理模块中的cpu读取本地内存中的待处理数据,进行处理,其它数据处理模块中的cpu均闲置。技术实现要素:有鉴于此,本申请实施例提供了一种数据处理方法、装置和存储介质,可以提高数据处理的效率。第一方面,本申请实施例提供了一种数据处理方法,适用于计算机设备,所述计算机设备包括多个数据处理模块,所述数据处理模块包括输入子模块、存储子模块和处理子模块,该数据处理方法包括:对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;基于所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。在一实施例中,所述输入子模块包括至少一个输入通道,所述包括处理子模块包括至少一个数据处理核心,在基于所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块之前,还包括:根据处理子模块中的数据处理核心,以及所述数据处理模块中的预设数据处理程序,获取数据读取核心;根据所述数据读取核心,确定所述输入子模块中用于与所述存储子模块通信的目标输入通道;将所述目标输入通道与所述数据读取核心建立映射;根据所述映射,将所述目标输入通道连接到所述数据读取核心对应的所述存储子模块,所述数据读取核心对应的所述存储子模块,是所述数据读取核心所在的所述数据处理模块中的所述存储子模块。在一实施例中,根据所述映射,将所述目标输入通道连接到所述数据读取核心对应的所述存储子模块,所述数据读取核心对应的所述存储子模块,是所述数据读取核心所在的所述数据处理模块中的所述存储子模块,包括:根据所述映射,确定所述数据读取核心对应的存储子模块;对所述目标输入通道获取到的待处理数据进行解析,得到所述待处理数据中的通信标识信息;根据所述通信标识信息,获取所述待处理数据在所述存储子模块中的索引信息;基于所述索引信息,将所述目标输入通道连接到所述存储子模块。在一实施例中,基于所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块,包括:根据所述索引信息,将所述目标输入通道获取到的所述待处理数据存储至所述数据处理模块中的存储子模块。在一实施例中,所述触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据,包括:基于所述数据读取核心与所述目标输入通道的映射,获取所述数据读取核心对应的所述待处理数据,在所述存储子模块中的索引信息;通过所述索引信息,触发所述数据读取核心从所述数据处理模块中的存储子模块中读取所述数据读取核心对应的待处理数据。在一实施例中,根据处理子模块中的数据处理核心,以及所述数据处理模块中的预设数据处理程序,获取数据读取核心,包括:根据所述数据处理模块对应的预设数据处理程序,获取数据读取子程序;将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心。在一实施例中,所述数据读取子程序包括多个进程,将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心,包括:将所述处理子模块中不同的数据处理核心,分别与对应的所述数据读取子程序中的各进程建立映射,得到多个数据读取核心。在一实施例中,所述数据读取子程序包括多个线程,将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心,还包括:将所述处理子模块中不同的数据处理核心,分别与对应的所述数据读取程序中的各线程建立映射,得到多个数据读取核心。在一实施例中,触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据,包括:根据所述预设数据处理程序,确定所述各进程或者线程的调用顺序;根据所述调用顺序,调用对应的所述数据读取核心,从对应的所述存储子模块中读取所述数据读取核心对应的待处理数据。第二方面,本申请的实施例提供了一种数据处理装置,包括:获取单元,用于对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;存储至单元,用于触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;读取单元,用于触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;处理单元,用于触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。第三方面,本申请的实施例提供的存储介质,其上存储有计算机程序,当计算机程序在计算机上运行时,使得计算机执行如本申请任一实施例提供的数据处理方法。本申请实施例可以对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。本申请实施例通过同时使用多个输入子模块向计算机设备输入待处理数据,且每个输入子模块只访问本地的存储子模块,每个处理子模块也只访问本地的存储子模块,一方面避免了访问远地存储模块导致的时间浪费,另一方面可以同时对多组待处理数据进行处理,从而可以提高数据处理的效率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的数据处理方法的应用场景示意图。图2a是本申请实施例提供的数据处理方法的一个流程示意图。图2b是本申请实施例提供的数据处理方法的另一个流程示意图。图3a是本申请实施例提供的数据处理方法的第一种结构示意图。图3b是本申请实施例提供的数据处理方法的第二种结构示意图。图4是本申请实施例提供的服务器的结构示意图。图5a是本申请实施例提供的服务器中的数据处理模块示意图。图5b是本申请实施例提供的服务器的第一种流量处理场景示意图。图5c是本申请实施例提供的服务器的第二种流量处理场景示意图。图5d是本申请实施例提供的服务器的第三种流量处理场景示意图。图6a是现有技术提供的第一种数据处理模块的结构示意图。图6b是现有技术提供的第二种数据处理模块的结构示意图。图6c是现有技术提供的第三种数据处理模块的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供一种数据处理方法、装置以及存储介质。其中,本发明实施例中的“数据”是所有能输入到计算机并被计算机程序处理的符号的介质的总称,是计算机存储、转发和处理的对象。其中,本发明实施例中对数据的处理包括转发、分析、计算、加工等形式。本发明的实施例提供了一种数据处理系统,包括本发明实施例任一提供的数据处理装置,该数据处理装置具体可集成在服务器中。其中,服务器可以表现为单一服务器,也可以表现为多个服务器组成的服务器集群。此外,该数据处理系统还可以包括其他计算机设备,比如终端以及其它服务器等,终端可以为:手机、平板电脑、笔记本电脑或个人计算机(pc,personalcomputer)等。例如,参考图1,以数据处理装置集成在单一服务器上为例,数据处理系统包括终端和服务器,终端与服务器通过网络链接。其中,网络中包括路由器、网关等网络实体。例如,用户可以在终端上操作,终端可以基于用户操作,并向集成有数据处理装置的服务器发送待处理数据,该服务器包括多个数据处理模块,数据处理模块包括由输入子模块、存储子模块和处理子模块,服务器可以通过输入子模块获取待处理数据。其中,该服务器可以对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。其中,应用该数据处理方法可以对流量数据进行处理,相应地,该服务器是对流量数据进行处理的服务器,比如,流量分析服务器、网页服务器和网关服务器等。上述图1的例子只是实现本发明实施例的一个系统架构实例,本发明实施例不限于上述图1所示的系统结构,基于该系统架构,提出本发明各个实施例。以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。本实施例将从数据处理装置的角度进行描述,该数据处理装置具体可以集成在服务器中。如图2a所示,提供了一种数据处理方法,该方法可以由服务器的处理器执行,下面将以数据处理装置集成在单一服务器中为例,说明该数据处理方法,该数据处理方法的具体流程如下:101、对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据。其中,待处理数据是需要进行转发、分析、加工、计算等处理的数据。数据是在是计算机设备进行处理的对象。其中,待处理数据可以具有不同的形式,比如符号、文字、数字、语音、图像、视频等。其中,输入子模块是一种计算机设备中的外部设备,是用于向计算机设备的主机输入待处理数据的输入设备。输入子模块可以表现为摄像头、扫描仪、硬盘,以及用于通信的网卡等。在一实施例中,可以通过多组摄像头,向集成有数据处理装置的服务器的主机分别发送多组视频或者图片数据,得到多组待处理数据。对于每个数据处理模块,可以通过本数据处理模块中的摄像头获取视频或者图片数据,作为待处理数据。在一实施例中,可以通过多张网卡,向集成有数据处理装置的服务器的主机,分别发送多组流量处理信息,该流量处理信息在服务器中作为被处理的对象,可以表现为一组字符数据。该字符数据可以称为流量数据。对于每个数据处理模块,可以通过本数据处理模块中的网卡获取流量数据,作为待处理数据。102、触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块。其中,存储子模块是用于处理子模块与外部设备进行数据交换的模块,在数据处理过程中,可以暂时存储数据和应用到的程序。存储子模块可以表现为计算机设备的内存(或者也可以称为主存储器)。其中,输入子模块对应的存储子模块,是输入子模块所在的数据处理模块中的存储子模块。其中,该服务器包括多个数据处理模块,每个数据处理模块包括输入子模块、存储子模块和处理子模块。对于每个数据处理模块,输入子模块可以将获取到的所述待处理数据存储至该数据处理模块中的存储子模块。其中,处理子模块是计算机设备中用于运算和控制的模块,是数据处理、程序运行的执行模块。可以表现为中央处理器(cpu,centralprocessingunit)。在一实施例中,采用多个数据处理模块进行数据处理的过程涉及numa(nonuniformmemoryaccessarchitecture,非统一内存访问)技术,该技术是一种用于多处理器的电脑记忆体设计,内存访问时间取决于处理器的内存位置。在numa架构下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。numa技术可以将几十个处理器(甚至上百个处理器)组合在一个计算机设备中,从而组成多个数据处理模块,每个数据处理模块可以包括至少一个处理器,以及独立的本地内存,各数据处理模块可以通过互联模块(如称为crossbarswitch)进行互相访问。numa技术通过提供分离的存储器给各个处理器,避免当多个处理器访问同一个存储器产生性能损失,从而可以提高数据处理的效率。但是,访问远地内存的延时远远超过本地内存。其中,本地内存是本数据处理模块中的存储器,远地内存是其它数据处理模块中的存储器。本发明实施例通过将各输入子模块将获取到的待处理数据,存储至对应的存储子模块。可以避免输入子模块访问远地存储子模块。从而可以提高数据存储的速度,进而提高数据处理效率。在一实施例中,所述输入子模块包括至少一个输入通道,所述包括处理子模块包括至少一个数据处理核心,在基于所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块之前,还可以包括如下步骤:根据处理子模块中的数据处理核心,以及所述数据处理模块中的预设数据处理程序,获取数据读取核心;根据所述数据读取核心,确定所述输入子模块中用于与所述存储子模块通信的目标输入通道;将所述目标输入通道与所述数据读取核心建立映射;根据所述映射,将所述目标输入通道连接到所述数据读取核心对应的所述存储子模块,所述数据读取核心对应的所述存储子模块,是所述数据读取核心所在的所述数据处理模块中的所述存储子模块。其中,数据处理核心是处理子模块中可以完成读取、执行数据处理指令的一个完整的计算单元。包括多个数据处理核心的处理子模块可以表现为一种多核处理器,多核处理器可以认为是一个基板上集成有多个单核处理器,每个单核处理器相当于一个数据处理核心。使用多核处理器来进行数据处理,可以提高数据处理的效率。为了同时使用多个数据处理模块进行数据处理,可以预先为每个数据处理模块设置数据处理程序,处理子模块可以读取数据处理程序,并进行译码得到数据处理指令,并执行该数据处理指令。在一实施例中,预先为每个数据处理模块设置数据处理程序可以通过如下方式实现:预设数据处理程序可以存储在服务器的存储器中,服务器系统可以通过预设的cpu亲和性的接口,使数据处理模块可以获取到数据处理程序。在一实施例中,根据所述数据处理模块对应的预设数据处理程序,获取数据读取子程序;将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心。其中,执行预设数据处理程序,可以对待处理数据进行处理,处理的过程包括多个步骤,通常第一个步骤是从存储子模块中读取需要的待处理数据。其中,数据读取子程序是预设数据处理程序中包含数据读取指令的部分。数据读取子程序可以通过服务器的系统提供的cpu亲和性的接口,与数据处理核心建立映射,得到数据读取核心。建立映射的目的是使数据读取核心执行数据读取子程序对应的指令。需要进行数据读取时,数据读取核心可以通过该接口,读取数据读取子程序、并进行译码得到数据读取指令,然后执行数据读取指令,完成从存储子模块中读取数据的步骤。其中,从存储子模块中读取数据的步骤又可以分为多个子步骤,每个子步骤可以称为进程,从存储子模块中读取数据的步骤可以包括并行进行的多个分步骤,每个并行进行的分步骤可以称为线程。数据读取子程序包括不同的线程和进程。在一实施例中,所述数据读取子程序包括多个进程,将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心,可以包括如下步骤:将所述处理子模块中不同的数据处理核心,分别与对应的所述数据读取子程序中的各进程建立映射,得到多个数据读取核心。在一实施例中,所述数据读取子程序包括多个线程,将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心,还包括:将所述处理子模块中不同的数据处理核心,分别与对应的所述数据读取程序中的各线程建立映射,得到多个数据读取核心。其中,输入通道是用于向存储子模块传输数据的接口,比如,当输入子模块为网卡时,输入通道为网卡中的i/o总线。目标输入通道为实际应用的i/o总线。在一实施例中,在同一数据处理模块中,目标输入通道的数量大于等于数据处理核心的数量。其中,网卡上面装有处理器和存储器(包括ram和rom)。网卡和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的。而网卡和计算机之间的通信则是通过计算机主板上的i/o总线以并行传输方式进行。因此,网卡的一个重要功能就是要进行串行/并行转换。由于网络上的数据率和计算机总线上的数据率并不相同,因此在网卡中必须装有对数据进行缓存的存储芯片。在网卡的rom中可以存储有用于的与服务器主机进行通信的驱动程序。数据在目标输入通道(i/o总线)上以dma队列的形式进行传输。其中,dma队列是采用dma(directmemoryaccess直接存储器访问)技术进行数据传输的通道。dma无需cpu控制,可以直接将数据从外部设备存储至存储子模块中。在一实施例中,输入子模块中具有驱动程序,其中,驱动程序是一种使服务器和外部设备进行相互通信的特殊程序,可以用于输入子模块与服务器中的预设数据处理程序进行通信。具体地,驱动程序和预设数据处理程序之间需要实现相应的通信,数据处理程序通过驱动程序提供的接口,向输入子模块发送相应的指令,比如,申请输入通道的指令。在一实施例中,处理子模块可以根据数据处理程序,从而可以通过驱动程序向所述输入子模块发送申请输入通道的指令,从而初始化网卡中的dma控制器,输入子模块发出dma请求,dma控制器对dma请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当处理子模块执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示dma已经响应,申请到dma队列,通过dma控制器通知输入子模块开始dma传输。dma控制器获得总线控制权后,处理子模块(cpu)即刻挂起或只执行内部操作,由dma控制器输出读写命令,直接控制输入通道进行dma传输。在dma控制器的控制下,在存储子模块和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。在一实施例中,根据所述映射,将所述目标输入通道连接到所述数据读取核心对应的所述存储子模块,所述数据读取核心对应的所述存储子模块,是所述数据读取核心所在的所述数据处理模块中的所述存储子模块,可以包括如下步骤:根据所述映射,确定所述数据读取核心对应的存储子模块;对所述目标输入通道获取到的待处理数据进行解析,得到所述待处理数据中的通信标识信息;根据所述通信标识信息,获取所述待处理数据在所述存储子模块中的索引信息;基于所述索引信息,将所述目标输入通道连接到所述存储子模块。其中,通信标识信息是指数据的源ip地址,源端口,目的ip地址,目的端口和传输层协议,也可以被称为五元组,其中每一种信息称为一个元,相应地,四元组为上述五种信息的其中四种。在一实施例中,输入子模块对接收到的获取到的待处理数据进行解析,获取源ip地址,源端口,目的ip地址,目的端口和传输层协议信息,输入子模块通过配置的hash函数根据五元组信息计算出hash值,也可以根据二、三或四元组进行计算。取hash值的低几位(每个网卡可能不同)作为存储子模块中reta(redirectiontable,复位向表)的索引。将reta中存储的数据分发到对应的处理子模块。在一实施例中,输入子模块可以通过目标输入通道存储至存储子模块的不同reta(复位向表)中。103、触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据。在一实施例中,触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据,可以包括如下步骤:基于所述数据读取核心与所述目标输入通道的映射,获取所述数据读取核心对应的所述待处理数据,在所述存储子模块中的索引信息;通过所述索引信息,触发所述数据读取核心从所述数据处理模块中的存储子模块中读取所述数据读取核心对应的待处理数据。在一实施例中,数据读取子程序包括多个进程,或者包括多个并行的线程,触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据,还可以包括如下步骤:根据所述预设数据处理程序,确定所述各进程或者线程的调用顺序;根据所述调用顺序,调用对应的所述数据读取核心,从对应的所述存储子模块中读取所述数据读取核心对应的待处理数据。104、触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。根据预设的数据处理程序,可以对读取到的待处理数据进行不同的处理。具体地,处理子模块可以读取预设数据处理程序,并进行译码,得到不同的处理指令,从而进行不同的处理。由上可知,本申请实施例可以对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。本申请实施例通过同时使用多个输入子模块向计算机设备输入待处理数据,且每个输入子模块只访问本地的存储子模块,每个处理子模块也只访问本地的存储子模块,一方面避免了访问远地存储模块导致的时间浪费,另一方面可以同时对多组待处理数据进行处理,从而可以提高数据处理的效率。根据上述实施例所描述的方法,以下将作进一步详细说明。在本实施例中,将以数据处理装置集成在单一服务器中,进行流量数据处理为例,对本发明实施例的方法进行详细说明。参考图2b,本申请的数据处理方法具体流程如下:201、服务器对于每个数据处理模块,触发所述数据处理模块中的网络通讯子模块获取待处理流量数据。其中,网络通讯子模块是用于使服务器在网络中进行通讯的硬件。可以表现为网卡。其中,网卡和网络之间的通信是通过电缆或双绞线以串行传输方式进行的。而网卡和服务器之间的通信则是通过服务器主板上的i/o总线以并行传输方式进行。因此,网卡的一个重要功能就是要进行串行/并行转换。在一实施例中,可以在服务器的每个数据处理模块中都部署一张使用pci-e插槽的网卡。服务器可以通过多张网卡,获取多组待处理流量数据。参考图5a,当服务器使用numa架构时,数据处理模块可以称为numa节点,存储子模块可以称为内存,处理子模块可以为cpu。在本实施例的以下内容,将以numa节点为例进行说明。202、服务器基于所述数据处理模块中的网络通讯子模块将获取到的所述待处理流量数据,存储至所述数据处理模块中的存储子模块。在一实施例中网卡将接收到的网络流量数据通过dma的方式存储至到本numa节点的内存中。其中,dma方法参见上面的实施例,不再赘述。网卡将接收到的网络流量数据通过dma的方式存储至到本numa节点的内存中,依赖网卡驱动和预设的流量处理程序配合实现。具体实现方案如下:预设的流程处理程序中,有一个“流量读取子程序”,负责和网卡驱动程序配合,从本地numa内存中获取网卡存储至的流量数据。其中,本地是指属于同一个numa节点,远地是指不属于同一个numa节点。在一实施例中,流量读取子程序具有多进程或者多线程。可以在每一个部署了网卡的numa节点的cpu上都部署流量读取子程序的进程或者线程,形成多个流量数据读取核心。流量读取子程序在每个numa节点上占用的cpu的数据处理核心(core)的个数,由本numa节点需要接入的待处理流量数据大小来决定。可以只部署在本numa节点cpu的一个core上,也可以部署在本numa节点cpu的多个core上。流量读取子程序的进程或者线程,通过服务器系统提供的设置cpu亲和性的接口,绑定到指定的cpu的core上。在一实施例中,服务器系统可以提供如下接口:(1)设置进程亲和性的接口:sched_setaffinity(2)设置线程亲和性的接口:pthread_setaffinity_np流量读取子程序通过网卡驱动提供的接口(不同网卡驱动提供的接口不相同,也可以统一使用dpdk开发套件),初始化网卡的dma队列。需要初始化的内容如下:每张网卡需要初始化的dma队列的个数大于等于本网卡对应numa节点绑定了流量读取子程序的core的个数。每个dma队列需要绑定到一个绑定了流量接收程序的core上(参考上面的实施例,通过建立映射的方法进行绑定)。初始化dma队列的时候,需要为dma队列指定内存,该内存是dma队列绑定的core所在的numa节点的内存(具体步骤,参考上面的实施例。根据映射先确定dma队列绑定的core所在的numa节点的内存,然后获取索引信息,通过索引信息将dma队列指定到内存)。保证网卡将接收到的流量存储至到本numa节点的内存中。203、服务器触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理流量数据。流量读取子程序通过驱动接口,接收自己的core绑定的dma队列的待处理流量数据。具体过程参见上面的实施例,不再赘述。204、服务器触发所述数据处理模块中的处理子模块对读取到的所述待处理流量数据进行处理。所述数据处理装置可以集成在网络连接系统的不同服务器中,从而提高不同流量处理步骤的速度。相应地,预设的数据处理程序可以表现为对流量数据进行不同处理的程序。比如,参考图5b,本实施例中的数据处理系统可以集成在网关服务器中,预设的数据处理程序可以表现为流量转发程序,在网关服务器的每一个numa节点上都部署网卡和流量转发程序。并且在转发流量数据时,选择本numa节点的网卡发送流量数据。网关服务器可以通过网络链接,将读取到的待处理流量数据发送给其他服务器,比如,可以读取到的待处理流量数据转发给系统中的业务服务器。比如,参考图5c,本实施例中的数据处理系统可以集成在流量分析服务器中,预设的数据处理程序可以表现为流量分析程序,在流量分析服务器的每一个numa节点上都部署网卡和流量分析程序。流量分析服务器可以获取通过分光器或者交换机/路由器的端口镜像功能复制的流量数据,作为待处理流量数据,并对待处理流量数据进行分析计算,其中,分光交换机是用来汇聚通过分光或者端口镜像等方式复制过来的镜像流量数据,并将汇聚后的镜像流量数据转发给其它服务器(可以是流量处理服务器)。其中,镜像流量数据是通过分光或者端口镜像的方式,将业务流量数据复制一份,并通过分光交换机转发给网络流量分析服务器的流量数据。其中,业务流量数据是用户(客户端)和业务服务器之间进行业务交互产生的流量数据。比如,参考图5d,本实施例中的数据处理系统可以集成在web业务服务器中,预设的数据处理程序可以表现为流量分析程序,在web业务服务器的每一个numa节点上都部署网卡和流量分析程序。web业务服务器可以对通过计算和分析待处理流量数据蕴含的信息,产生用于响应信息的流量数据,并返回给终端。由上可知,本申请实施例可以对于每个数据处理模块,触发所述数据处理模块中的网络通讯子模块获取待处理流量数据;触发所述数据处理模块中的网络通讯子模块将获取到的所述待处理流量数据,存储至所述数据处理模块中的存储子模块;触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理流量数据;触发所述数据处理模块中的处理子模块对读取到的所述待处理流量数据进行处理。本申请实施例通过同时使用多个网络通讯子模块向计算机设备输入待处理流量数据,且每个网络通讯子模块只访问本地的存储子模块,每个处理子模块也只访问本地的存储子模块,一方面避免了访问远地存储模块导致的时间浪费,另一方面可以同时对多组待处理流量数据进行处理,从而可以提高数据处理的效率。在一实施例中,可以将数据处理装置集成在服务器集群中以实现本申请的数据处理方法,服务器集群是由多个服务器组成的,其中,每个服务器中都集成有至少一个数据处理模块,各数据处理模块可以通过互联模块(如称为crossbarswitch)进行互相访问。为了更好地实施以上方法,本发明实施例还提供一种数据处理装置,该数据处理装置具体可以集成在电子设备中,该电子设备可以为终端、服务器、个人电脑等设备。比如,在本实施例中,将以数据处理装置集成在服务器中为例,对本发明实施例地方法进行详细说明。比如,如图3a所示,该数据处理装置可以包括获取单元301、存储至单元302、读取单元303和处理单元304。如下:(一)获取单元301,用于对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据。(二)存储至单元302,用于触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块。在一些实施例中,参考图3b,执行存储至单元302之前,还要执行绑定单元305,绑定单元305具体可以包括核心获取子单元、通道获取子单元、通道核心绑定子单元和通道内存绑定子单元,具体如下:核心获取子单元,用于根据处理子模块中的数据处理核心,以及所述数据处理模块中的预设数据处理程序,获取数据读取核心;通道获取子单元,用于根据所述数据读取核心,确定所述输入子模块中用于与所述存储子模块通信的目标输入通道;通道核心绑定子单元,用于将所述目标输入通道与所述数据读取核心建立映射;通道内存绑定子单元,用于根据所述映射,将所述目标输入通道连接到所述数据读取核心对应的所述存储子模块,所述数据读取核心对应的所述存储子模块,是所述数据读取核心所在的所述数据处理模块中的所述存储子模块。在一些实施例中,通道内存绑定子单元具体可以用于:根据所述映射,确定所述数据读取核心对应的存储子模块;对所述目标输入通道获取到的待处理数据进行解析,得到所述待处理数据中的通信标识信息;根据所述通信标识信息,获取所述待处理数据在所述存储子模块中的索引信息;基于所述索引信息,将所述目标输入通道连接到所述存储子模块。在一些实施例中,核心获取子单元具体可以用于:根据所述数据处理模块对应的预设数据处理程序,获取数据读取子程序;将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心。在一实施例中,所述存储至单元302,具体可以用于:根据所述索引信息,将所述目标输入通道获取到的所述待处理数据存储至所述数据处理模块中的存储子模块。(三)读取单元303,用于触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据。在一实施例中,所述读取单元303,具体可以用于:根据所述预设数据处理程序,确定所述各进程或者线程的调用顺序;根据所述调用顺序,调用对应的所述数据读取核心,从对应的所述存储子模块中读取所述数据读取核心对应的待处理数据。在一实施例中,所述读取单元303,还可以用于:基于所述数据读取核心与所述目标输入通道的映射,获取所述数据读取核心对应的所述待处理数据,在所述存储子模块中的索引信息;通过所述索引信息,触发所述数据读取核心从所述数据处理模块中的存储子模块中读取所述数据读取核心对应的待处理数据。(四)处理单元304,用于将所述子内容分配给所述目标数据处理路径中相应的数据处理支路进行处理,得到每个子内容对应的数据处理结果。具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。由上可知,本申请实施例获取单元,用于对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;存储至单元,用于触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;读取单元,用于触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;处理单元,用于触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。本申请实施例通过同时使用多个输入子模块向计算机设备输入待处理数据,且每个输入子模块只访问本地的存储子模块,每个处理子模块也只访问本地的存储子模块,一方面避免了访问远地存储模块导致的时间浪费,另一方面可以同时对多组待处理数据进行处理,从而可以提高数据处理的效率。本申请实施例还提供了一种服务器,该服务器可以是手机、平板电脑、微型处理盒子、无人机、或者图像采集设备等等。如图4所示,其示出了本申请实施例所涉及的服务器的结构示意图,具体来讲:该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403、输入模块404以及通信模块405等部件。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。在一些实施例中,处理器401可包括一个或多个处理核心;在一些实施例中,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。服务器还包括给各个部件供电的电源403,在一些实施例中,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。该服务器还可包括输入模块404,该输入模块404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。该服务器还可包括通信模块405,在一些实施例中,通信模块405可以包括无线子模块,服务器可以通过该通信模块405的无线子模块进行短距离无线传输,从而提供无线的宽带互联网访问。比如,该通信模块405可以用于帮助用户收发电子邮件、浏览网页和访问流式媒体等。尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;触发所述所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。以上各个操作的具体实施可参见前面的实施例,在此不再赘述。由上可知,本申请实施例可以对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。本申请实施例通过同时使用多个输入子模块向计算机设备输入待处理数据,且每个输入子模块只访问本地的存储子模块,每个处理子模块也只访问本地的存储子模块,一方面避免了访问远地存储模块导致的时间浪费,另一方面可以同时对多组待处理数据进行处理,从而可以提高数据处理的效率。本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于计算机可读存储介质中,并由处理器进行加载和执行。为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种数据处理方法中的步骤。例如,该指令可以执行如下步骤:过所述数据处理模块中的输入子模块,分别获取多组待处理数据;触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种数据处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种数据处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上对本申请实施例所提供的一种数据处理方法、装置以及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种数据处理方法,其特征在于,适用于计算机设备,所述计算机设备包括多个数据处理模块,所述数据处理模块包括输入子模块、存储子模块和处理子模块,所述数据处理方法包括:
对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;
基于所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;
触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;
触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。
2.如权利要求1所述的数据处理方法,其特征在于,所述输入子模块包括至少一个输入通道,所述处理子模块包括至少一个数据处理核心,在所述触发所述数据处理模块中的输入子模块将获取到的待处理数据,存储至所述数据处理模块中的存储子模块之前,还包括:
对于每个处理子模块,根据所述处理子模块中的所述数据处理核心,以及所在的数据处理模块中的预设数据处理程序,获取数据读取核心;
根据所述数据读取核心,确定所述输入子模块中用于与所述存储子模块通信的目标输入通道;
将所述目标输入通道与所述数据读取核心建立映射;
根据所述映射,将所述目标输入通道连接到所述数据读取核心对应的所述存储子模块,所述数据读取核心对应的所述存储子模块,是所述数据读取核心所在的所述数据处理模块中的所述存储子模块。
3.如权利要求2所述的数据处理方法,其特征在于,所述根据所述映射,将所述目标输入通道连接到所述数据读取核心对应的所述存储子模块,包括:
根据所述映射,确定所述数据读取核心对应的存储子模块;
对所述目标输入通道获取到的待处理数据进行解析,得到所述待处理数据中的通信标识信息;
根据所述通信标识信息,获取所述待处理数据在所述存储子模块中的索引信息;
基于所述索引信息,将所述目标输入通道连接到所述存储子模块。
4.如权利要求3所述的数据处理方法,其特征在于,所述基于所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块,包括:
基于所述数据读取核心与所述目标输入通道的映射,获取所述数据读取核心对应的所述待处理数据,在所述存储子模块中的索引信息;
根据所述索引信息,将所述目标输入通道获取到的所述待处理数据存储至所述数据处理模块中的存储子模块。
5.如权利要求3所述的数据处理方法,其特征在于,所述触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据,包括:
通过所述索引信息,触发所述数据读取核心从所述数据处理模块中的存储子模块中读取所述数据读取核心对应的的待处理数据。
6.如权利要求2所述的数据处理方法,其特征在于,所述根据处理子模块中的数据处理核心,以及所述数据处理模块中的预设数据处理程序,获取数据读取核心,包括:
根据所述数据处理模块对应的预设数据处理程序,获取数据读取子程序;
将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心。
7.如权利要求6所述的数据处理方法,其特征在于,所述数据读取子程序包括多个进程,所述将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心,包括:
将所述处理子模块中不同的数据处理核心,分别与对应的所述数据读取子程序中的各进程建立映射,得到多个数据读取核心。
8.如权利要求6所述的数据处理方法,其特征在于,所述数据读取子程序包括多个线程,所述将所述数据处理模块中的所述处理子模块中的处理核心与所述数据读取子程序建立映射,将建立映射后的所述数据处理核心作为数据读取核心,还包括:
将所述处理子模块中不同的数据处理核心,分别与对应的所述数据读取程序中的各线程建立映射,得到多个数据读取核心。
9.如权利要求7或者8中任一项所述的数据处理方法,其特征在于,所述触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据,包括:
根据所述预设数据处理程序,确定所述各进程或者线程的调用顺序;
根据所述调用顺序,调用对应的所述数据读取核心,从对应的所述存储子模块中读取所述数据读取核心对应的待处理数据。
10.一种数据处理装置,其特征在于,包括:
获取单元,用于对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;
存储至单元,用于触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;
读取单元,用于触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;
处理单元,用于触发所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。
11.一种存储介质,其上存储有计算机程序,其特征在于,当计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至9中任一项所述的数据处理方法。
技术总结本申请实施例公开了一种数据处理方法、装置和存储介质,其中,本申请实施例可以对于每个数据处理模块,触发所述数据处理模块中的输入子模块获取待处理数据;触发所述数据处理模块中的输入子模块将获取到的所述待处理数据,存储至所述数据处理模块中的存储子模块;触发所述数据处理模块中的处理子模块读取所述数据处理模块的存储子模块中的待处理数据;触发所述所述数据处理模块中的处理子模块对读取到的所述待处理数据进行处理。本申请实施例可以提高数据处理的效率。
技术研发人员:葛双博;王永峰;赵力;张元龙;甘祥
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2020.01.13
技术公布日:2020.06.05