掌桥专利:专业的专利平台
掌桥专利
首页

流式计算的处理方法及装置

文献发布时间:2023-06-19 12:10:19


流式计算的处理方法及装置

技术领域

本发明涉及大数据技术领域,尤其涉及一种流式计算的处理方法及装置。

背景技术

本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

目前,大数据应用对时效性的要求越来越高,大数据流式计算应用场景越来越广泛。由于数据源的不稳定性以及网络延迟等原因,使得到达流式计算引擎的数据流存在部分乱序的情况,现有处理乱序数据方法的计算结果不完整性和不准确性,同时效率也低,导致流式计算的处理准确度和效率都低。

发明内容

本发明实施例提供一种流式计算的处理方法,用以高效准确地进行流式计算,该方法包括:

主实时计算引擎计算流式数据,得到流式数据计算结果;在从所述流式数据中识别出乱序数据时,将乱序数据时间戳前后相关的数据信息封装成异步消息;将所述异步消息发送至副实时计算引擎;

副实时计算引擎根据所述异步消息,对乱序数据进行重新计算;根据重新计算的结果,更新所述流式数据计算结果。

本发明实施例还提供一种流式计算的处理装置,用以高效准确地进行流式计算,该装置包括:

主实时计算引擎,用于计算流式数据,得到流式数据计算结果;在从所述流式数据中识别出乱序数据时,将乱序数据时间戳前后相关的数据信息封装成异步消息;将所述异步消息发送至副实时计算引擎;

副实时计算引擎,用于根据所述异步消息,对乱序数据进行重新计算;根据重新计算的结果,更新所述流式数据计算结果。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述流式计算的处理方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述流式计算的处理方法的计算机程序。

本发明实施例中,流式计算的处理方案,通过:主实时计算引擎计算流式数据,得到流式数据计算结果;在从所述流式数据中识别出乱序数据时,将乱序数据时间戳前后相关的数据信息封装成异步消息;将所述异步消息发送至副实时计算引擎;副实时计算引擎根据所述异步消息,对乱序数据进行重新计算;根据重新计算的结果,更新所述流式数据计算结果,实现了既可以通过主、副实时计算引擎的模式来处理迟到的乱序数据,将正常数据和乱序数据并行处理,保证流式计算结果的完整性和准确性;同时,也不会阻塞正常数据流的实时计算,降低延迟,保证整体流式计算的时效性。综上,本发明实施例实现了高效准确地进行流式计算。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中流式计算的处理方法的流程示意图;

图2为本发明另一实施例中流式计算的处理方法的流程示意图;

图3为本发明实施例中封装成异步消息的流程示意图;

图4为本发明实施例中流式计算的处理装置的结构示意图;

图5为本发明另一实施例中流式计算的处理装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

在介绍本发明实施例之前,首先对本发明实施例涉及的名词进行介绍。

1.流式计算:是大数据计算的一种模式,当数据达到处理引擎后立即进行处理,得到计算结果。

2.乱序数据:在流式数据处理中,数据源产生的数据一般都包含时间戳,数据一般都是按照时间顺序到达计算引擎。由于网络延迟等因素造成数据源呈现乱序的状态,如图2所示,图2中的数字代表数据块产生的时间戳,其中时间戳为4的数据块到达数据源延迟了一定的时间,即为本文中所指的乱序数据。

3.异步消息/同步消息:在计算机网络中,当模块A要向模块B发送消息进行通讯时,模块A可以发送同步消息或者异步消息。若模块A向模块B发送同步消息,则模块A需要等待B收到消息后的应答,此时模块A会产生阻塞;若模块A向模块B发送异步消息,则模块A只需要发送出消息即可,不需要等待B的应答即可继续进行别的工作,不会产生阻塞。

发明人发现目前流式计算中处理乱序数据主要有两种方案:

1)直接丢弃乱序数据:这种方案的缺点是计算结果不完整,不准确。

2)阻塞式处理模式:当有乱序数据到达计算引擎时,正常数据流的处理会暂时被阻塞,计算引擎开始处理迟到的乱序数据,更新历史计算结果,处理完成之后才能继续正常数据流的处理。当乱序数据较多时,正常数据流处理会频繁中断,增加整体的延迟时间,数据处理的时效性难以保证。

本发明实施例的目的就是提出一种解决方案,即提出一种流式计算的处理方案,该方案既要保证计算结果的完整性和准确性,又要保证流式计算的时效性。具体地,该方案提出一种主副计算引擎的模式来处理迟到的乱序数据。主计算引擎(主实时计算引擎)负责正常到达的数据流的实时计算;当收到迟到的乱序数据时,将数据信息及对应的计算逻辑封装成异步消息传递给副计算引擎(副实时计算引擎),主计算引擎继续后续到达的数据流的处理。副计算引擎根据收到的异步消息中的数据信息和计算逻辑,对乱序数据进行重新计算,更新主计算引擎的历史结果。该方案既可以处理迟到的乱序数据,保证结果的完整性和准确性;同时不会阻塞正常数据流的实时计算,降低延迟,保证整体的时效性。下面对该流式计算的处理方案进行详细介绍。

图1为本发明实施例中流式计算的处理方法的流程示意图,如图1所示,该方法包括如下步骤:

步骤101:主实时计算引擎计算流式数据,得到流式数据计算结果;在从所述流式数据中识别出乱序数据时,将乱序数据时间戳前后相关的数据信息封装成异步消息;将所述异步消息发送至副实时计算引擎;

步骤102:副实时计算引擎根据所述异步消息,对乱序数据进行重新计算;根据重新计算的结果,更新所述流式数据计算结果。

本发明实施例提供的流式计算的处理方法实现了既可以通过主、副实时计算引擎的模式来处理迟到的乱序数据,保证流式计算结果的完整性和准确性;同时,也不会阻塞正常数据流的实时计算,降低延迟,保证整体流式计算的时效性。综上,本发明实施例实现了高效准确地进行流式计算。下面结合图2至图3对该方法涉及的各个步骤进行详细介绍如下。

如图2所示,本发明实施例中流式计算的处理方法的步骤包括:

步骤1:数据采集,从各数据源采集流式数据。具体实施时,可以通过数据采集模块采集所述流式数据。

步骤2:实时数据消费,主计算引擎从消息队列中拉取数据。

通过上述可知,在一个实施例中,上述流式计算的处理方法还可以包括:

数据采集模块采集所述流式数据;

消息队列存储所述流式数据;

主实时计算引擎计算流式数据,得到流式数据计算结果,包括:主实时计算引擎从消息队列中拉取流式数据,计算流式数据,得到流式数据计算结果。

步骤3.1:实时数据计算,对正常数据流进行实时计算,即上述步骤101中主实时计算引擎计算流式数据,得到流式数据计算结果。

步骤3.2:发送消息,将乱序数据流相关信息封装成消息发送到消息通知模块,即上述步骤101中在从所述流式数据中识别出乱序数据时,将乱序数据时间戳前后相关的数据信息封装成异步消息;将所述异步消息发送至副实时计算引擎,具体地,可以通过消息通知模块将所述异步消息转发至副实时计算引擎。

在一个实施例中,如图3所示,在从所述流式数据中识别出乱序数据时,将乱序数据时间戳前后相关的数据信息封装成异步消息,可以包括:

步骤201:存储当前已处理数据块的时间戳,在后续数据块的时间戳小于当前已处理数据块的时间戳时,识别出所述后续数据块为乱序数据;

步骤202:将乱序数据时间戳前后数据块的位置信息和计算逻辑封装成异步消息;

因此后续副实时计算引擎根据所述异步消息,对乱序数据进行重新计算,可以包括:副实时计算引擎根据乱序数据时间戳前后数据块的位置信息获取乱序数据;根据乱序数据时间戳前后数据块的计算逻辑,对乱序数据进行重新计算。

步骤4:保存步骤3.1中的计算结果,即在一个实施例中,所述的流式计算的处理方法还可以包括:主实时计算引擎将流式数据计算结果存储至一存储模块(如图2中的结果存储模块)。

步骤5:副计算引擎轮询消息通知模块,获取乱序数据计算的消息。

步骤6:副计算引擎从消息队列中拉取相关数据进行重新计算。

通过上述可知,在一个实施例中,副实时计算引擎根据所述异步消息,对乱序数据进行重新计算,可以包括:副实时计算引擎轮询消息通知模块,获取所述异步消息,根据所述异步消息,对乱序数据进行重新计算。

步骤7:副计算引擎更新相关的历史计算结果。

综上,本发明实施例提供的流式计算的处理方法具有以下有益技术效果:

1.迟到的乱序数据得到正确的处理,保证结果的完整性;

2.采用主副计算引擎的方式。主计算引擎负责正常数据流的实时计算,副计算引擎并行处理乱序数据,降低整体的延迟时间,保证流式计算的时效性。

本发明实施例中还提供了一种流式计算的处理装置,如下面的实施例所述。由于该装置解决问题的原理与流式计算的处理方法相似,因此该装置的实施可以参见流式计算的处理方法的实施,重复之处不再赘述。

图4为本发明实施例中流式计算的处理装置的结构示意图,如图4所示,该装置包括:

主实时计算引擎01,用于计算流式数据,得到流式数据计算结果;在从所述流式数据中识别出乱序数据时,将乱序数据时间戳前后相关的数据信息封装成异步消息;将所述异步消息发送至副实时计算引擎;

副实时计算引擎02,用于根据所述异步消息,对乱序数据进行重新计算;根据重新计算的结果,更新所述流式数据计算结果。

在一个实施例中,所述主实时计算引擎具体用于:

存储当前已处理数据块的时间戳,在后续数据块的时间戳小于当前已处理数据块的时间戳时,识别出所述后续数据块为乱序数据;

将乱序数据时间戳前后数据块的位置信息和计算逻辑封装成异步消息;

所述副实时计算引擎具体用于:根据乱序数据时间戳前后数据块的位置信息获取乱序数据;根据乱序数据时间戳前后数据块的计算逻辑,对乱序数据进行重新计算。

在一个实施例中,如图5所示,上述流式计算的处理装置还可以包括:

数据采集模块,用于采集所述流式数据;

消息队列,用于存储所述流式数据;

所述主实时计算引擎具体用于:从消息队列中拉取流式数据,计算流式数据,得到流式数据计算结果。

在一个实施例中,如图5所示,上述流式计算的处理装置还可以包括:消息通知模块,用于将所述异步消息转发至副实时计算引擎。

在一个实施例中,副实时计算引擎具体用于轮询消息通知模块,获取所述异步消息,根据所述异步消息,对乱序数据进行重新计算

在一个实施例中,如图5所示,上述流式计算的处理装置还可以包括:存储模块(结果存储模块),用于存储主实时计算引擎的流式数据计算结果。

为了便于理解本发明提供的流式计算的处理装置如何实施,下面结合图5,对该装置涉及的各个模块再进行详细介绍。

数据采集模块负责源数据的采集。

消息队列负责存储采集的数据,供计算引擎消费,同时存储历史数据。

主实时计算引擎负责实时计算采集到的流式数据,将结果存储到下游模块。对于乱序数据,生成消息通知,推送到消息通知模块。主实时计算引擎负责计算正常到达的数据流,将计算结果写入下游存储。其中关键点有两处:

(1)首先要准确识别出乱序数据。可以采用的做法是保存当前已处理数据块的最新时间戳,后续数据块的时间戳小于该时间戳时,即认定为乱序数据。以图5为例,当计算引擎收到时间戳为4的数据块,此时已处理数据的最新时间戳是8,因此判断该数据块(时间戳为4的数据块)为乱序数据。

(2)将乱序数据信息封装成异步消息。乱序数据需要被重新计算,需要根据计算逻辑筛选出该数据块时间点前后相关的数据信息及计算逻辑,封装成异步消息通知,发送到消息通知模块。以图5为例,时间戳为4的数据块需要重新计算,可能根据计算逻辑,该时间点前后的数据块3和5也需要重新计算,因此需要把时间戳为3/4/5的数据块信息(如数据块在消息队列中的位置,数据计算逻辑等)封装成异步消息,发送到消息通知模块。

消息通知模块负责主引擎(主实时计算引擎)生成的消息通知的存储和转发。

副实时计算引擎轮询消息通知模块,获取主引擎生成的消息通知,根据通知到消息队列拉取相关数据,进行计算,最后更新结果存储模块中的历史结果。具体地,副计算引擎负责乱序数据的计算。该副实时计算引擎要实时轮询消息通知模块以便及时获取消息,根据消息从消息队列中拉取相关数据,重新计算后更新主计算引擎的历史计算结果。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述流式计算的处理方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述流式计算的处理方法的计算机程序。

本发明实施例中,流式计算的处理方案,通过:主实时计算引擎计算流式数据,得到流式数据计算结果;在从所述流式数据中识别出乱序数据时,将乱序数据时间戳前后相关的数据信息封装成异步消息;将所述异步消息发送至副实时计算引擎;副实时计算引擎根据所述异步消息,对乱序数据进行重新计算;根据重新计算的结果,更新所述流式数据计算结果,实现了既可以通过主、副实时计算引擎的模式来处理迟到的乱序数据,将正常数据和乱序数据并行处理,保证流式计算结果的完整性和准确性;同时,也不会阻塞正常数据流的实时计算,降低延迟,保证整体流式计算的时效性。综上,本发明实施例实现了高效准确地进行流式计算。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 流式计算系统及流式计算系统的日志数据处理方法
  • 流式计算系统及流式计算系统的日志数据处理方法
技术分类

06120113195496