一种流式分发记录的保存方法、装置及电子设备
技术领域
本说明书涉及软件技术领域,特别涉及一种流式分发记录的保存方法、装置及电子设备。
背景技术
随着大数据时代的到来,对大数据流的流式处理要求越来越高。所谓流式处理就是指源源不断的数据流过系统时,系统能够不停地连续计算,比如根据淘宝交易订单日志,通过订单日志连续不断的计算当日淘宝订单量的计算过程叫流式数据处理过程。
在流式数据处理中,某些特定场景中数据需要保证源头数据连续的处理,否则会导致计算结果不正确的情况出现。在这种情况下,需要检查上一个源头数据是否已被所有的数据处理节点都处理完成,当所有处理节点都处理完成后再分发处理下一个源头数据,以保证源头数据顺序消费。为了保证源头数据被所有数据处理节点处理完成,需要对源头数据的流式数据分发记录进行保存并校验,当分发记录对应的所有数据都处理完时确认源头数据已被所有数据处理节点处理完成。数据分发记录的保存方式将直接影响到流失数据处理的实效性,需要一种高效的流式数据分发记录的保存方法,来提升流式数据处理的实效性。
发明内容
本说明书实施例提供一种流式分发记录的保存方法、装置及电子设备,用于减少保存流式数据分发记录所需的每秒事务处理量,来提升流式数据处理的实效性。
第一方面,本说明书实施例提供一种流式分发记录的保存方法,所述方法包括:
在采集到源头数据时,生成标识源头数据的第一标识,并将所述第一标识写入目录的根目录中;
在将所述源头数据分发至第一级处理节点前,对待分发至第一级处理节点的每一份所述源头数据生成一个第二标识,将每一个所述第二标识写入所述根目录的下一级子目录中;
在将任一级处理节点中的目标节点处理后的数据分发至下一级处理节点前,对待分发至下一级处理节点的每一份处理后的数据生成一个第三标识,将每一个所述第三标识写入被所述目标节点处理的数据所在目录的下一级子目录中。
可选的,所述方法还包括:
在每一级个处理节点中的每个处理节点处理完分发到的数据后,根据所述目录链查找被处理的数据对应的标识下是否存在子目录;
若所述被处理的数据对应标识下不存在子目录,删除所述被处理数据对应的标识所在的目录。
可选的,所述方法还包括:
在将所述目标节点处理后的数据分发至下一级处理节点时,将被所述目标节点处理的数据的标识、待分发的数据的标识及其对应的处理后的数据,分发至下一级处理节点。
可选的,所述方法还包括:
在任一处理节点处理数据出错后,获得出错处理节点的上级处理节点处理后的目标数据及所述目标数据对应的目标标识;
对所述目标数据进行重新处理,并根据所述目标标识下的子目录重新分发处理后的所述目标数据。
第二方面、本说明书实施例提供一种流式分发记录的保存装置,所述装置包括:
第一存储单元,用于在采集到源头数据时,生成标识源头数据的第一标识,并将所述第一标识写入目录的根目录中;
第二存储单元,用于在将所述源头数据分发至第一级处理节点前,对待分发至第一级处理节点的每一份所述源头数据生成一个第二标识,将每一个所述第二标识写入所述根目录的下一级子目录中;
第三存储单元,用于在将任一级处理节点中的目标节点处理后的数据分发至下一级处理节点前,对待分发至下一级处理节点的每一份处理后的数据生成一个第三标识,将每一个所述第三标识写入被所述目标节点处理的数据所在目录的下一级子目录中。
可选的,所述装置还包括:
查找单元,用于在每一级个处理节点中的每个处理节点处理完分发到的数据后,根据所述目录链查找被处理的数据对应的标识下是否存在子目录;
删除单元,用于在所述被处理的数据对应标识下不存在子目录的情况下,删除所述被处理数据对应的标识所在的目录。
可选的,所述装置还包括:
分发单元,用于在将所述目标节点处理后的数据分发至下一级处理节点时,将被所述目标节点处理的数据的标识、待分发的数据的标识及其对应的处理后的数据,分发至下一级处理节点。
可选的,所述装置还包括:
检错单元,用于在任一处理节点处理数据出错后,获得出错处理节点的上级处理节点处理后的目标数据及所述目标数据对应的目标标识;对所述目标数据进行重新处理,并根据所述目标标识下的子目录重新分发处理后的所述目标数据。
第三方面、本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
在采集到源头数据时,生成标识源头数据的第一标识,并将所述第一标识写入目录的根目录中;
在将所述源头数据分发至第一级处理节点前,对待分发至第一级处理节点的每一份所述源头数据生成一个第二标识,将每一个所述第二标识写入所述根目录的下一级子目录中;
在将任一级处理节点中的目标节点处理后的数据分发至下一级处理节点前,对待分发至下一级处理节点的每一份处理后的数据生成一个第三标识,将每一个所述第三标识写入被所述目标节点处理的数据所在目录的下一级子目录中。
第四方面、本说明书实施例还提供一种电子设备,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
在采集到源头数据时,生成标识源头数据的第一标识,并将所述第一标识写入目录的根目录中;
在将所述源头数据分发至第一级处理节点前,对待分发至第一级处理节点的每一份所述源头数据生成一个第二标识,将每一个所述第二标识写入所述根目录的下一级子目录中;
在将任一级处理节点中的目标节点处理后的数据分发至下一级处理节点前,对待分发至下一级处理节点的每一份处理后的数据生成一个第三标识,将每一个所述第三标识写入被所述目标节点处理的数据所在目录的下一级子目录中。
本说明书实施例中的上述一个或多个技术方案,至少具有如下技术效果:
本说明书实施例提供一种流式分发记录的保存方法,在采集到源头数据时,生成标识源头数据的第一标识,并将所述第一标识写入目录链的根目录中;在将源头数据分发至第一级处理节点前,对待分发至第一级处理节点的每一份所述源头数据生成一个第二标识,将每一个第二标识写入根目录的下一级子目录中;在将任一级处理节点中的目标节点处理后的数据分发至下一级处理节点前,对待分发至下一级处理节点的每一份处理后的数据生成一个第三标识,将每一个第三标识写入被目标节点处理的数据所在目录的下一级子目录中。通过目录的方式来保存流式数据分发记录及各分发记录之间的从属关系,减少了存储时存储项,进而减少了保存流式数据分发记录所需的每秒处理事务量,达到提升流式数据处理实效性的有益效果。
附图说明
为了更清楚地说明本说明书实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的一种流式数据处理的过程示意图;
图2为本说明书实施例提供的一种流式分发记录的保存方法的流程图;
图3为本说明书实施例提供的一种流式分发记录保存目录的示意图;
图4为本说明书实施例提供的一种流式分发记录的保存装置示意图;
图5为本说明书实施例提供的一种电子设备的示意图。
具体实施方式
为使本说明书实施例的目的、技术方案和优点更加清楚,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
在本说明书实施例提供一种流式分发记录的保存方法、装置及电子设备,用于减少保存流式数据分发记录所需的每秒事务处理量(TransactionPerSecond TPS),来提升流式数据处理的实效性。
下面结合附图对本说明书实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
请参考图1,本说明书实施提供的一种流式数据处理的过程,包括:采集获得源头数据,生成并保存源头数据的标识IDA;根据源头数据的待分发数据保存分发记录;分发源头数据至第一级处理节点;第一级处理节点处理完成后,对待分发的数据保存分发记录;分发数据至第二级处理节点;第二级处理节点处理完后,对待分发的数据保存分发记录,以此类推。
针对流式数据处理过程分发记录的保存,本说明书实施例提供一种流式分发记录的保存方法,请求参考图2,该方法包括:
S21:在采集到源头数据时,生成标识源头数据的第一标识IDA,并将第一标识IDA写入目录的根目录中。
S22:在将源头数据分发至第一级处理节点前,对待分发至第一级处理节点的每一份源头数据生成一个第二标识,将每一个第二标识写入根目录的下一级子目录中。
其中,每一级处理节点中可能包含1~n个处理节点,每一个处理节点下可能包含0~m个下级处理节点。若源头数据要分发至i个第一级处理节点,那么对每一份待分发的数据生成第二标识IDB1~IDBi,将每个第二标识写入根目录的下一级子目录中,形成如IDA/IDB1、IDA/IDB2等目录,如图3所示。
S23:在将任一级处理节点中的目标节点处理后的数据分发至下一级处理节点前,对待分发至下一级处理节点的每一份处理后的数据生成一个第三标识,将每一个第三标识写入被目标节点处理的数据所在目录的下一级子目录中。
具体实施过程中,每一处理节点中有些处理节点处理完后的数据不需要再进行分发处理,有些处理节点处理完成后的数据需要继续进行分发处理,此处将处理后的数据需要进行分发处理的节点成为目标节点。对目标节点处理后的数据在分发至下一级处理节点前,同样对每一个待分发的数据生成唯一标识即第三标识并写入对应子目录中。例如:假设第一级处理节点2处理后的数据需要分发至第二级处理节点21和第二级处理节点22,那么对待分发至第二处理节点21的数据生成唯一标识IDB21,对待分发至第二处理节点22的数据生成唯一标识IDB22,被第一级处理节点2处理的数据的唯一标识为IDB2,那么将IDB21、IDB22写入IDB2所在目录的下一级子目录中,如图3所示。通过目录IDA/IDB2/IDB21、IDA/IDB2/IDB22来保存分发记录。
需要说明的是,每一级处理节点中可能包含一个或多个处理节点,一份待分发的数据可能对应一个或多个标识,每个数据的标识用于唯一标识该数据和该数据分发至的处理节点。例如:源头数据将要分发至第一级处理节点1的待分发数据的第二标识为IDB1,用于标识待分发至第一级处理节点1的数据,与待分发至第一级处理节点2的第二标识IDB2不同。
在每一次完成分发记录保存后进行数据分发。具体的,在将目标节点处理后的数据分发至下一级处理节点时,将被目标节点处理的数据的标识、待分发的数据的标识及其对应的处理后的数据,分发至下一级处理节点。例如:假设第一级处理节点2处理后的数据需要分发至第二级处理节点21和第二级处理节点22时,将第一级处理节点2处理的数据的标识IDB2、待分发至第二级处理节点21的数据的标识IDB21及待分发数据分发至第二级处理节点21,将第一级处理节点2处理的数据的标识IDB2、待分发至第二级处理节点22的数据的标识IDB22及待分发数据分发至第二级处理节点22。
在具体实施过程中,若某一数据节点处理完成后,其处理后的数据不需要再分发或者其分发后的数据已处理完,则进行分发记录的删除,直到最终删除源头数据的第一标识IDA,表明源头数据已被所有处理节点处理完成。具体的,在每一级处理节点中的每个处理节点处理完分发到的数据后,根据目录链查找被处理的数据对应的标识下是否存在子目录;若被处理的数据对应标识下不存在子目录,删除被处理数据对应的标识所在的目录。例如:数据标识IDB21所在的目录下不包含子目录,那么IDB21对应的数据被处理完后,其所在的目录IDA/IDB2/IDB21则被删除。而数据标识IDB23所在的目录下包含子目录IDB231,那么待IDB231被删除后,IDB23下不再有子目录时,删除IDB23所在的目录IDA/IDB2/IDB23,实际在目录链中删除IDB23即完成了目录IDA/IDB2/IDB23的删除,只需一次删除操作简单、快速。同理,对于源头数据的第一标识IDA,检查IDA下是否还有子目录,若IDA下不存在子目录,则删除IDA目录,该源头数据的流失处理完成。
在任一处理节点处理数据出错后,获得出错处理节点的上级处理节点处理后的目标数据及该目标数据对应的目标标识;对目标数据进行重新处理,并根据目标标识下的子目录重新分发处理后的目标数据。例如:对于如图3所示的分发记录,若IDB2所对应的处理节点处理出错,那么获得IDB2的上级目录中的数据标识IDA,将IDA重新分发至IDB2对应的处理节点进行重新处理,并将重新处理后的正确数据重新分发至IDB2对应的所有下级处理节点进行处理。
上述实施例提供的流失分发记录的保存方法,通过目录的形式来保存分发记录,每一次分发记录的保存只需要将对应分发数据的唯一标识写入对应的子目录中,减少了分发记录存储时的存储项如value值,单次分发中对外部存储的需求从5TPS降低到了3TPS,整体性能提高了40%,对于复杂数据处理环境、大数据的流式处理,大大提升了数据处理的实效性。
请参考图4,基于上述实施例提供的一种流式分发记录的保存方法,本说明书实施例还提供一种流式分发记录的保存装置,该装置包括:
第一存储单元41,用于在采集到源头数据时,生成标识源头数据的第一标识,并将所述第一标识写入目录的根目录中;
第二存储单元42,用于在将所述源头数据分发至第一级处理节点前,对待分发至第一级处理节点的每一份所述源头数据生成一个第二标识,将每一个所述第二标识写入所述根目录的下一级子目录中;
第三存储单元43,用于在将任一级处理节点中的目标节点处理后的数据分发至下一级处理节点前,对待分发至下一级处理节点的每一份处理后的数据生成一个第三标识,将每一个所述第三标识写入被所述目标节点处理的数据所在目录的下一级子目录中。
具体实施过程中,所述装置还可以包括以下至少一个程序单元:查找单元44、删除单元45、分发单元46及检错单元47。
其中,查找单元44,用于在每一级个处理节点中的每个处理节点处理完分发到的数据后,根据所述目录链查找被处理的数据对应的标识下是否存在子目录;删除单元45,用于在所述被处理的数据对应标识下不存在子目录的情况下,删除所述被处理数据对应的标识所在的目录。
分发单元46,用于在将所述目标节点处理后的数据分发至下一级处理节点时,将被所述目标节点处理的数据的标识、所述第三标识及其对应的处理后的数据,分发至下一级处理节点。
检错单元47,用于在任一处理节点处理数据出错后,获得出错处理节点的上级处理节点处理后的目标数据及所述目标数据对应的目标标识;对所述目标数据进行重新处理,并根据所述目标标识下的子目录重新分发处理后的所述目标数据。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关方法的实施例中进行了详细描述,此处不再详细阐述。
请参考图5,是根据一示例性实施例示出的一种用于实现数据查询方法的电子设备700的框图。例如,电子设备700可以是计算机,数据库控制台,平板设备,个人数字助理等。
参照图5,电子设备700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,输入/输出(I/O)的接口710,以及通信组件712。
处理组件702通常控制电子设备700的整体操作,诸如与显示,数据通信,及记录操作相关联的操作。处理元件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。
存储器704被配置为存储各种类型的数据以支持在设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件706为电子设备700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。
I/O接口710为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
通信组件712被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件712经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件712还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由电子设备700的处理器720执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得电子设备能够执行一种数据查询方法,所述方法包括:
在采集到源头数据时,生成标识源头数据的第一标识,并将所述第一标识写入目录的根目录中;在将所述源头数据分发至第一级处理节点前,对待分发至第一级处理节点的每一份所述源头数据生成一个第二标识,将每一个所述第二标识写入所述根目录的下一级子目录中;在将任一级处理节点中的目标节点处理后的数据分发至下一级处理节点前,对待分发至下一级处理节点的每一份处理后的数据生成一个第三标识,将每一个所述第三标识写入被所述目标节点处理的数据所在目录的下一级子目录中。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。