数据流处理的方法和装置与流程

文档序号:11156834阅读:374来源:国知局
数据流处理的方法和装置与制造工艺

本发明涉及数据处理技术领域,特别涉及一种数据流处理的方法和装置。



背景技术:

目前,数据流可以应用到很多场景中,例如,数据流可以应用到欺诈监测、精准营销推荐、罪案灾情预测中等。由于数据流对数据处理的及时性要求非常高,因此,接收到数据流时,应立刻通过数据处理任务对数据流进行处理,也即流计算。

在通过数据处理任务对数据流进行处理之前,为数据处理任务分配内存空间和窗口计算算子逻辑,内存空间用于存储该数据处理任务处理的数据流,窗口计算算子逻辑用于对内存空间中的数据流进行处理。例如,数据处理任务为求和运算时,窗口计算算子逻辑就是对内存空间中的数据流进行求和运算。当接收到该数据处理任务对应的数据流时,管理设备将该数据流存储在该数据处理任务的内存空间中,当执行该数据处理任务时,管理设备从该内存空间读取该数据流,通过窗口计算算子逻辑对该数据流进行处理。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

由于多个数据处理任务可能对同一个数据流进行处理,然而在上述技术中会在每个数据处理任务的内存空间都存储该数据流,浪费内存空间,导致空间利用率低。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种数据流处理的方法和装置。技术方案如下:

第一方面,本发明实施例提供了一种数据流处理的方法,所述方法包括:

接收第一数据处理任务的第一数据流,以及,接收第二数据处理任务的第二数据流;

如果所述第一数据流和所述第二数据流相同,在共享内存空间中存储所述第一数据流和所述第二数据流中的任一数据流,将所述任一数据流在所述共享内存空间中的位置索引存储到第一内存空间和第二内存空间中,所述第一内存空间为所述第一数据处理任务的内存空间,所述第二内存空间为所述第二数据处理任务的内存空间;

当执行所述第一数据处理任务或所述第二数据处理任务时,根据所述位置索引,从所述共享内存空间中读取所述任一数据流,根据所述任一数据流执行所述第一数据处理任务或所述第二数据处理任务。

本发明实施例所示的方案中,管理设备接收第一数据流和第二数据流后,如果第一数据流和第二数据流相同,管理设备在共享内存空间中存储第一数据流和第二数据流中的任一数据流,并将该任一数据流在共享内存空间中的位置索引存储到第一内存空间和第二内存空间中,当执行第一数据处理任务或第二数据处理任务时,根据该位置索引,从该共享内存空间中读取第一数据流或者第二数据流。由于共享内存空间中只存储了第一数据流和第二数据流中的任一数据流,避免了相同数据流的重复存储,从而节省了内存空间,提高了内存空间的利用率。

在一种可能的设计中,所述在共享内存空间中存储所述第一数据流和所述第二数据流中的任一数据流之前,所述方法还包括:

当检测到所述第一数据处理任务或者所述第二数据处理任务是当前任务队列的第一个数据处理任务时,创建所述共享内存空间。

本发明实施例所示的方案中,管理设备检测到第一数据处理任务或者第二数据处理任务是当前任务队列的第一个数据处理任务时,才创建共享内存空间,使得该当前任务队列的多个数据处理任务对应一个共享内存空间,节省了内存空间。

在一种可能的设计中,所述根据所述任一数据流执行所述第一数据处理任务或所述第二数据处理任务之后,所述方法还包括:

当检测到所述第一数据处理任务或者所述第二数据处理任务是所述当前任务队列的最后一个数据处理任务,销毁所述共享内存空间。

本发明实施例所示的方案中,管理设备检测到第一数据处理任务或者第二数据处理任务是当前任务队列的最后一个数据处理任务时,便销毁该共享内存空间,提高了共享内存空间的使用率。

在一种可能的设计中,所述在共享内存空间中存储所述第一数据流和所述第二数据流中的任一数据流之前,所述方法还包括:

获取所述第一数据流的第一数据属性和所述第二数据流的第二数据属性;

根据所述第一数据属性,确定所述第一数据属性对应的所述共享内存空间,以及,根据所述第二数据属性,确定所述第二数据属性对应的所述共享内存空间。

本发明实施例所示的方案中,根据第一数据流的第一数据属性,确定第一数据属性对应的共享内存空间,以及,根据第二数据流的第二数据属性,确定第二数据属性对应的共享内存空间,提高了数据属性相同的数据流中相同数据流合并的可能性,进一步提高了共享内存空间的利用率。

在一种可能的设计中,所述如果所述第一数据流和所述第二数据流相同,在共享内存空间中存储所述第一数据流和所述第二数据流中的任一数据流,包括:

将所述第一数据流和所述第二数据流存储到所述共享内存空间中;

当检测到所述第一数据流和所述第二数据流相同时,删除所述第一数据流或者所述第二数据流。

本发明实施例所示的方案中,管理设备先将第一数据流和第二数据流存储到共享内存空间中,然后判断第一数据流和第二数据流是否相同,保证了第一数据处理任务和第二数据处理任务的实时性;如果第一数据流和第二数据流相同,管理设备删除第一数据流或者第二数据流,节省了共享内存空间占用的空间的同时,提高了管理设备执行第一数据处理任务和第二数据处理任务的效率。

在一种可能的设计中,所述方法还包括:

获取所述第一数据流的第一标识和所述第二数据流的第二标识;

如果所述第一标识和所述第二标识相同,确定所述第一数据流和所述第二数据流相同。

本发明实施例所示的方案中,管理设备根据第一数据流的第一标识和第二数据流的第二标识,确定第一数据流和第二数据流是否相同,提高了确定第一数据流和第二数据流是否相同的准确性。

在一种可能的设计中,所述将所述任一数据流在所述共享内存空间中的位置索引存储到第一内存空间和第二内存空间中,包括:

如果删除所述第一数据流,将所述第二数据流在所述共享内存空间中的位置索引存储到所述第一内存空间和所述第二内存空间中;或者,

如果删除所述第二数据流,将所述第一数据流在所述共享内存空间中的位置索引存储到所述第一内存空间和所述第二内存空间中。

本发明实施例所示的方案中,管理设备将未被删除的第二数据流在共享内存空间中的位置索引存储到第一内存空间和第二内存空间中,或者,将未被删除的第一数据流在共享内存空间中的位置索引存储到第一内存空间和第二内存空间中,使得管理设备执行第一数据处理任务或者第二数据处理任务时,仍能够根据该位置索引读取该第一数据流或者第二数据流,提高了管理设备执行第一数据处理任务或者第二数据处理任务的准确性。

在一种可能的设计中,所述将所述任一数据流在所述共享内存空间中的位置索引存储到第一内存空间和第二内存空间中之后,所述方法还包括:

将所述位置索引的当前引用状态修改为被所述第一数据处理任务和所述第二数据处理任务引用;

当所述当前引用状态为无数据处理任务引用时,删除所述任一数据流。

本发明实施例所示的方案中,第一数据流或者第二数据流的位置索引的当前引用状态为无数据处理任务引用时,删除该位置索引对应的第一数据流或者第二数据流,进一步节省了共享内存空间占用的内存空间,提高了共享内存空间的利用率。

在一种可能的设计中,所述方法还包括:

获取所述共享内存空间的总容量和所述共享内存空间当前存储的数据流的数据量;

根据所述总容量和所述数据量,调整所述共享内存空间的总容量大小。

本发明实施例所示的方案中,管理设备可以根据共享内存空间当前存储的数据流的数据量和该共享内存空间的总容量,调整该共享内存空间的总容量大小,使得管理设备能够灵活调整该共享内存空间总容量大小,进一步提高了该共享内存空间的利用率。

第二方面,本发明实施例提供了一种数据流处理装置,该数据流处理装置包括至少一个单元,至少一个单元用于实现上述第一方面或第一方面中任意一种可能的实现方式所提供的数据流处理方法。

第三方面,本发明实施例提供了一种数据流处理设备,该数据流处理设备包括:处理器和存储器,用于执行上述第一方面或第一方面中任意一种可能的实现方式所提供的数据流处理方法。

第四方面,本发明实施例提供了一种计算机存储介质,用于存储上述数据流处理所用的计算机软件指令,其包含用于执行上述方面为管理设备所涉及的程序。

上述本发明实施例第二到第四方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。

综上所述,本发明实施例提供的技术方案带来的有益效果是:

本发明实施例所示的方案中,管理设备接收第一数据流和第二数据流后,如果第一数据流和第二数据流相同,管理设备在共享内存空间中存储第一数据流和第二数据流中的任一数据流,并将该任一数据流在共享内存空间中的位置索引存储到第一内存空间和第二内存空间中,当执行第一数据处理任务或第二数据处理任务时,根据该位置索引,从该共享内存空间中读取第一数据流或者第二数据流。由于共享内存空间中只存储了第一数据流和第二数据流中的任一数据流,避免了相同数据流的重复存储,从而节省了内存空间,提高了内存空间的利用率。

附图说明

图1是本发明实施例提供的一种数据流处理的实施环境图;

图2是本发明实施例提供的一种管理设备的结构方框图;

图3是本发明实施例提供的一种数据流处理的方法流程图;

图4是本发明实施例提供的一种共享内存空间结构图;

图5是本发明实施例提供的一种确定共享内存空间的示例图;

图6是本发明实施例提供的一种共享内存空间示意图;

图7是本发明实施例提供的一种共享内存空间示意图;

图8是本发明实施例提供的一种数据流处理的装置方框图;

图9是本发明实施例提供的一种数据流处理的装置方框图;

图10是本发明实施例提供的一种数据流处理的装置方框图;

图11是本发明实施例提供的一种数据流处理的装置方框图;

图12是本发明实施例提供的一种数据流处理的装置方框图;

图13是本发明实施例提供的一种数据流处理的装置方框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的一种数据流处理的实施环境图。实施环境包括管理设备、共享内存空间、第一数据处理任务和第二数据处理任务。该管理设备用于接收第一数据处理任务的第一数据流和第二数据处理任务的第二数据流,并根据该第一数据流执行第一数据处理任务,根据该第二数据流执行第二数据处理任务。该共享内存空间用于存储第一数据流和第二数据流,管理设备接收第一数据流和第二数据流后,将该第一数据流和第二数据流存储在共享内存空间中;第一数据流为管理设备执行第一数据处理任务时引用的数据流,第二数据流为管理设备执行第二数据处理任务时引用的数据流。其中,第一数据处理任务可以为一个或多个数据处理任务,第二数据处理任务也可以为一个或多个数据处理任务。

管理设备执行第一数据处理任务或者第二数据处理任务之前,如果第一数据处理任务或者第二数据处理任务是当前任务队列的第一个数据处理任务,管理设备创建一个共享存储空间,该当前任务队列为第一数据处理任务和第二数据处理任务所在的任务队列,该共享内存空间用于存储当前任务队列中第一数据处理任务的第一数据流和第二数据处理任务的第二数据流。

如图1所示,管理设备执行第一数据处理任务或者第二数据处理任务时,将第一数据流和第二数据流存储在共享内存空间中,并为第一数据处理任务分配一个第一内存空间和第一窗口计算算子逻辑,为第二数据处理任务分配一个第二内存空间和第二窗口计算算子逻辑。其中,该第一内存空间用于存储该第一数据流在共享内存空间中的第一位置索引;该第二内存空间用于存储该第二数据流在共享内存空间中的第二位置索引(为了区分第一数据流对应的位置索引和第二数据流对应的位置索引,将第一数据流对应的位置索引称为第一位置索引,将第二数据流对应的位置索引称为第二位置索引);第一窗口计算算子逻辑用于管理设备根据该第一窗口计算算子逻辑对第一数据流进行处理,第二窗口计算算子逻辑用于管理设备根据该第二窗口计算算子逻辑对第二数据流进行处理。

为了节省内存空间,提高空间利用率,如果共享存储空间中存储的第一数据流和第二数据流相同,管理设备在共享内存空间中删除第一数据流或者第二数据流;同时,管理设备将未删除的第一数据流的第一位置索引的当前引用状态修改为被第一数据处理任务和第二数据处理任务引用,或者,将未删除的第二数据流的第二位置索引的当前引用状态修改为被第一数据处理任务和第二数据处理任务引用。

当第一位置索引的当前引用状态或者第二位置索引的当前引用状态为无数据处理任务引用时,删除第一数据流或者第二数据流。管理设备执行第一数据处理任务或者第二数据处理任务结束时,如果第一数据处理任务或者该第二数据处理任务是当前任务队列的最后一个数据处理任务,管理设备销毁该共享内存空间。

其中,该管理设备可以为具备数据流处理功能的处理器、控制器等,也可以为集成在计算机或其它设备上的具备数据流处理功能的处理模块、控制模块等。

参见图2,其示出了本发明实施例提供的一种管理设备1,该管理设备1包括收发器11和存储器12,该管理设备1还可以包括处理器13和网络接口14。其中,存储器12和网络接口14分别与处理器13连接;存储器12用于存储程序代码,程序代码包括计算机操作指令,处理器13和收发器11用于执行存储器12中存储的程序代码,用于实现数据流的相关处理,并可以通过网络接口14与基站或其他管理设备进行交互。

处理器13包括一个或者一个以上处理核心。处理器13通过运行软件程序以及单元,从而执行下述数据流处理的方法。

在一个可能的设计中,该管理设备1还可以包括总线15等部件。其中,存储器12与网络接口14分别通过总线15与处理器13和收发器11相连。

存储器12可用于存储软件程序以及单元。具体的,存储器12可存储操作系统121、至少一个功能所需的应用程序单元122。操作系统121可以是实时操作系统(Real Time eXecutive,RTX)、LINUX、UNIX、WINDOWS或OS X之类的操作系统。

本发明实施例提供了一种数据流处理的方法,该方法的执行主体为管理设备。参见图3,该方法包括:

步骤301:管理设备接收第一数据处理任务的第一数据流,以及,接收第二数据处理任务的第二数据流。

本步骤中,由于管理设备在窗口中执行第一数据处理任务和第二数据处理任务,因此,本步骤中管理设备接收第一数据处理任务的第一数据流,以及,接收第二数据处理任务的第二数据流的步骤可以为:管理设备检测第一数据处理任务的第一数据流是否进入第一数据处理任务的窗口,以及,管理设备检测第二数据处理任务的第二数据流是否进入第二数据处理任务的窗口;当检测到第一数据流进入第一数据处理任务的窗口时,管理设备接收第一数据流,以及,当检测到第二数据流进入第二数据处理任务的窗口时,管理设备接收第二数据流。

管理设备接收第一数据流和第二数据流后,通过以下步骤302,将第一数据流和/或第二数据流存储到共享内存空间中。

步骤302:如果第一数据流和第二数据流相同,管理设备在共享内存空间中存储第一数据流和第二数据流中的任一数据流,管理设备将该任一数据流在共享内存空间中的位置索引存储到第一内存空间和第二内存空间中,该第一内存空间为该第一数据处理任务的内存空间,该第二内存空间为该第二数据处理任务的内存空间。

管理设备接收到第一数据流和第二数据流时,管理设备可以先将第一数据流和第二数据流存储到共享内存空间中,即刻开始执行第一数据处理任务和第二数据处理任务,并在后台检测第一数据流和第二数据流是否相同,从而进行数据流合并,也即以下第一种实现方式。管理设备还可以先只将第一数据流和第二数据流中的一个数据流存储到共享内存空间中,检测另一个数据流和共享内存空间中已存储的数据流是否相同,从而确定是否存储另一个数据流,也即以下第二种实现方式。

对于第一种实现方式,如图4所示,本发明实施例中,为了提高第一内存空间和第二内存空间的利用率,管理设备将第一数据流和第二数据流存储到共享存储空间,将该第一数据流的第一位置索引存储到该第一内存空间,将该第二数据流的第二位置索引存储到该第二内存空间。

本发明实施例中,由于管理设备分别将第一数据处理任务的第一数据流和第二数据处理任务的第二数据流存储在共享内存空间中,而当前任务队列中第一数据处理任务和第二数据处理任务可能引用同一数据流,导致共享内存空间中重复存储数据流,为了提高共享存储空间的空间利用率,管理设备检测第一数据流和第二数据流是否相同,如果第一数据流和第二数据流相同,管理设备在将第一数据流和第二数据流合并为一个数据流。

本发明实施例的一种可能实现方式中,管理设备在共享内存空间中存储第一数据流和第二数据流中的任一数据流时,为了保证第一数据处理任务和第二数据处理任务的实时性,管理设备接收第一数据流和第二数据流后,先将该第一数据流和该第二数据流存储到共享存储空间中,即刻开始执行第一数据处理任务和第二数据处理任务,并在后台检测第一数据流和第二数据流是否相同,如果相同,管理设备删除第一数据流或者第二数据流,进而将共享存储空间中重复存储的多个数据流合并为一个数据流,提高了共享存储空间的空间利用率。

因此,本步骤中,如果第一数据流和第二数据流相同,管理设备在共享内存空间中存储第一数据流和第二数据流中的任一数据流的步骤可以通过以下步骤3021-3024实现。

步骤3021:管理设备将第一数据流和第二数据流存储到该共享内存空间中。

本步骤中,管理设备接收第一数据流和第二数据流后,直接将该第一数据流和第二数据流存储到共享内存空间中,同时,管理设备将该第一数据流的第一位置索引存储到该第一内存空间,将该第二数据流的第二位置索引存储到该第二内存空间,第一位置索引用于管理设备根据该第一位置索引,从共享内存空间中读取该第一位置索引对应的第一数据流;第二位置索引用于管理设备根据该第二位置索引,从共享内存空间中读取该第二位置索引对应的第二数据流。

需要说明的是,数据流的位置索引可以为该数据流在共享内存空间的存储路径,管理设备存储了每个数据流的位置索引和该数据流的第三标识的对应关系,便于管理设备根据该数据流的第三标识,从第三标识和位置索引的对应关系中,获取该数据流的位置索引,进而根据该位置索引,从共享内存空间中读取该数据流。其中,该第三标识可以根据用户需要设置并更改,本发明实施例对此不做具体限定,例如,该第三标识可以为数据流的编号、名称等。

本发明实施例的一种可能实现方式中,如图4所示,管理设备在共享内存空间中存储第一位置索引的当前引用状态,该当前引用状态用于记录共享存储空间中的该第一数据流被当前任务队列引用的状态;管理设备在共享内存空间中存储第二位置索引的当前引用状态,该当前引用状态用于记录共享存储空间中的该第二数据流被当前任务队列引用的状态。

因此,管理设备将第一数据流的第一位置索引存储到第一内存空间的步骤可以为:管理设备将第一数据流的第一位置索引存储到第一内存空间,将该第一位置索引的当前引用状态存储到共享内存空间。

需要说明的是,位置索引的当前引用状态可以用引用计数表示,管理设备读取该数据流之前,该数据流的位置索引的当前引用状态为初始状态,该数据流的位置索引的当前引用状态为无数据处理任务引用。对应的,管理设备将该数据流的引用计数记为初始数值。

当该位置索引对应的数据流被数据处理任务引用时,管理设备将该位置索引的引用计数增加第一预设数值。因此,管理设备将该第一位置索引的当前引用状态存储到共享内存空间的步骤可以为:管理设备将该第一位置索引的引用计数增加第一预设数值,在共享内存空间中存储该第一位置索引的引用计数。

当该位置索引对应的数据流被数据处理任务引用结束时,管理设备将位置索引的引用计数减少第一预设数值。

其中,引用计数的初始数值、第一预设数值可以根据用户需要设置并更改,本发明实施例对此不作具体限定。

例如,初始数值可以为0,第一预设数值可以为1,管理设备读取第一数据流之前,第一位置索引的引用计数为0,第一数据流被数据处理任务引用时,管理设备将该第一位置索引的引用计数增加1,此时,该第一位置索引的引用计数为1。

再如,如果第一位置索引的引用计数为3,即第一数据流当前被当前任务队列中的3个数据处理任务引用,当第一数据流出被3个数据处理任务中其中一个数据处理任务引用结束时,管理设备将第一位置索引的引用计数减1,此时,第一位置索引的引用计数变为2。

步骤3022:管理设备获取第一数据流的第一标识和第二数据流的第二标识,如果该第一标识和该第二标识相同,确定第一数据流和第二数据流相同。

本步骤中,第一数据流的第一标识可以为该第一数据流的ID(Identity,身份标识号码),第二数据流的第二标识可以为该第二数据流的ID。管理设备可以通过标识算法计算出第一数据流的ID和第二数据流的ID,通过该第一数据流的ID和第二数据流的ID确定第一数据流和第二数据流是否相同。

因此,本步骤可以为:管理设备根据标识算法,计算得到第一数据流的ID和第二数据流的ID,判断第一数据流的ID和第二数据流的ID是否相同,如果第一数据流的ID和第二数据流的ID相同,确定第一数据流和第二数据流相同;如果第一数据流的ID和第二数据流的ID不相同,确定第一数据流和第二数据流不相同。

其中,该标识算法可以根据用户需要设置并更改,本发明实施例对该标识算法不作具体限定。例如,该标识算法可以为哈希算法,还可以为CRUSH(Controlled Replication Under Scalable Hashing,可扩展的伪随机数据分布)算法。

例如,以哈希算法为例进行说,数据流的ID可以为该数据流的哈希值,此时,管理设备获取第一数据流的第一标识和第二数据流的第二标识,如果该第一标识和该第二标识相同,确定第一数据流和第二数据流相同的步骤可以为:管理设备通过该哈希算法,分别计算出第一数据流的哈希值和第二数据流的哈希值,管理设备判断第一数据流的哈希值和第二数据流的哈希值是否相同,如果第一数据流的哈希值和第二数据流的哈希值相同,确定第一数据流和第二数据流相同;如果第一数据流的哈希值和第二数据流的哈希值不相同,确定第一数据流和第二数据流不相同。

步骤3023:当检测到第一数据流和第二数据流相同时,管理设备删除第一数据流或者第二数据流。

本步骤中,为了避免因重复存储导致共享内存空间存储的数据流冗余,提高共享内存空间的利用率,管理设备可以删除第一数据流,只存储第二数据流,或者,删除第二数据流,只存储第一数据流。

步骤3024:如果删除该第一数据流,管理设备将该第二数据流在该共享内存空间中的位置索引存储到该第一内存空间和该第二内存空间中,或者,如果删除该第二数据流,管理设备将该第一数据流在该共享内存空间中的位置索引存储到该第一内存空间和该第二内存空间中。

本步骤中,由于管理设备将第一数据流和第二数据流合并为一个数据流,因此,管理设备需要更新第一数据流和第二数据流中被删除的第一数据流的第一位置索引,或者被删除的第二数据流的第二位置索引。

如果管理设备删除第一数据流,本步骤可以为:管理设备删除第一内存空间中的第一位置索引,将第二位置索引作为第一数据流的位置索引存储在第一内存空间中。

如果管理设备删除第二数据流,本步骤可以为:管理设备删除第二内存空间中的第二位置索引,将第一位置索引作为第二数据流的位置索引存储在第二内存空间中。

这样,即使在共享内存空间中删除了第一数据流(或者第二数据流),管理设备仍能根据第一内存空间(或者第二内存空间)中的更新后的位置索引从共享内存空间中读取第一数据处理任务(或者第二数据处理任务)需要引用的数据流。

本发明实施例的一种可能实现方式中,由于管理设备在共享内存空间中存储了第一位置索引的当前引用状态和第二位置索引的当前引用状态,因此,管理设备需要在第一位置索引和第二位置索引中,更新未被删除的第一位置索引的当前引用状态,或者更新未被删除的第二位置索引的当前引用状态。本步骤可以为:管理设备将该第一位置索引的当前引用状态修改为被第一数据处理任务和第二数据处理任务引用,或者将该第二位置索引的当前引用状态修改为被第一数据处理任务和第二数据处理任务引用。

由于当前引用状态可以用引用计数表示,如果管理设备删除第一数据流,本步骤可以为:管理设备将第二位置索引的引用计数增加第一预设数值。

如果管理设备删除第二数据流,本步骤可以为:管理设备将第一位置索引的引用计数增加第一预设数值。

例如,以引用计数的初始数值为0、第一预设数值为1为例,第一位置索引和第二位置索引的当前引用计数均为1,如果管理设备删除第一数据流,则需将第二位置索引的引用计数更新为2。

本发明实施例的一种可能实现方式中,为了提高共享内存空间的利用率,管理设备清理共享内存空间中的无数据处理任务引用的第一数据流(或者第二数据流)。本步骤可以为:当第一位置索引的当前引用状态为无数据处理任务引用时,管理设备删除第一数据流,或者,当第二位置索引的当前引用状态为无数据处理任务引用时,管理设备删除第二数据流。

本步骤中,为了提高管理设备对无数据处理任务引用的第一数据流(或者第二数据流)的清理效率,管理设备无需实时检测共享内存空间中每个数据流对应的位置索引的当前引用状态,仅需通过检测被第一数据处理任务或者第二数据处理任务引用结束的第一数据流(或者第二数据流),获取该第一位置索引(或者第二位置索引)的当前引用状态,进而确定是否删除第一数据流(或者第二数据流)。

因此,当第一位置索引当前引用状态为无数据处理任务引用时,管理设备删除第一数据流的步骤可以为:当检测到第一数据流被第一数据处理任务引用结束,即检测到第一数据流出第一数据处理任务的窗口时,管理设备获取第一位置索引的当前引用状态,根据该第一位置索引的当前引用状态,确定是否删除第一数据流:如果该第一位置索引的当前引用状态为无数据处理任务引用,管理设备删除该第一数据流;如果该第一位置索引的当前引用状态为仍被数据处理任务引用,管理设备不删除该第一数据流。

当第二位置索引当前引用状态为无数据处理任务引用时,管理设备删除第二数据流的步骤同上述步骤的实现方式一致,此处不再一一赘述。

其中,用引用计数表示该第一位置索引的当前引用状态时,本步骤中,管理设备根据该第一位置索引的当前引用状态,确定是否删除第一数据流的步骤可以为:管理设备检测第一位置索引的引用计数是否与初始数值相同,如果该第一位置索引的引用计数与初始数值相同,说明该第一位置索引的当前引用状态为无数据处理任务引用,管理设备删除第一数据流;如果该第一位置索引的引用计数与初始数值不相同,说明该第一位置索引的当前引用状态为仍被数据处理任务引用,管理设备不删除第一数据流。

例如,以引用计数的初始数值为0、第一预设数值为1为例,管理设备检测到第一数据流出第一数据处理任务的窗口时,管理设备获取第一位置索引的引用计数,如果第一位置索引的引用计数为0,管理设备删除该第一数据流;如果第一位置索引的引用计数为1,说明该第一数据流仍被当前任务队列中的其它数据处理任务引用,管理设备不删除该第一数据流。

对于第二种实现方式,本步骤可以为:管理设备将第一数据流存储到共享内存空间中;检测第二数据流和共享内存空间中已存储的第一数据流是否相同,如果相同,丢弃第二数据流,将第一数据流在共享内存空间中的第一位置索引存储到第一内存空间和第二内存空间中。如果不相同,将第二数据流也存储到共享内存空间中,将第一数据流在共享内存空间中的第一位置索引存储到第一内存空间中,将第二数据流在共享内存空间中的第二位置索引存储到第二内存空间中;或者,

管理设备将第二数据流存储到共享内存空间中;检测第一数据流和共享内存空间中已存储的第二数据流是否相同;如果相同,丢弃第一数据流,将第二数据流在共享内存空间中的第二位置索引存储到第一内存空间和第二内存空间中。如果不相同,将第二数据流也存储到共享内存空间中,将第一数据流在共享内存空间中的第一位置索引存储到第一内存空间中,将第二数据流在共享内存空间中的第二位置索引存储到第二内存空间中。

其中,管理设备确定第一数据流和第二数据流是否相同的步骤与步骤3022实现方式一致,此处不再一一赘述。

本发明实施例的一种可能实现方式中,为了进一步提高共享内存空间的利用率,管理设备将第一数据流和第二数据流中的任一数据流存储到共享内存空间后,还可以继续将该任一数据流中的相同数据合并为一个数据。

本发明实施例的一种可能实现方式中,为了提高数据流处理的可靠性,防止数据丢失造成数据流处理中断,管理设备接收到第一数据流和第二数据流时,还可以将该第一数据流和第二数据流持久化存储到第三内存空间中。当共享内存空间中存储的第一数据流或者第二数据流丢失时,管理设备从该第三内存空间中获取该第一数据流或者第二数据流。

在本步骤之前,管理设备需要确定一个共享内存空间,在确定共享内存空间时,管理设备可以根据第一数据流的数据属性和第二数据流的数据属性选择一个共享内存空间。管理设备还可以为每个任务队列创建一个共享内存空间。

管理设备根据第一数据流的数据属性和第二数据流的数据属性选择一个共享内存空间的步骤可以为:管理设备获取第一数据流的第一数据属性和第二数据流的第二数据属性,根据该第一数据属性,确定该第一数据属性对应的共享内存空间,以及,根据该第二数据属性,确定该第二数据属性对应的共享内存空间。

其中,第一数据属性可以为该第一数据流的某一数据特征,第二数据属性可以为第二数据流的某一数据特征。例如,第一数据流和第二数据流均为交易产生的数据流,如图5所示,该数据属性可以为交易地,管理设备获取第一数据流的第一数据属性和第二数据流的第二数据属性,将第一数据流和第二数据流中第一数据属性第二数据属性均为国外的数据存储到第一共享内存空间中,将第一数据流和第二数据流中第一数据属性和第二数据属性均为中国的数据流存储到第二共享内存空间中。这样改进后,第一共享内存空间存储的交易地为国外的多个数据流中,相同数据流可以合并为一个数据流。例如,管理设备将第一共享内存空间中交易金额均为20000的两个数据流合并为一个数据流,这样,管理设备只需存储相同数据中的一个数据流,提高了共享内存空间的使用率。

本发明实施例提供的一种可能的设计中,管理设备为每个任务队列创建一个共享内存空间,管理设备将该当前任务队列中第一数据处理任务的第一数据流和第二数据处理任务的第二数据流存储到该共享内存空间中。

管理设备检测第一数据处理任务或者第二数据处理任务是否为当前任务队列的第一个数据处理任务,如果第一数据处理任务或者第二数据处理任务为当前任务队列的第一个数据处理任务,管理设备创建共享内存空间,后续步骤中,管理设备将第一数据流和第二数据流存储到该共享内存空间中;如果第一数据处理任务或者第二数据处理任务不是当前任务队列的第一个数据处理任务,说明管理设备执行当前任务队列的第一个数据处理任务时,已经创建了共享内存空间,后续步骤中,管理设备将第一数据流和第二数据流存储到已经创建的共享内存空间中。

如图6所示,该当前任务队列可以运行在多个进程间,一个进程可以对应运行一个数据处理任务,当前任务队列的第一个数据处理任务对应的进程为多个进程中的首个进程。

如图7所示,该当前任务队列也可以运行在同一进程的不同线程间,一个线程可以对应运行一个数据处理任务,当前任务队列的第一个数据处理任务对应的线程为多个线程中的首个线程。

以该当前任务队列运行在多个进程间为例进行说明,管理设备执行第一数据处理任务或者第二数据处理任务时,启动该第一数据处理任务或者第二数据处理任务所在的进程。

因此,管理设备检测第一数据处理任务或者第二数据处理任务是否为当前任务队列的第一个数据处理任务的步骤可以为:管理设备通过进程间通信,检测第一数据处理任务(或者第二数据处理任务)所在进程是否为首个进程;当检测到该进程不是多个进程中的首个进程时,管理设备确定第一数据处理任务(或者第二数据处理任务)不是当前任务队列的第一个数据处理任务;当检测到该进程为多个进程中的首个进程时,管理设备确定第一数据处理任务(或者第二数据处理任务)为当前任务队列的第一个数据处理任务。

当该多个数据处理任务运行在一个进程的多个线程间时,管理设备检测第一数据处理任务或者第二数据处理任务是否为当前任务队列的第一个数据处理任务的步骤与该当前任务队列运行在多个进程间时的实现方式一致,此处不再一一赘述。

本步骤中,管理设备预先存储了该共享内存空间的预设容量,因此,管理设备创建共享内存空间的步骤可以为:管理设备获取该共享内存空间的预设容量,根据该预设容量,创建总容量为该预设容量的共享内存空间。

其中,该预设容量可以根据用户需要设置并更改,本发明实施例对此不作具体限定,例如,该预设容量可以为500MB(MByte,兆字节)、50GB(Gigabyte,吉字节)、2TB(Terabyte,太字节)等。

步骤303:当执行该第一数据处理任务或该第二数据处理任务时,管理设备根据该位置索引,从该共享内存空间中读取该任一数据流,根据该任一数据流执行该第一数据处理任务或该第二数据处理任务。

本步骤中,该位置索引为更新后的第一数据流的第一位置索引或第二数据流的第二位置索引;该任一数据流为第一数据流和第二数据流中未被删除的数据流。

如果管理设备删除第一数据流,管理设备根据第二数据流的第三标识,从第三标识和位置索引的对应关系中,获取该第二数据流的第二位置索引,根据该第二位置索引,读取第二数据流,进而,管理设备根据第二数据处理任务的第二窗口计算算子逻辑,对该第二数据流进行处理。

本发明实施例的一种可能实现方式中,为了提高该共享内存空间的使用率,管理设备可以实时检测该共享内存空间中存储的数据流的数据量,根据该数据量,实时调整该共享内存空间的总容量大小。本步骤可以为:管理设备获取该共享内存空间的总容量和该共享内存空间当前存储的数据流的数据量,管理设备根据该总容量和该数据量,调整该共享内存空间的总容量大小。

本步骤中,管理设备根据该总容量和该数据量,调整该共享内存空间的总容量大小时,管理设备可以通过计算当前存储的数据流的数据量和共享内存空间当前的总容量的比值,调整该共享内存空间的总容量大小,使得该比值的大小在预设数值范围内;其中比值为管理设备用该当前存储的数据量除以该总容量得到该数据量和该总容量的比值。

因此,管理设备根据该总容量和该数据量,调整该共享内存空间的总容量大小的步骤可以为:管理设备计算该数据量和该总容量的比值,当该比值大于第二预设数值时,增大该共享内存空间当前的总容量,当该比值小于第三预设数值时,减小该共享内存空间当前的总容量。

其中,第二预设数值、第三预设数值可以根据需要设备并更改,本发明实施例对此不作具体限定。

例如,以第二预设数值为80%、第三预设数值为40%为例,该共享内存空间当前的总容量大小为500GB,如果共享内存空间当前存储的数据流的数据量为100GB,此时,需减小该总容量的大小,可以将该总容量减小至200GB;如果共享内存空间当前存储的数据流的数据量为450GB,此时,需增大该总容量的大小,可以将该总容量增大至600GB。

本发明实施例中,管理设备可以每隔预设周期获取该共享内存空间当前存储的数据流的数据量和共享内存空间的总容量。该预设周期可以根据用户需要设置并更改,本发明实施例对此不作具体限定。例如,该预设周期可以为2秒、10毫秒等。

本发明实施例中,为了减少共享内存空间占用的内存,管理设备执行完第一数据处理任务和第二数据处理任务时,可以通过以下步骤a和b,当检测到该第一数据处理任务或者该第二数据处理任务是该当前任务队列的最后一个数据处理任务,管理设备销毁该共享内存空间,包括:

步骤a:管理设备检测第一数据处理任务或者第二数据处理任务是否为当前任务队列的最后一个数据处理任务。

由于该当前任务队列可以运行在多个进程间,也可以运行在一个进程的多个线程间。该当前任务队列运行在多个进程间时,当前任务队列的最后一个数据处理任务对应的进程为多个进程中的最后一个进程;该当前任务队列运行在一个进程的多个线程间时,当前任务队列的最后一个数据处理任务对应的线程为多个线程中的最后一个线程。

因此,该当前任务队列运行在多个进程间时,本步骤可以为:管理设备通过进程间通信,检测第一数据处理任务(或者第二数据处理任务)所在进程是否为最后一个进程;当检测到该进程不是多个进程中的最后一个进程时,管理设备确定第一数据处理任务(或者第二数据处理任务)不是当前任务队列的最后一个数据处理任务;当检测到该进程为多个进程中的最后一个进程时,管理设备确定第一数据处理任务(或者第二数据处理任务)为当前任务队列的最后一个数据处理任务,进而,通过以下步骤b,销毁共享内存空间。

当该多个数据处理任务运行在一个进程的多个线程间时,管理设备检测第一数据处理任务或者第二数据处理任务是否为当前任务队列的最后一个数据处理任务的步骤与该当前任务队列运行在多个进程间时的实现方式一致,此处不再一一赘述。

步骤b:如果第一数据处理任务或者第二数据处理任务是当前任务队列的最后一个数据处理任务,管理设备销毁共享内存空间。

本步骤中,当检测到第一数据处理任务(或者第二数据处理任务)所在进程为最后一个进程时,管理设备销毁该进程的同时,销毁该进程对应的共享内存空间,结束。

当检测到第一数据处理任务(或者第二数据处理任务)所在进程不是最后一个进程时,管理设备直接销毁该进程,不销毁该进程对应的共享内存空间,结束。

本发明实施例所示的方案中,管理设备接收第一数据流和第二数据流后,如果第一数据流和第二数据流相同,管理设备在共享内存空间中存储第一数据流和第二数据流中的任一数据流,并将该任一数据流在共享内存空间中的位置索引存储到第一内存空间和第二内存空间中,当执行第一数据处理任务或第二数据处理任务时,根据该位置索引,从该共享内存空间中读取第一数据流或者第二数据流。由于共享内存空间中只存储了第一数据流和第二数据流中的任一数据流,避免了相同数据流的重复存储,从而节省了内存空间,提高了内存空间的利用率。

下述为本本发明实施例装置实施例,可以用于执行本发明实施例方法实施例。对于本发明实施例装置实施例中未披露的细节,请参照本发明实施例方法实施例。

图8是本发明实施例提供的一种数据流处理的装置的结构方框图,该装置可以通过软件、硬件或者两者的结合实现成为管理设备的部分或者全部。

该装置包括接收单元401、存储单元402、读取单元403和执行单元404;

接收单元401用于执行上述实施例中的步骤301及其可选方案。

存储单元402用于执行上述实施例中的步骤302及其可选方案。

读取单元403用于执行上述实施例中的步骤303及其可选方案。

执行单元404用于执行上述实施例中的步骤303及其可选方案。

参见图9,该装置还可以包括创建单元405、销毁单元406;

创建单元405用于执行上述实施例中的步骤301及其可选方案。

销毁单元406用于执行上述实施例中的步骤303及其可选方案。

参见图10,该装置还可以包括第一获取单元407、第一确定单元408;

第一获取单元407用于执行上述实施例中的步骤302及其可选方案。

第一确定单元408用于执行上述实施例中的步骤302及其可选方案。

参见图11,该装置还可以包括第二获取单元409、第二确定单元410;

第二获取单元409用于执行上述实施例中的步骤302及其可选方案。

第二确定单元410用于执行上述实施例中的步骤302及其可选方案。

参见图12,该装置还可以包括修改单元411、删除单元412;

修改单元411用于执行上述实施例中的步骤302及其可选方案。

删除单元412用于执行上述实施例中的步骤302及其可选方案。

参见图13,该装置还可以包括第三获取单元413、调整单元414;

第三获取单元413用于执行上述实施例中的步骤303及其可选方案。

调整单元414用于执行上述实施例中的步骤303及其可选方案。

需要说明的是:上述实施例提供的数据流处理的装置在数据流处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据流处理的装置与数据流处理的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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