一种流数据处理中乱序纠正方法及系统与流程

文档序号:14879609发布日期:2018-07-07 09:22阅读:239来源:国知局

本发明属于数据管理领域,更具体地,涉及一种流数据处理中乱序纠正方法及系统。



背景技术:

随着大数据时代的到来,人们开始越来越多关注从大数据中提取有用信息。而其中流数据处理方法逐渐成为研究焦点。流数据是指由大量数据源持续生成的数据,通常以数据记录的形式发送。流数据包括多种数据,如客户使用移动或web应用程序生成的日志文件、网购数据、游戏内玩家活动、社交网站信息、金融交易大厅或地理空间服务,以及来自数据中心内所连接的设备或仪器的遥测数据等。

对流数据的处理,现阶段主要通过大规模的分布式并行计算单元进行处理从而使得流数据处理系统具有高通量、高可用性和水平扩展等性能。其核心思想为假设每次到达的数据包之间不存在任何依赖的前提下,将数据包的处理任务均匀分布到各个计算节点实现,各节点之间不考虑待处理的数据包之间的前后顺序。在大量数据包输入的情况下,各节点之间的处理负荷无法实现平衡,会导致最终处理结果乱序输出的问题。

对于这一问题,流数据处理中的乱序纠正通常采用在处理完成以后设置重整窗口对处理结果按到达时间重新排序来进行纠正。但这种方法存在两个局限性,一方面,排序区间依赖于窗口大小,当乱序程度超出窗口大小的极限时无法纠正;另一方面,由于需要在窗口填满后进行缓存和排序然后输出,使得原本连续输出的处理结果的变成离散化批处理输出,无法保证后续处理的连续性。



技术实现要素:

为克服上述对流数据处理中的乱序纠正方法对高程度的乱序无法纠正,且使处理结果的输出离散化的问题或者至少部分地解决上述问题,本发明提供了一种流数据处理中乱序纠正方法及系统。

根据本发明的第一方面,提供一种流数据处理中乱序纠正方法,包括:

s1,将流数据的输出端的同步指针指向所述目标流数据的时间戳,获取所述目标流数据经过处理后的第一处理结果;

s2,若所述流数据输出端的扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳不相同,则判断所述第二处理结果与所述第一处理结果是否相同;其中,所述第二处理结果位于所述扫描窗口的最前方;

s3,若所述第二处理结果与所述第一处理结果不相同,则重复执行对所述目标流数据进行所述处理和所述步骤s2,直到所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,或者所述第二处理结果与所述第一处理结果相同,输出所述第二处理结果,同时更新所述流数据输出端的同步指针。

具体地,所述步骤s1之前包括:

当目标流数据通过预先创建的普通数据通道时,对所述目标流数据进行解析和传输。

具体地,所述步骤s3具体包括:

若所述第二处理结果与所述第一处理结果不相同,则通过预先创建的信号通道通知数据发送端通过预先创建的重传通道将所述目标流数据重新发送,以对重新发送的所述目标流数据进行处理。

具体地,所述重传数据通道的优先级高于所述普通数据通道的优先级;所述信号通道的优先级高于所述重传数据通道的优先级。

具体地,所述步骤s3还包括:

若在预设时长内没有输出所述第二处理结果,则获知所述第一处理结果丢失。

具体地,所述步骤s2还包括:

若所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,则直接将所述第二处理结果输出,同时更新流数据输入端和所述流数据输出端的同步指针。

具体地,所述步骤s3还包括:

若所述第二处理结果与所述第一处理结果相同,则直接将所述第二处理结果输出,同时更新流数据输入端和所述流数据输出端的同步指针。

具体地,所述步骤s3中更新流数据输入端和所述流数据输出端的同步指针的步骤具体包括:

若下一个流数据的时间戳对应的时间在流数据输入端的同步指针指向的时间戳之前,则获知所述下一个流数据已被处理过;其中,所述流数据输入端的同步指针指向的时间戳为所述目标流数据的时间戳;或者,

若下一个流数据的时间戳对应的时间在流数据输入端的同步指针指向的时间戳之后,则将所述流数据输入端和所述流数据输出端的同步指针指向所述下一个流数据的时间戳。

根据本发明的第二方面,提供一种流数据处理中乱序纠正系统,包括:

获取单元,用于将流数据的输出端的同步指针指向所述目标流数据的时间戳,获取所述目标流数据经过处理后的第一处理结果;

判断单元,用于在所述流数据输出端的扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳不相同时,判断所述第二处理结果与所述第一处理结果是否相同;其中,所述第二处理结果位于所述扫描窗口的最前方;

重复单元,用于在所述第二处理结果与所述第一处理结果不相同时,则重复执行上述处理和判断操作,直到所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,或者所述第二处理结果与所述第一处理结果相同,输出所述第二处理结果,同时更新所述流数据输出端的同步指针。

根据本发明的第三方面,提供一种非暂态计算机可读存储介质,用于存储如前所述方法的计算机程序。

本发明提供一种流数据处理中乱序纠正方法及系统,该方法通过在流数据输入端和流数据输出端创建同步指针,所述同步指针指向每次输入的流数据的时间戳,当流数据的处理结果出现乱序时,重新对流数据进行处理直到处理结果正常或乱序的处理结果为正确的处理结果,然后将正确的处理结果输出,从而保证流数据处理结果的连续性和正确性。

附图说明

图1为本发明实施例提供的流数据处理中乱序纠正方法整体流程示意图;

图2为本发明实施例提供的流数据处理中乱序纠正方法中乱序纠正模型整体结构示意图;

图3为本发明实施例提供的流数据处理中乱序纠正系统整体结构示意图;

图4为本发明实施例提供的流数据处理中乱序纠正设备整体结构示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

在本发明的一个实施例中提供一种流数据处理中乱序纠正方法,图1为本发明实施例提供的流数据处理中乱序纠正方法整体流程示意图,该方法包括:s1,将流数据的输出端的同步指针指向所述目标流数据的时间戳,获取所述目标流数据经过处理后的第一处理结果;s2,若所述流数据输出端的扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳不相同,则判断所述第二处理结果与所述第一处理结果是否相同;其中,所述第二处理结果位于所述扫描窗口的最前方;s3,若所述第二处理结果与所述第一处理结果不相同,则重复执行对所述目标流数据进行所述处理和所述步骤s2,直到所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,或者所述第二处理结果与所述第一处理结果相同,输出所述第二处理结果,同时更新所述流数据输出端的同步指针。

具体地,s1中,所述目标流数据为需要进行处理的流数据。使用流处理系统对所述目标流数据进行处理获取第一处理结果。本实施例不限于对所述目标流数据进行处理的方式,即不限于所述流处理系统的种类。在所述流数据输入端和所述流数据输出端建立同步指针。所述流数据输入端为流数据的输入入口,所述流数据输出端为流数据的输出出口。所述同步指针用于保证所述流数据输入端流数据输入顺序与所述流数据输出端所述流数据对应的处理结果的输出顺序相同。将所述流数据输入端和所述流数据输出端的同步指针初始化为首个输入的流数据的时间戳。当新的流数据输入时,所述流数据输入端和所述流数据输出端的同步指针重新指向所述新的流数据的时间戳。当目标流数据输入时,所述流数据输入端和所述流数据输出端的同步指针指向所述目标流数据的时间戳。由于所述流处理系统基于时间敏感网络,所述目标流数据在所述流处理系统中的时间戳相同。

s2,在对所述目标流数据进行处理后,判断目标流数据处理是否乱序。具体获取流数据输出端的扫描窗口中的第二处理结果的时间戳,判断所述第二处理结果的时间戳与所述流数据输出端的同步指针所指向的时间戳是否相同,若不相同,则说明目标流数据处理结果乱序;若相同,则说明目标流数据处理结果正常。在目标流数据处理结果乱序的情况下,可以直接重新传入所述目标流数据,重新对所述目标流数据进行处理以获取正常的处理结果,或者继续判断所述第二处理结果和所述第一处理结果是否相同。

s3中,若所述第二处理结果与所述第一处理结果不相同,则重新对所述目标流数据进行重传。在所述流数据输入端保存一个小时间段的输入缓存,所述输入缓存用于在处理结果乱序的情况下对所述目标流数据进行重传。然后重复对重传的所述目标流数据进行处理,判断所述目标流数据的处理结果是否乱序,以及乱序的处理结果与正常的处理结果是否相同,直到所述目标流数据的处理结果正常,或乱序的处理结果与正常的处理结果相同,输出正确的处理结果。在输出正确的处理结果的同时,将所述流数据输入端和所述流数据输出端的同步指针更新到下一个流数据的时间戳。

本实施例通过在流数据输入端和流数据输出端创建同步指针,所述同步指针指向每次输入的流数据的时间戳,当流数据的处理结果出现乱序时,重新对流数据进行处理直到处理结果正常或乱序的处理结果为正确的处理结果,然后将正确的处理结果输出,从而保证流数据处理结果的连续性和正确性。

在上述实施例的基础上,本实施例中所述步骤s1之前包括:当目标流数据通过预先创建的普通数据通道时,对所述目标流数据进行解析和传输。

具体地,使用时间敏感网络特性,建立不同的数据通道,即普通数据通道、重传数据通道和信号通道。其中,所述普通数据通道主要用于对流数据和正常的处理结果进行传输,所述重传数据通道用于乱序处理结果的重传,所述信号通道用于流数据输出端和数据发送端之间的信号传输,所述数据发送端用于在目标流数据的处理结果乱序时,重新发送所述目标流数据。在数据通道建立完成后,当目标流数据通过所述普通数据通道时,对所述目标流数据进行解析和传输。然后通过流处理系统进行处理。

在上述实施例的基础上,本实施例中所述步骤s3具体包括:若所述第二处理结果与所述第一处理结果不相同,则通过预先创建的信号通道通知数据发送端通过预先创建的重传通道将所述目标流数据重新发送,以对重新发送的所述目标流数据进行处理。

具体地,如图2所示,假设1、2、3和4为各流数据的时间戳,所述目标流数据的时间戳为1,所述流数据输出端的同步指针指向的时间戳为1。由于所述扫描窗口中最前方的第二处理结果的时间戳为1,与所述流数据输出端的同步指针指向的时间戳相同,处理结果正常。所述目标流数据第一次通过常规接口输入所述流处理系统,重新传入的所述目标流数据通过重传接口传入所述流处理系统。

在上述实施例的基础上,本实施例中所述重传数据通道的优先级高于所述普通数据通道的优先级;所述信号通道的优先级高于所述重传数据通道的优先级。

具体地,优先级高的通道能优先传输数据,即优先级最高的所述信号通道比所述重传数据通道优先传输信号,所述重传数据通道比所述普通数据通道优先传输数据。

在上述各实施例的基础上,所述步骤s3还包括:若在预设时长内没有输出所述第二处理结果,则获知所述第一处理结果丢失。

在上述各实施例的基础上,本实施例中所述步骤s2还包括:若所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,则直接将所述第二处理结果输出,同时更新流数据输入端和所述流数据输出端的同步指针。

具体地,若所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,则说明所述目标流数据处理结果正常,所述第二处理结果即为所述第一处理结果,直接将所述第二处理结果进行输出,减少处理结果的输出延迟。

在上述各实施例的基础上,本实施例中所述步骤s3还包括:若所述第二处理结果与所述第一处理结果相同,则直接将所述第二处理结果输出,同时更新流数据输入端和所述流数据输出端的同步指针。

具体地,虽然所述第二处理结果与所述目标流数据的时间戳不相同,即所述目标流数据的处理结果乱序,但如果乱序的处理结果与正常的处理结果相同,则直接将所述乱序的处理结果输出,从而保证在处理结果乱序的情况下,输出正确的处理结果,减少处理结果的输出延迟。

在上述各实施例的基础上,本实施例中所述步骤s3中更新流数据输入端和所述流数据输出端的同步指针的步骤具体包括:若下一个流数据的时间戳对应的时间在流数据输入端的同步指针指向的时间戳之前,则获知所述下一个流数据已被处理过;其中,所述流数据输入端的同步指针指向的时间戳为所述目标流数据的时间戳;或者,若下一个流数据的时间戳对应的时间在流数据输入端的同步指针指向的时间戳之后,则将流数据输入端和所述流数据输出端的同步指针指向所述下一个流数据的时间戳。

具体地,对已被处理过的下一个流数据不再进行处理。若下一个流数据没有被处理过,则将所述流数据输入端和所述流数据输出端的同步指针指向所述下一个流数据的时间戳,以对所述下一个流数据进行处理和处理结果的乱序纠正。

在本发明的另一个实施例中提供一种流数据处理中乱序纠正系统,图3为本发明实施例提供的流数据处理中乱序纠正系统整体结构示意图,该系统包括获取单元1、判断单元2和重复单元3,其中:

所述获取单元1用于将流数据的输出端的同步指针指向所述目标流数据的时间戳,获取所述目标流数据经过处理后的第一处理结果;所述判断单元2用于在所述流数据输出端的扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳不相同时,判断所述第二处理结果与所述第一处理结果是否相同;其中,所述第二处理结果位于所述扫描窗口的最前方;所述重复单元3用于在所述第二处理结果与所述第一处理结果不相同时,则重复执行上述处理和判断操作,直到所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,或者所述第二处理结果与所述第一处理结果相同,输出所述第二处理结果,同时更新所述流数据输出端的同步指针。

具体地,所述目标流数据为需要进行处理的流数据。所述获取单元1使用流处理系统对所述目标流数据进行处理获取第一处理结果。本实施例不限于对所述目标流数据进行处理的方式,即不限于所述流处理系统的种类。在所述流数据输入端和所述流数据输出端建立同步指针。所述流数据输入端为流数据的输入入口,所述流数据输出端为流数据的输出出口。所述同步指针用于保证所述流数据输入端流数据输入顺序与所述流数据输出端所述流数据对应的处理结果的输出顺序相同。将所述流数据输入端和所述流数据输出端的同步指针初始化为首个输入的流数据的时间戳。当新的流数据输入时,所述流数据输入端和所述流数据输出端的同步指针重新指向所述新的流数据的时间戳。当目标流数据输入时,所述流数据输入端和所述流数据输出端的同步指针指向所述目标流数据的时间戳。由于所述流处理系统基于时间敏感网络,所述目标流数据在所述流处理系统中的时间戳相同。

在对所述目标流数据进行处理后,所述判断单元2判断目标流数据处理是否乱序。具体获取流数据输出端的扫描窗口中的第二处理结果的时间戳,判断所述第二处理结果的时间戳与所述流数据输出端的同步指针所指向的时间戳是否相同,若不相同,则说明目标流数据处理结果乱序;若相同,则说明目标流数据处理结果正常。在目标流数据处理结果乱序的情况下,可以直接重新传入所述目标流数据,重新对所述目标流数据进行处理以获取正常的处理结果,或者继续判断所述第二处理结果和所述第一处理结果是否相同。

若所述第二处理结果与所述第一处理结果不相同,则所述重复单元3重新对所述目标流数据进行重传。在所述流数据输入端保存一个小时间段的输入缓存,所述输入缓存用于在处理结果乱序的情况下对所述目标流数据进行重传。然后重复对重传的所述目标流数据进行处理,判断所述目标流数据的处理结果是否乱序,以及乱序的处理结果与正常的处理结果是否相同,直到所述目标流数据的处理结果正常,或乱序的处理结果与正常的处理结果相同,输出正确的处理结果。在输出正确的处理结果的同时,将所述流数据输入端和所述流数据输出端的同步指针更新到下一个流数据的时间戳。

本实施例通过在流数据输入端和流数据输出端创建同步指针,所述同步指针指向每次输入的流数据的时间戳,当流数据的处理结果出现乱序时,重新对流数据进行处理直到处理结果正常或乱序的处理结果为正确的处理结果,然后将正确的处理结果输出,从而保证流数据处理结果的连续性和正确性。

在上述实施例的基础上,本实施例中还包括解析单元,用于当目标流数据通过预先创建的普通数据通道时,对所述目标流数据进行解析和传输。

在上述实施例的基础上,本实施例中所述重复单元具体用于:在所述第二处理结果与所述第一处理结果不相同时,通过预先创建的信号通道通知数据发送端通过预先创建的重传通道将所述目标流数据重新发送,以对重新发送的所述目标流数据进行处理。

在上述各实施例的基础上,本实施例中所述重传数据通道的优先级高于所述普通数据通道的优先级;所述信号通道的优先级高于所述重传数据通道的优先级。

在上述各实施例的基础上,本实施例中所述重复单元还用于:若在预设时长内没有输出所述第二处理结果,则获知所述第一处理结果丢失。

在上述各实施例的基础上,本实施例中所述判断单元还用于:若所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,则直接将所述第二处理结果输出,同时更新流数据输入端和所述流数据输出端的同步指针。

在上述各实施例的基础上,本实施例中所述重复单元还用于:若所述第二处理结果与所述第一处理结果相同,则直接将所述第二处理结果输出,同时更新流数据输入端和所述流数据输出端的同步指针。

在上述各实施例的基础上,本实施例中所述重复单元进一步具体用于:

在下一个流数据的时间戳对应的时间在流数据输入端的同步指针指向的时间戳之前时,获知所述下一个流数据已被处理过;其中,所述流数据输入端的同步指针指向的时间戳为所述目标流数据的时间戳;或者,在下一个流数据的时间戳对应的时间在流数据输入端的同步指针指向的时间戳之后时,将所述流数据输入端和所述流数据输出端的同步指针指向所述下一个流数据的时间戳。

本实施例提供一种流数据处理中乱序纠正设备,图4为本发明实施例提供的流数据处理中乱序纠正设备整体结构示意图,该设备包括:至少一个处理器41、至少一个存储器42和总线43;其中,

所述处理器41和存储器42通过所述总线43完成相互间的通信;

所述存储器42存储有可被所述处理器41执行的程序指令,所述处理器调用所述程序指令能够执行上述各方法实施例所提供的方法,例如包括:s1,将流数据的输出端的同步指针指向所述目标流数据的时间戳,获取所述目标流数据经过处理后的第一处理结果;s2,若所述流数据输出端的扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳不相同,则判断所述第二处理结果与所述第一处理结果是否相同;其中,所述第二处理结果位于所述扫描窗口的最前方;s3,若所述第二处理结果与所述第一处理结果不相同,则重复执行对所述目标流数据进行所述处理和所述步骤s2,直到所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,或者所述第二处理结果与所述第一处理结果相同,输出所述第二处理结果,同时更新所述流数据输出端的同步指针。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:s1,将流数据的输出端的同步指针指向所述目标流数据的时间戳,获取所述目标流数据经过处理后的第一处理结果;s2,若所述流数据输出端的扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳不相同,则判断所述第二处理结果与所述第一处理结果是否相同;其中,所述第二处理结果位于所述扫描窗口的最前方;s3,若所述第二处理结果与所述第一处理结果不相同,则重复执行对所述目标流数据进行所述处理和所述步骤s2,直到所述扫描窗口中第二处理结果的时间戳与所述流数据输出端的同步指针指向的时间戳相同,或者所述第二处理结果与所述第一处理结果相同,输出所述第二处理结果,同时更新所述流数据输出端的同步指针。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的流数据处理中乱序纠正设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1