首页 / 专利库 / 企业组织 / 流程图 / 基于消息队列的数据处理方法、装置和计算机设备

基于消息队列的数据处理方法、装置和计算机设备

阅读:1045发布:2020-05-17

专利汇可以提供基于消息队列的数据处理方法、装置和计算机设备专利检索,专利查询,专利分析的服务。并且本 发明 提出的基于消息队列的 数据处理 方法、装置、计算机设备和存储介质,其中方法包括:接收从 指定 输入 节点 输入的初始数据;查询预设的数据处理 流程图 以找到对应当前运算节点的运算类型,并将该运算类型的信息加入初始数据的数据头中得到目标数据;将目标数据按预设份数进行分割并放入消息队列;将多份第一数据从消息队列中逐份轮流分发至各目标接收端,启动当前运算节点,并对第一数据进行运算得到多份结果结合的第一目标结果,将第一目标结果发至消息队列;重复将数据分割分发至多个目标接收端进行运算,以此类推,直至按照数据处理流程图完成运算目标数据,实现了数据的自动分发和并行运算,大大地提高了效率。,下面是基于消息队列的数据处理方法、装置和计算机设备专利的具体信息内容。

1.一种基于消息队列的数据处理方法,其特征在于,包括:
接收从指定输入节点输入的初始数据;
依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型,并将所述运算类型的信息加入所述初始数据的数据头中得到目标数据;
将所述目标数据按预设份数进行分割,以得到多份第一数据,并放入至消息队列;
将多份所述第一数据从所述消息队列中逐份轮流分发至指定个数的目标接收端中;
通过各所述目标接收端依据所述运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据;
接收从所述目标接收端发送的多份结果数据,将多份结果数据结合得到第一目标结果,将所述第一目标结果发至所述消息队列;
将所述消息队列中的所述第一目标结果按所述预设份数分割得到多份第一结果数据,将多份第一结果数据逐份轮流分发至指定个数的目标接收端中;
通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型,并启动所述下一运算节点,以按所述下一运算节点的运算类型对所述第一结果数据进行运算,得到多份下一运算节点运算后的结果数据;
接收从所述目标接收端发送的多份下一运算节点运算后的结果数据,并将多份下一运算节点运算后的结果数据结合得到第二目标结果,将所述第二结果发送至所述消息队列,以此类推,直至按照所述数据处理流程图完成运算所述目标数据。
2.根据权利要求1所述的基于消息队列的数据处理方法,其特征在于,所述依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型的步骤之前,包括:
判断是否接收到对应所述初始数据的输送完毕信息;
若接收到输送完毕信息,则触发查询所述数据处理流程图的指令;
若未接收到输送完毕信息,则依据所述目标数据判断与所述目标数据对应的各运算节点的运算类型是否均为单笔运算,所述单笔运算为针对一条数据的单独运算;
若各所述运算节点的运算类型均为所述单笔运算,则触发所述查询所述数据处理流程图的指令。
3.根据权利要求1所述的基于消息队列的数据处理方法,其特征在于,所述依据所述初始数据查询预设的数据处理流程图以找到对应所述目标数据的当前运算节点的运算类型的步骤,包括:
依据所述初始数据获取对应所述初始数据的数据类型;
调取与所述数据类型对应的预设的数据处理流程图,其中,不同的数据类型对应不同的数据处理流程图;
从所述数据处理流程图中找出对应所述初始数据的当前运算节点的运算类型。
4.根据权利要求1所述的基于消息队列的数据处理方法,其特征在于,所述当前运算节点的运算类型为连接运算,每份所述第一结果数据包括多条待运算数据,所述通过各所述目标接收端依据所述运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据步骤之前,包括:
从各所述待运算数据中获取对应的关联信息,所述关联信息包括第一信息以及与所述第一信息匹配的第二信息,所述第一信息位于数据的起始字段,所述第二信息位于数据的结束字段;
按照将所述待运算数据中携带有所述第一信息的起始字段,与另一所述待运算数据中携带有与所述第一信息匹配的所述第二信息的结束字段对接的方式,遍历所有所述待运算数据,得到用于进行连接运算的已连接数据。
5.根据权利要求1所述的基于消息队列的数据处理方法,其特征在于,所述通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型的步骤,包括:
通过所述目标接收端从所述第一结果数据中找到所述第一结果数据的数据头,所述数据头包括所述当前运算节点的节点信息,所述节点信息包括所述当前运算节点与上下相邻的运算节点的关系信息;
依据所述节点信息从所述数据处理流程图中找到对应所述当前运算节点的下一节点的运算类型。
6.根据权利要求1所述的基于消息队列的数据处理方法,其特征在于,所述接收从所述目标接收端发送的多份结果数据,将多份结果数据结合得到第一目标结果,将所述第一目标结果发至所述消息队列的步骤之后,包括:
判断所述当前运算节点的运算类型是否为连接运算、降维运算以及归集运算中的任一种;
若所述运算类型为连接运算、降维运算以及归集运算中的任一种,则判断是否接收到携带有所需数据传输完毕信息的控制信号,所述所需数据为在所述运算节点中按对应的运算类型进行操作时所需要的全部数据中的任一数据,且是运算节点运算后的结果数据;
若接收到携带有所需数据传输完毕信息的控制信号,则触发分割数据的指令;
若未接收到携带有所需数据传输完毕信息的控制信号,将接收到的所需数据存入内存数据库直到接收所述控制信号,并在接收到所述控制号之后触发分割数据的指令。
7.一种基于消息队列的数据处理装置,其特征在于,包括:
接收数据单元,用于接收从指定输入节点输入的初始数据;
查找类型单元,用于依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型,并将所述运算类型的信息加入所述初始数据的数据头中得到目标数据;
分割数据单元,用于将所述目标数据按预设份数进行分割,以得到多份第一数据,并放入消息队列;
分发数据单元,用于将多份所述第一数据从所述消息队列中逐份轮流分发至指定个数的目标接收端中;
运算数据单元,用于通过各所述目标接收端依据所述运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据;
接收结果单元,用于接收从所述目标接收端发送的多份结果数据,将多份结果数据结合得到第一目标结果,将所述第一目标结果发至所述消息队列;
分割结果单元,用于将所述消息队列中的所述第一目标结果按所述预设份数分割得到多份第一结果数据,将多份第一结果数据逐份轮流分发至指定个数的目标接收端中;
查找结果单元,用于通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型,并启动所述下一运算节点,以按所述下一运算节点的运算类型对所述第一结果数据进行运算,得到多份下一运算节点运算后的结果数据;
运算结果单元,用于接收从所述目标接收端发送的多份下一运算节点运算后的结果数据,并将多份下一运算节点运算后的结果数据结合得到第二目标结果,将所述第二结果发送至所述消息队列,以此类推,直至按照所述数据处理流程图完成运算所述目标数据。
8.根据权利要求7所述的基于消息队列的数据处理装置,其特征在于,还包括:
判断数据单元,用于判断是否接收到对应所述初始数据的输送完毕信息;
第一触发单元,用于接收到输送完毕信息时,触发查询所述数据处理流程图的指令;
判断运算单元,用于未接收到输送完毕信息时,依据所述目标数据判断与所述目标数据对应的各运算节点的运算类型是否均为单笔运算,所述单笔运算为针对一条数据的单独运算;
判断接收单元,用于各所述运算节点的运算类型均为所述单笔运算,触发所述查询所述数据处理流程图的指令。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。

说明书全文

基于消息队列的数据处理方法、装置和计算机设备

技术领域

[0001] 本发明涉及到数据处理的技术领域,特别是涉及到一种基于消息队列的数据处理方法、装置、计算机设备和存储介质。

背景技术

[0002] 目前企业通常会通过数据处理系统将从外部得到的数据进行处理,以获得企业所需的数据。现有的数据处理系统基本是基于关系数据库实现,首先将流程分为若干阶段,每个阶段用固定的代码进行批量处理后,然后将阶段性的数据落地到关系数据库,再进行下一环节的处理。如在多环节的处理任务中,传统模式对关系数据库有重度依赖,即每个环节都将结果输出到oracle之类的数据库,下一个环节开始时再重新从数据库读取数据。
[0003] 而通过上述方式进行处理数据时,因为缺少不同数据间的自动等候和触发机制,为保证流程能顺利进行,一般都需要等齐所有需要的数据,再一并发起流程,并且对各类数据的读取顺序有严格的规定,故必须在所有输入数据收集齐后才能开始处理,无法实现单笔实时处理,这样不但造成数据处理的实时性较差,而且数据处理的效率低下。

发明内容

[0004] 本发明的主要目的为提供一种基于消息队列的数据处理方法、装置、计算机设备和存储介质,旨在解决现有数据处理效率较低的技术问题。
[0005] 基于上述发明目的,本发明提出一种基于消息队列的数据处理方法,包括:接收从指定输入节点输入的初始数据;
[0006] 依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型,并将所述运算类型的信息加入所述初始数据的数据头中得到目标数据;
[0007] 将所述目标数据按预设份数进行分割,以得到多份第一数据,并放入消息队列;
[0008] 将多份所述第一数据从所述消息队列中逐份轮流分发至指定个数的目标接收端中;
[0009] 通过各所述目标接收端依据所述运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据;
[0010] 接收从所述目标接收端发送的多份结果数据,将多份结果数据结合得到第一目标结果,将所述第一目标结果发至所述消息队列;
[0011] 将所述消息队列中的所述第一目标结果按所述预设份数分割得到多份第一结果数据,将多份第一结果数据逐份轮流分发至指定个数的目标接收端中;
[0012] 通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型,并启动所述下一运算节点,以按所述下一运算节点的运算类型对所述第一结果数据进行运算,得到多份下一运算节点运算后的结果数据;
[0013] 接收从所述目标接收端发送的多份下一运算节点运算后的结果数据,并将多份下一运算节点运算后的结果数据结合得到第二目标结果,将所述第二结果发送至所述消息队列,以此类推,直至按照所述数据处理流程图完成运算所述目标数据。
[0014] 本发明还提供一种基于消息队列的数据处理装置,包括:
[0015] 接收数据单元,用于接收从指定输入节点输入的初始数据;
[0016] 查找类型单元,用于依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型,并将所述运算类型的信息加入所述初始数据的数据头中得到目标数据;
[0017] 分割数据单元,用于将所述目标数据按预设份数进行分割,以得到多份第一数据,并放入消息队列;
[0018] 分发数据单元,用于将多份所述第一数据从所述消息队列中逐份轮流分发至指定个数的目标接收端中;
[0019] 运算数据单元,用于通过各所述目标接收端依据所述运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据;
[0020] 接收结果单元,用于接收从所述目标接收端发送的多份结果数据,将多份结果结合得到第一目标结果,将所述第一目标结果发至所述消息队列;
[0021] 分割结果单元,用于将所述消息队列中的所述第一目标结果按所述预设份数分割得到多份第一结果数据,将多份第一结果数据逐份轮流分发至指定个数的目标接收端中;
[0022] 查找结果单元,用于通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型,并启动所述下一运算节点,以按所述下一运算节点的运算类型对所述第一结果数据进行运算,得到多份下一运算节点运算后的结果数据;
[0023] 运算结果单元,用于接收从所述目标接收端发送的多份下一运算节点运算后的结果数据,并将多份下一运算节点运算后的结果数据结合得到第二目标结果,将所述第二结果发送至所述消息队列,以此类推,直至按照所述数据处理流程图完成运算所述目标数据。
[0024] 进一步地,所述基于消息队列的数据处理装置还包括:
[0025] 判断数据单元,用于判断是否接收到对应所述初始数据的输送完毕信息;
[0026] 第一触发单元,用于接收到输送完毕信息时,触发查询所述数据处理流程图的指令;
[0027] 判断运算单元,用于未接收到输送完毕信息时,依据所述目标数据判断与所述目标数据对应的各运算节点的运算类型是否均为单笔运算,所述单笔运算为针对一条数据的单独运算;
[0028] 判断接收单元,用于各所述运算节点的运算类型均为所述单笔运算,则触发所述查询所述数据处理流程图的指令。
[0029] 本发明还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
[0030] 本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
[0031] 本发明的有益效果为:只需要通过外部程序控制数据输入,后续的动作均由消息队列分发的切片数据触发,各运算服务器自行查询控制数据流向并处理,处理完后进行下一轮的切片数据发送,依此迭代进行,大大地提高运算性能以及处理效率。附图说明
[0032] 图1为本发明一实施例中基于消息队列的数据处理方法的步骤示意图;
[0033] 图2为本发明一实施例中基于消息队列的数据处理装置的结构示意框图
[0034] 图3为本发明一实施例的计算机设备的结构示意框图。
[0035] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0036] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0037] 参照图1,本实施例中的基于消息队列的数据处理方法,包括:
[0038] 步骤S1:接收从指定输入节点输入的初始数据;
[0039] 步骤S2:依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型,并将所述运算类型的信息加入所述初始数据的数据头中得到目标数据;
[0040] 步骤S3:将所述目标数据按预设份数进行分割,以得到多份第一数据,并放入消息队列;
[0041] 步骤S4:将多份所述第一数据从所述消息队列逐份轮流分发至指定个数的目标接收端中;
[0042] 步骤S5:通过各所述目标接收端依据所述运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据;
[0043] 步骤S6:接收从所述目标接收端发送的多份结果数据,将多份结果数据结合得到第一目标结果,将所述第一目标结果发至所述消息队列;
[0044] 步骤S7:将所述消息队列中的所述第一目标结果按所述预设份数分割得到多份第一结果数据,将多份第一结果数据逐份轮流分发至指定个数的目标接收端中;
[0045] 步骤S8:通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型,并启动所述下一运算节点,以按所述下一运算节点的运算类型对所述第一结果数据进行运算,得到多份下一运算节点运算后的结果数据;
[0046] 步骤S9:接收从所述目标接收端发送的多份下一运算节点运算后的结果数据,并将多份下一运算节点运算后的结果数据结合得到第二目标结果,将所述第二结果发送至所述消息队列,以此类推,直至按照所述数据处理流程图完成运算所述目标数据。
[0047] 本实施例中,上述数据处理方法通过数据处理系统实现,可应用于任意数据批量处理的场景,该数据处理系统可基于多个服务器配合实现,如主服务器以及多个副服务器。如上述步骤S1所述,上述指定输入节点为数据处理系统中的虚拟节点,具体而言,数据输入程序可使用API(API为用于输入数据的工具包)向输入节点输入数据,此处的数据输入程序为开发人员研发的用于输入数据的程序,当从输入节点输入初始数据,即主服务器通过上述数据输入程序从外部设备接收到上述初始数据,该初始数据即开始进入数据处理流程中且未经处理的数据。输入节点可以设置多个,每个输入节点对应一种类型的数据。
[0048] 如步骤S2所述,已知每条数据均包括数据头,数据头即数据的头部消息,该头部消息中包括数据的各个维度的信息,例如数据头中包括该条数据的类型、来源等信息,通过初始数据的类型以及来源等信息可找到对应初始数据的数据处理流程图,对于不同的初始数据对应的数据处理流程图也不一样。上述数据处理流程图为用于记录每个运算节点处理数据的流程图,即对于每个目标数据,其数据流程图均记录该目标数据进行处理的过程,可包括多个运算节点,以及每个运算节点的运算类型。具体而言,用户可针对各种数据绘制对应的数据处理流程图,即每种数据分别具有一一对应的处理流程图,并存储于预设的数据库中,需要时进行查询即可。当接收到初始数据,则可根据初始数据查找到与之对应的数据处理流程图,从而得知对应初始数据的当前运算节点的运算类型,这时可将该运算类型的信息加入到初始数据的数据头中,相当于该数据中携带了当前运算节点的运算类型的识别信息,以供后续查找识别,为了便于区别将该初始数据记为目标数据。
[0049] 对于不同的数据,运算方式不一样,本发明提供四种类型,分别为单笔运算、连接运算、降维运算以及归集运算,各种不同的数据均可通过上述四种运算的单个或组合进行处理。其中,单笔运算为某条数据本身的运算,无需与其他数据连接合并计算;连接运算则相反,需要多条数据连接之后一并运算,运算所需的参数内容来自于多条数据,具体可通过数据之间的字段来匹配需要相互连接的数据;降维运算即是将数据中具有上下级关系的维度进行转换之后再进行运算,在转换维度的过程中,可能需要用到多条不同的数据,上述维度是指数据一个方面的信息,每条数据均有多个不同的维度,如记录一客户的某条数据,可包括年龄、学历、性别、婚姻等方面的信息,即多个维度的信息。归集运算是指将多条数据分组归并在一起再运算。
[0050] 举例地,目标数据A,与之对应的数据处理流程图包括三个运算节点,起始运算节点为单笔运算,下一个运算节点为连接运算,再下一个是单笔运算,那么A按上述数据处理流程图先后依次经过上述单笔运算、连接运算以及单笔运算。
[0051] 如上述步骤S3-S4所述,将目标数据按预设分数进行分割,即是按预设份数对目标数据进行切片,得到每份数量一样的第一数据,上述预设份数是由开发人员预先设定的。然后将这些第一数据放入消息队列,在消息队列中的数据携带有对应输入节点类型的消息。例如将100条的数据,分隔成10份,每份包含10条数据,将每份第一数据都发至消息队列,然后将每份第一数据逐份轮流地分发至多个目标接收端,并启动当前运算节点,即开始进入运算操作状态,如上述多个目标接收端具有为4个,将上述10份数据中的第一份分到第一个目标接收端,将第二份分到第二个目标接收端,第三份分到第三个目标接收端,第四份分到第四个目标接收端,第五份分到第一个目标接收端,第六份分到第二个目标接收端,以此类推直至将上述10份数据分完,此处的目标接收端为上述副服务器,用于对目标数据进行运算操作,这样实现了数据的自动分发和并行运算,大大地提高了效率。
[0052] 如上述步骤S5-S6,由前述可知第一数据中包括上述数据头,也即从数据头中可找到当前运算节点的运算类型的信息,故在各个目标接收端中,可从第一数据的数据头获取上述运算类型,然后按照该运算类型启动当前运算节点,即按按该运算类型对目标数据进行运算,得到多份结果数据,并将多份结果数据结合后返回消息队列,为了便于描述此处将第一个节点运算后的结合的结果记为第一目标结果,以此类推,可将第二次运算后的结果记为第二目标结果、第三次运算后的结果记为第三目标结果等。
[0053] 如上述步骤S7-S9所述,当将第一目标结果返回消息队列后,可再次按上述预设份数将第一目标结果进行分割,得到预设份数的第一结果数据,然后再次轮流将第一结果数据分发到多个目标接收端,此时第一结果数据的数据头中包括数据的类型、来自于上一节点的来源信息等,然后在目标接收端中,根据第一结果数据的数据头查询到对应的数据处理流程图,根据来源信息找到对应的下一个运算节点以及其对应的运算类型,然后启动下一运算节点,按照下一个运算节点的运算类型对第一结果数据进行运算得到多份结果,并在结合后得到第二目标结果,再次返回消息队列,重复上述步骤,迭代计算,直至按照数据处理流程图走完,即按数据处理流程图完成目标数据的运算,得到最终结果。
[0054] 进一步地,在得到对应目标数据的最终结果之后,可将最终结果按指定记录量进行切片,得到多份记录量一样的结果数据,然后发送至消息队列。
[0055] 在一个实施例中,上述步骤S2之前,包括:
[0056] 步骤S11:判断是否接收到对应所述初始数据的输送完毕信息;
[0057] 步骤S12:若接收到输送完毕信息,则触发触发查询所述数据处理流程图的指令;
[0058] 步骤S13:若未接收到输送完毕信息,则依据所述目标数据判断与所述目标数据对应的各运算节点的运算类型是否均为单笔运算,所述单笔运算为针对一条数据的单独运算;
[0059] 步骤S14:若是,则各所述运算节点的运算类型均为所述单笔运算,则触发所述查询所述数据处理流程图的指令。
[0060] 本实施例中,当每个与输入节点对接的外部程序完成数据输送,可通过API发送“数据发送完毕”信息至数据处理系统,以声明本输入节点所有数据已发送完毕,进而驱动系统完成相关操作,故在查询数据处理流程图之前,可判断是否接收到对应初始数据的输送完毕信息,若接收到外部程序发送的数据发送完毕信息,则数据处理系统触发上述查询数据处理流程图的指令,根据该指令对数据处理流程图进行查询,即接着执行上述步骤S2-S9。
[0061] 当没有接收到上述输送完毕信息,这时可先查看目标数据对应的各个运算节点的类型,由于单笔运算为某条数据本身的运算,无需与其他数据连接合并计算,即无需等待其他数据,直接可进入流程进行运算,故先判断目标数据对应的各个运算节点的运算类型是否均为单笔运算,具体而言可根据目标数据的找到对应的数据处理流程图,从而得到该目标数据对应的各个运算节点的类型,当该流程图中各个运算节点的运算类型均为单笔运算,为了提高实时性,这时触发查询数据处理流程图的指令,根据该指令数据处理流程图进行查询,执行上述步骤S2-S7。或者在预设时间后,例如60秒之后再进行判断,即重新判断在这60秒内是否接收到外部程序发出的输送完毕信息,若仍然没有接收到该信息,亦触发查询数据处理流程图的指令,根据该指令数据处理流程图进行查询,执行上述步骤S2-S7,这样可实现数据“随到随算”,大大地提高了数据处理的实时性。
[0062] 在一个实施例中,上述步骤S2包括:
[0063] 步骤S21:依据所述初始数据获取对应所述初始数据的数据类型;
[0064] 步骤S22:调取与所述数据类型对应的预设的数据处理流程图,其中,不同的数据类型对应不同的数据处理流程图;
[0065] 步骤S23:从所述数据处理流程图中找出对应所述初始数据的当前运算节点的运算类型。
[0066] 本实施例中,不同的初始数据对应不同的类型,针对不同类型的初始数据,对应的数据处理流程图不一样,例如第一种类型的初始数据,处理流程依次为单笔运算、降维运算以及归集运算,第二种类型的初始数据,处理流程依次为单笔运算、连接运算以及降维运算。初始数据的数据头中包含有数据类型的信息,故可从中获取到数据的类型,然后根据数据类型从预设数据库中提取对应的数据处理流程图,然后根据数据头中的节点信息在数据流程图中找到当前运算节点,从而得到当前运算节点的运算类型,依据该运算类型配置运算节点,进而对目标数据进行运算。
[0067] 在一个实施例中,已知第一目标结果分为预设份数的第一结果数据,每份第一结果数据包括多条待运算数据,且每份第一结果数据的数据数量一致,当上述当前运算节点为连接运算时,上述步骤S5之前,包括:
[0068] 步骤S51:从各所述待运算数据中获取对应的关联信息,所述关联信息包括第一信息以及与所述第一信息匹配的第二信息,所述第一信息位于数据的起始字段,所述第二信息位于数据的结束字段;
[0069] 步骤S52:按照将所述待运算数据中携带有所述第一信息的起始字段,与另一所述待运算数据中携带有与所述第一信息匹配的所述第二信息的结束字段对接的方式,遍历所有所述待运算数据,得到用于进行连接运算的已连接数据。
[0070] 本实施例中,对于将要进行连接运算的各数据,每条数据均携带有对应的关联信息,具体而言,这些关联信息包括两种信息,分别为第一信息以及与该第一信息匹配的第二信息,其中第一信息位于数据的起始字段,第二信息位于数据结束字段。在进行连接运算之前,首先获取每个待运算数据对应的第一信息、第二信息,值得注意的是同一个待运算数据中的第一信息与第二信息并不匹配,当得到各待运算数据对应的关联信息后,按照某一待运算数据中携带有第一信息的起始字段对接于另一待运算数据中携带有与上述第一信息匹配的第二信息的结束字段的方式,遍历所有待运算数据,也即将第一个待运算数据的起始字段对接于第二个待运算数据的结束字段,其中第一个待运算数据的起始字段携带有第一信息,第二个待运算数据的结束字段携带有与上述第一信息匹配的第二数据,按这样的方式遍历所有待运算数据,得到用于进行连接运算的数据,记为已连接数据,在对已连接数据进行运算,例如,三条数据分别为ABC,A的起始字段具有第一信息a以及结束字段具有第二信息b,B的起始字段具有第一信息b以及结束字段具有第二信息c,C的起始字段具有第一信息c以及结束字段第二信息d,则根据对应的匹配关系,依次将将B的起始字段对接于A的结束字段,将C的起始字段对接于B的结束字段,从而得到已连接数据。
[0071] 在一个实施例中,上述通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型的步骤,包括:
[0072] 步骤S81:通过所述目标接收端从所述第一结果数据中找到所述第一结果数据的数据头,所述数据头包括所述当前运算节点的节点信息,所述节点信息包括所述当前运算节点与上下相邻的运算节点的关系信息;
[0073] 步骤S82:依据所述节点信息从所述数据处理流程图中找到对应所述当前运算节点的下一节点的运算类型。
[0074] 本实施例中,上述找到下一个运算节点的运算类型的具体过程如下,需知每条数据都有数据头,数据头包括该条数据的类型以及运算节点的节点信息,节点信息包括当前运算节点与上下相邻的运算节点的关系信息,如该上一运算节点的来源、类型以及下一节点的类型等,根据上一节点的来源以及类型,可从数据流程图中找到对应的结构框图,以及与该结构框图关联的上下步骤的结构框图,从而得知下一步的运算节点对应的结构框图,也就得到对应的运算类型。
[0075] 在一个实施例中,上述步骤S6之后,包括:
[0076] 步骤S61:判断所述当前运算节点的运算类型是否为连接运算、降维运算以及归集运算中的任一种;
[0077] 步骤S62:若所述运算类型为连接运算、降维运算以及归集运算中的任一种,则判断是否接收到携带有所需数据传输完毕信息的控制信号,所述所需数据为在所述运算节点中按对应的运算类型进行操作时所需要的全部数据中的任一数据,且是运算节点运算后的结果数据;
[0078] 步骤S63:若接收到携带有所需数据传输完毕信息的控制信号,则触发分割数据的指令;
[0079] 步骤S64:若未接收到携带有所需数据传输完毕信息的控制信号,将接收到的所需数据存入内存数据库直到接收所述控制信号,并在接收到所述控制号之后触发分割数据的指令。
[0080] 本实施例中,已知提供的运算类型有四种,分别为单笔运算、连接运算、降维运算以及归集运算,而对于单笔运算,只需针对目标数据本身进行运算即可,但是对于接运算、降维运算以及归集运算则可能需要接收到多条目标数据才开始进行运算,故在运算之前,首先判断当前的运算类型是哪一种,若是连接运算、降维运算以及归集运算中的任一种,则需要知道运算所需的数据是否全部接收完毕,当上一运算节点运算完成之后会将结果返回消息队列,同时会发出控制信号,该控制信号携带有所需数据传输完毕的信息,上述所需数据为运算节点按对应的运算类型进行操作时所需的全部数据,同时也为运算节点运算后的结果数据,当接收到上述控制信号,即说明输送所需数据完毕,可以开始运算操作,但是若没有接收到上述控制信号,即说明所需数据还没输送完毕,这时可以将接收到的所需数据存入内存数据库,如Redis,在没有接收到控制信号之前,将每次接收到的部分所需数据均存入内存数据库中,直到接收到控制信号,然后按步骤S7-S9执行。此处采用内存数据库代替传统的关系数据库,内存数据库的IO性能远高于关系数据库,进一步提高系统运算性能。
[0081] 综上,上述数据处理方法只需要通过外部程序控制数据输入,后续的动作均有消息队列分发的切片数据触发,各运算服务器自行查询流程配置信息控制数据流向并处理,处理完后进行下一轮的切片数据发送,依此迭代进行,整个运算过程所有的数据均从输入节点导入,各环节运算的过程中不允许再从外界查询任何数据,这样不但更加智能化,且可以保证结果完全由输入数据决定,不受外部环境影响,当出现问题时便于查找异常原因。另一方面,运算性能大大地提高,根据目前已实现的Demo粗略估算,完成场内两百万左右的数据的处理过程约20分钟,而传统模式下约需要一个半小时,总体时效与传统模式相比提高了4倍以上,且由于数据随到随算,实时处理,大大提高整体处理效率。
[0082] 参照图2,本发明提供一与上述基于消息队列的数据处理方法对应的基于消息队列的数据处理装置,该基于消息队列的数据处理装置包括:
[0083] 接收数据单元100,用于接收从指定输入节点输入的初始数据;
[0084] 查找类型单元200,用于依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型,并将所述运算类型的信息加入所述初始数据的数据头中得到目标数据;
[0085] 分割数据单元300,用于将所述目标数据按预设份数进行分割,以得到多份第一数据,并放入消息队列;
[0086] 分发数据单元400,用于将多份所述第一数据从所述消息队列中逐份轮流分发至指定个数的目标接收端中;
[0087] 运算数据单元500,用于通过各所述目标接收端依据所述运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据;
[0088] 接收结果单元600,用于接收从所述目标接收端发送的多份结果数据,将多份结果数据结合得到第一目标结果,将所述第一目标结果发至所述消息队列;
[0089] 分割结果单元700,用于将所述消息队列中的所述第一目标结果按所述预设份数分割得到多份第一结果数据,将多份第一结果数据逐份轮流分发至指定个数的目标接收端中;
[0090] 查找结果单元800,用于通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型,并启动所述下一运算节点,以按所述下一运算节点的运算类型对所述第一结果数据进行运算,得到多份下一运算节点运算后的结果数据;
[0091] 运算结果单元900,用于接收从所述目标接收端发送的多份下一运算节点运算后的结果数据,并将多份下一运算节点运算后的结果数据结合得到第二目标结果,将所述第二结果发送至所述消息队列,以此类推,直至按照所述数据处理流程图完成运算所述目标数据。
[0092] 在一个实施例中,上述基于消息队列的数据处理装置还包括:
[0093] 判断数据单元,用于判断是否接收到对应所述初始数据的输送完毕信息;
[0094] 第一触发单元,用于接收到输送完毕信息时,触发查询所述数据处理流程图的指令;
[0095] 判断运算单元,用于未接收到输送完毕信息时,依据所述目标数据判断与所述目标数据对应的各运算节点的运算类型是否均为单笔运算,所述单笔运算为针对一条数据的单独运算;
[0096] 判断接收单元,用于各所述运算节点的运算类型均为所述单笔运算,则触发所述查询所述数据处理流程图的指令。
[0097] 在一个实施例中,上述查找类型单元200包括:
[0098] 获取类型子单元,用于依据所述初始数据获取对应所述初始数据的数据类型;
[0099] 调取流程子单元,用于调取与所述数据类型对应的预设的数据处理流程图,其中,不同的数据类型对应不同的数据处理流程图;
[0100] 找出类型子单元,用于从所述数据处理流程图中找出对应所述初始数据的当前运算节点的运算类型。
[0101] 在一个实施例中,已知第一目标结果分为预设份数的第一结果数据,每份第一结果数据包括多条待运算数据,且每份第一结果数据的数据数量一致,当上述当前运算节点为连接运算时,上述基于消息队列的数据处理装置,还包括:
[0102] 获取信息子单元,用于从各所述待运算数据中获取对应的关联信息,所述关联信息包括第一信息以及与所述第一信息匹配的第二信息,所述第一信息位于数据的起始字段,所述第二信息位于数据的结束字段;
[0103] 连接数据子单元,用于按照将所述待运算数据中携带有所述第一信息的起始字段,与另一所述待运算数据中携带有与所述第一信息匹配的所述第二信息的结束字段对接的方式,遍历所有所述待运算数据,得到用于进行连接运算的已连接数据。
[0104] 在一个实施例中,上述查找结果单元800,包括:
[0105] 查找数头子单元,用于通过所述目标接收端从所述第一结果数据中找到所述第一结果数据的数据头,所述数据头包括所述当前运算节点的节点信息,所述节点信息包括所述当前运算节点与上下相邻的运算节点的关系信息;
[0106] 找到类型子单元,用于依据所述节点信息从所述数据处理流程图中找到对应所述当前运算节点的下一节点的运算类型。
[0107] 在一个实施例中,上述基于消息队列的数据处理装置,还包括:
[0108] 判断类型单元,用于判断所述当前运算节点的运算类型是否为连接运算、降维运算以及归集运算中的任一种;
[0109] 接收信号单元,用于所述运算类型为连接运算、降维运算以及归集运算中的任一种,则判断是否接收到携带有所需数据传输完毕信息的控制信号,所述所需数据为在所述运算节点中按对应的运算类型进行操作时所需要的全部数据中的任一数据,且是运算节点运算后的结果数据;
[0110] 触发分割单元,用于在接收到携带有所需数据传输完毕信息的控制信号时,则触发分割数据的指令;
[0111] 存储数据单元,用于在未接收到携带有所需数据传输完毕信息的控制信号时,将接收到的所需数据存入内存数据库直到接收所述控制信号,并在接收到所述控制号之后触发分割数据的指令。
[0112] 参照图3,本发明实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储上述数据处理所需的所有数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于消息队列的数据处理方法。
[0113] 上述处理器执行上述基于消息队列的数据处理方法的步骤:接收从指定输入节点输入的初始数据;依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型,并将所述运算类型的信息加入所述初始数据的数据头中得到目标数据;将所述目标数据按预设份数进行分割,以得到多份第一数据,并放入消息队列;将多份所述第一数据从所述消息队列中逐份轮流分发至指定个数的目标接收端中;通过各所述目标接收端依据所述运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据;接收从所述目标接收端发送的多份结果数据,将多份结果数据结合得到第一目标结果,将所述第一目标结果发至所述消息队列;将所述消息队列中的所述第一目标结果按所述预设份数分割得到多份第一结果数据,将多份第一结果数据逐份轮流分发至指定个数的目标接收端中;
通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型,并启动所述下一运算节点,以按所述下一运算节点的运算类型对所述第一结果数据进行运算,得到多份下一运算节点运算后的结果数据;接收从所述目标接收端发送的多份下一运算节点运算后的结果数据,并将多份下一运算节点运算后的结果数据结合得到第二目标结果,将所述第二结果发送至所述消息队列,以此类推,直至按照所述数据处理流程图完成运算所述目标数据。
[0114] 上述计算机设备,上述依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型的步骤之后,包括:判断是否接收到对应所述初始数据的输送完毕信息;若接收到输送完毕信息,则触发查询所述数据处理流程图的指令;若未接收到输送完毕信息,则依据所述目标数据判断与所述目标数据对应的各运算节点的运算类型是否均为单笔运算,所述单笔运算为针对一条数据的单独运算;若各所述运算节点的运算类型均为所述单笔运算,则触发所述查询所述数据处理流程图的指令。
[0115] 在一个实施例中,上述依据所述初始数据查询预设的数据处理流程图以找到对应所述目标数据的当前运算节点的运算类型的步骤,包括:依据所述初始数据获取对应所述初始数据的数据类型;调取与所述数据类型对应的预设的数据处理流程图,其中,不同的数据类型对应不同的数据处理流程图;从所述数据处理流程图中找出对应所述初始数据的当前运算节点的运算类型。
[0116] 在一个实施例中,上述当前运算节点的运算类型为连接运算,每份所述第一结果数据包括多条待运算数据,所述通过各所述目标接收端依据所述数据头中的运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据步骤之前,包括:从各所述待运算数据中获取对应的关联信息,所述包括第一信息以及与所述第一信息匹配的第二信息,所述第一信息位于数据的起始字段,所述第二信息位于数据的结束字段;按照将所述待运算数据中携带有所述第一信息的起始字段,与另一所述待运算数据中携带有与所述第一信息匹配的所述第二信息的结束字段对接的方式,遍历所有所述待运算数据,得到用于进行连接运算的已连接数据。
[0117] 在一个实施例中,上述通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型的步骤,包括:通过所述目标接收端从所述第一结果数据中找到所述第一结果数据的数据头,所述数据头包括所述当前运算节点的节点信息,所述节点信息包括所述当前运算节点与上下相邻的运算节点的关系信息;依据所述节点信息从所述数据处理流程图中找到对应所述当前运算节点的下一节点的运算类型。
[0118] 在一个实施例中,上述接收从所述目标接收端发送的多份结果数据,将多份结果结合得到第一目标结果,将所述第一目标结果发至所述消息队列的步骤之后,包括:判断所述当前运算节点的运算类型是否为连接运算、降维运算以及归集运算中的任一种;若所述运算类型为连接运算、降维运算以及归集运算中的任一种,则判断是否接收到携带有所需数据传输完毕信息的控制信号,所述所需数据为在所述运算节点中按对应的运算类型进行操作时所需要的全部数据中的任一数据,且是运算节点运算后的结果数据;若接收到携带有所需数据传输完毕信息的控制信号,则触发分割数据的指令;若未接收到携带有所需数据传输完毕信息的控制信号,将接收到的所需数据存入内存数据库直到接收所述控制信号,并在接收到所述控制号之后触发分割数据的指令。
[0119] 本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
[0120] 本发明一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种基于消息队列的数据处理方法,具体为:接收从指定输入节点输入的初始数据;依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型,并将所述运算类型的信息加入所述初始数据的数据头中得到目标数据;将所述目标数据按预设份数进行分割,以得到多份第一数据,并放入消息队列;将多份所述第一数据从所述消息队列中逐份轮流分发至指定个数的目标接收端中;通过各所述目标接收端依据所述运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据;接收从所述目标接收端发送的多份结果数据,将多份结果数据结合得到第一目标结果,将所述第一目标结果发至所述消息队列;将所述消息队列中的所述第一目标结果按所述预设份数分割得到多份第一结果数据,将多份第一结果数据逐份轮流分发至指定个数的目标接收端中;通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型,并启动所述下一运算节点,以按所述下一运算节点的运算类型对所述第一结果数据进行运算,得到多份下一运算节点运算后的结果数据;接收从所述目标接收端发送的多份下一运算节点运算后的结果数据,并将多份下一运算节点运算后的结果数据结合得到第二目标结果,将所述第二结果发送至所述消息队列,以此类推,直至按照所述数据处理流程图完成运算所述目标数据。
[0121] 上述计算机可读存储介质,上述依据所述初始数据查询预设的数据处理流程图以找到对应所述初始数据的当前运算节点的运算类型的步骤之后,包括:判断是否接收到对应所述初始数据的输送完毕信息;若接收到输送完毕信息,则触发查询所述数据处理流程图的指令;若未接收到输送完毕信息,则依据所述目标数据判断与所述目标数据对应的各运算节点的运算类型是否均为单笔运算,所述单笔运算为针对一条数据的单独运算;若各所述运算节点的运算类型均为单笔运算,则触发所述查询所述数据处理流程图的指令。
[0122] 在一个实施例中,上述依据所述初始数据查询预设的数据处理流程图以找到对应所述目标数据的当前运算节点的运算类型的步骤,包括:依据所述初始数据获取对应所述初始数据的数据类型;调取与所述数据类型对应的预设的数据处理流程图,其中,不同的数据类型对应不同的数据处理流程图;从所述数据处理流程图中找出对应所述初始数据的当前运算节点的运算类型。
[0123] 在一个实施例中,上述当前运算节点的运算类型为连接运算,每份所述第一结果数据包括多条待运算数据,所述通过各所述目标接收端依据所述数据头中的运算类型的信息,在所述目标接收端中启动所述当前运算节点,并按所述当前运算节点的运算类型对所述第一数据进行运算得到多份结果数据步骤之前,包括:从各所述待运算数据中获取对应的关联信息,所述包括第一信息以及与所述第一信息匹配的第二信息,所述第一信息位于数据的起始字段,所述第二信息位于数据的结束字段;按照将所述待运算数据中携带有所述第一信息的起始字段,与另一所述待运算数据中携带有与所述第一信息匹配的所述第二信息的结束字段对接的方式,遍历所有所述待运算数据,得到用于进行连接运算的已连接数据。
[0124] 在一个实施例中,上述通过所述目标接收端依据所述第一结果数据查询所述数据处理流程图,以找到对应所述目标数据的下一运算节点的运算类型的步骤,包括:通过所述目标接收端从所述第一结果数据中找到所述第一结果数据的数据头,所述数据头包括所述当前运算节点的节点信息,所述节点信息包括所述当前运算节点与上下相邻的运算节点的关系信息;依据所述节点信息从所述数据处理流程图中找到对应所述当前运算节点的下一节点的运算类型。
[0125] 在一个实施例中,上述接收从所述目标接收端发送的多份结果数据,将多份结果结合得到第一目标结果,将所述第一目标结果发至所述消息队列的步骤之后,包括:判断所述当前运算节点的运算类型是否为连接运算、降维运算以及归集运算中的任一种;若所述运算类型为连接运算、降维运算以及归集运算中的任一种,则判断是否接收到携带有所需数据传输完毕信息的控制信号,所述所需数据为在所述运算节点中按对应的运算类型进行操作时所需要的全部数据中的任一数据,且是运算节点运算后的结果数据;若接收到携带有所需数据传输完毕信息的控制信号,则触发分割数据的指令;若未接收到携带有所需数据传输完毕信息的控制信号,将接收到的所需数据存入内存数据库直到接收所述控制信号,并在接收到所述控制号之后触发分割数据的指令。
[0126] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM一多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0127] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
[0128] 以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈