一种流计算中数据持久化的方法和系统与流程

文档序号:14950701发布日期:2018-07-17 22:29阅读:219来源:国知局

本发明涉及数据存储技术领域,特别涉及一种流计算中数据持久化的方法和系统。



背景技术:

流计算可以很好的对大规模流动的数据进行实时的分析处理,因此,流计算可以广泛应用在社交网站、博客、电子邮件、视频、新闻、电话记录、传输数据、电子感应器之中。在利用流计算进行数据的分析处理时会产生大量的需要持久化的中间数据。目前,流计算中数据持久化的方法主要包括同步方式和异步方式,其中,同步方式在持久化中间数据时要等待操作的执行结果来保证数据持久化的事务性,该过程使得处理处于等待状态,因此影响数据分析处理的速度。

现有技术中,流计算中数据持久化的方法中的异步方式的步骤包括:管理模块发起一个任务;处理模块,向所述数据源提取该任务对应的数据,并进行数据处理,生成中间数据和结果数据,两个存储模块分别对中间数据和结果数据进行存储。之后,管理模块再次发起新任务,这样,异步方式可以使得数据处理的速度不受影响,数据分析处理很快。

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

现有技术中,无法对中间数据持久化结果进行反馈,从而难以保证中间数据持久化的事务性。



技术实现要素:

为了解决现有技术中的问题,本发明实施例提供了一种流计算中数据持久化的方法和系统。所述技术方案如下:

第一方面,本发明实施例提供的一种流计算中数据持久化的方法,包括:

管理模块发起一个任务;

根据任务向数据源提取任务对应的key;

根据key向数据源提取key对应的value,并进行数据处理由此生成中间数据和第一信号,存储中间数据和第一信号;

检测第一信号是否完成存储,并将检测信息发送给管理模块。

可选地,在生成中间数据和第一信号时,将第一信号插入到中间数据的尾部。

可选地,检测第一信号是否完成存储,并将检测信息发送给管理模块,包括:

通过轮询方式检测第一信号是否完成存储,当检测到第一信号完成存储时,则向管理模块发送第一成功应答。

可选地,检测第一信号是否完成存储,并将检测信息发送给管理模块,还包括:

当无法检测到第一信号时,判断检测的次数是否达到预设阈值;

当检测的次数达到预设阈值时,则向管理模块发送失败应答,或者

当检测的次数未达到预设阈值时,则继续检测第一信号是否完成存储。

可选地,在根据任务向数据源提取任务对应的key之后,所述方法还包括:

将执行列表中与任务对应的key进行比较,当key不包含在执行列表中时,将key加入执行列表中,并且根据执行列表中key向数据源提取执行列表中key对应的value,并进行数据处理由此生成中间数据和第一信号。

可选地,所述方法还包括:

当管理模块接收到第一成功应答或者失败应答,生成删除信号;

根据删除信号移除第一信号以及执行列表中对应任务的key。

可选地,所述方法还包括:

将执行列表中与任务对应的key进行比较,当任务对应的key包含在执行列表中时,将key加入等待列表中;

将等待列表中key与执行列表进行比较,当等待列表中key不包含在执行列表中时,将等待列表中key加入执行列表中。

可选地,所述方法还包括:

对key对应的value进行数据处理时,还生成结果数据;

对结果数据进行存储,并向管理模块发送第二成功应答;

管理模块根据第二成功应答生成跟踪任务,并下发跟踪任务;

根据跟踪任务开始通过轮询方式检测第一信号是否完成存储。

可选地,所述方法还包括:

数据源根据业务类型将key存放在不同数据桶中;

在根据任务向数据源提取任务对应的key时,根据key的业务类型向对应的数据桶中提取key。

可选地,所述方法还包括:

管理模块根据数据源中各个业务类型的key的数量生成任务策略,并根据任务策略发起任务。

第二方面,本发明实施例提供的一种流计算中数据持久化的系统,包括:

数据源,用于存储多个key以及每个key对应的value;

管理模块,用于发起一个任务;

协调模块,用于根据任务向数据源提取任务对应的key;

处理模块,用于根据key向数据源提取key对应的value,并进行数据处理由此生成中间数据和第一信号;

第一存储模块,用于存储中间数据和第一信号;

检测模块,用于检测第一信号是否完成存储,并将检测信息发送给管理模块。

可选地,所述处理模块,还用于:

在生成中间数据和第一信号时,将第一信号插入到中间数据的尾部。

可选地,检测模块,用于:

通过轮询方式检测第一信号是否完成存储,当检测到第一信号完成存储时,则向管理模块发送第一成功应答。

可选地,检测模块,还用于:

当无法检测到第一信号时,判断检测的次数是否达到预设阈值;

当检测的次数达到预设阈值时,则向管理模块发送失败应答,或者

当检测的次数未达到预设阈值时,则继续检测第一信号是否完成存储。

可选地,协调模块,还用于将执行列表中与任务对应的key进行比较,当key不包含在执行列表中时,将key加入执行列表中;

处理模块,用于根据执行列表中key向数据源提取执行列表中key对应的value,并进行数据处理由此生成中间数据和第一信号。

可选地,管理模块,用于接收到第一成功应答或者失败应答,并生成删除信号;

第一存储模块,还用于根据删除信号移除第一信号;

协调模块,还用于根据删除信号移除执行列表中对应任务的key。

可选地,协调模块,还用于:

将执行列表中与任务对应的key进行比较,当任务对应的key包含在执行列表中时,将key加入等待列表中;

将等待列表中key与执行列表进行比较,当等待列表中key不包含在执行列表中时,将等待列表中key加入执行列表中。

可选地,所述系统还包括第二存储模块;

处理模块,还用于对key对应的value进行数据处理时,生成结果数据;

第二存储模块,用于存储结果数据,并向管理模块发送第二成功应答;

管理模块,还用于根据第二成功应答生成跟踪任务,并下发跟踪任务;

检测模块,用于根据跟踪任务开始通过轮询方式检测第一信号是否完成存储。

可选地,数据源,用于根据业务类型将key存放在不同数据桶中;

协调模块,用于根据key的业务类型向对应的数据桶中提取key。

可选地,管理模块,用于:

根据数据源中各个业务类型的key的数量生成任务策略,并根据任务策略发起任务。

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

本发明实施例提供的流计算中数据持久化的方法,通过管理模块发起一个任务;根据任务向数据源提取任务对应的key;根据key向数据源提取key对应的value,并进行数据处理由此生成中间数据和第一信号,存储中间数据和第一信号;检测第一信号是否完成存储,并将检测信息发送给管理模块。这样,可以有效地对中间数据持久化结果进行反馈,从而保证中间数据持久化的事务性。

附图说明

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

图1是本发明实施例提供的一种流计算中数据持久化的方法的流程图;

图2是本发明实施例提供的步骤400的流程图;

图3是本发明实施例提供的另一种流计算中数据持久化的方法流程图;

图4是本发明实施例提供的另一种流计算中数据持久化的方法流程图;

图5是本发明实施例提供的另一种流计算中数据持久化的方法流程图;

图6是本发明实施例提供的一种流计算中数据持久化的系统结构示意图;

图7是本发明实施例提供的另一种流计算中数据持久化的系统结构示意图。

具体实施方式

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

本发明实施例提供了一种流计算中数据持久化的方法,该方法的执行主体为流式计算系统,流式计算系统主要包括实时计算系统和批处理计算系统。本流计算中数据持久化的方法可以广泛应用在搜索引擎、社交网站、博客、电子邮件、视频、新闻、电话记录、传输数据、电子感应器等业务类型中,实现对信息流的快速处理,并保证中间数据持久化的事务性。

下面将结合具体实施方式,对图1-图5所示的处理流程进行详细的说明,内容可以如下:

步骤100,管理模块2发起一个任务。

其中,管理模块2具体为流式计算系统中的数据喷口,用于根据用户与流式计算系统的交互下发任务以及管理其他功能模块。

具体地,管理模块2在下发任务之前,需要绑定一个数据源1。数据源1用于存放多个键key以及每个key对应的键值value数据,数据源1为与其绑定的管理模块2发起的任务提供key-value数据,供流式计算系统对任务进行数据处理。

步骤200,根据任务向数据源1提取任务对应的key。

在本实施中,根据对执行该任务的需要,先从数据源1中提取key,再后续需要数据处理时,在从数据源1中将key对应的value提取出来进行数据处理。

可选地,本流计算中数据持久化的方法还包括:数据源1根据业务类型将key存放在不同数据桶中;这样,将key按业务类型存放在不同的数据桶中后,步骤200,根据任务向数据源1提取任务对应的key,具体为:根据该任务对应的key的业务类型向对应的数据桶中提取key。通过根据业务类型将key存放在不同数据桶中,可将任务与其对应的数据桶进行绑定,在后续执行过程中,提高了从数据源1中获取key的速度。

可选地,步骤100,管理模块2发起一个任务,具体为:

管理模块2根据数据源1中各个业务类型的key的数量生成任务策略,并根据任务策略发起任务。

在本实施例中,该任务策略即为管理模块2发起任务的规则,通过各个业务类型的key的数量确定任务策略,可以影响管理模块2对一批待发起任务的发起顺序,从而确定一批待发起任务的优先级。例如,一批待发起任务中,任务a对应业务类型的key数量最多,可以视为该任务影响因子较多,任务较为重要,应优先进行处理,管理模块2可优先发起任务a;又例如,为加快部分任务执行速度,也可以优先发起对应业务类型的key数量少的任务。需要说明的是,本发明保护范围不限对根据数据源1中各个业务类型的key的数量生成任务策略,可根据需求情况,设置对应的任务策略。

步骤300,根据key向数据源1提取key对应的value,并进行数据处理由此生成中间数据和第一信号,存储中间数据和第一信号。

本实施例中,第一信号即为标记信号,第一信号具有唯一性和可识别性,第一信号与中间数据一起存储,这样通过第一信号完成对中间数据的标记,通过对第一信号的检测,可以实现对中间数据的存储情况进行追踪反馈。

其中,第一信号可以是由该任务的id(identity,身份标识号码)形成的信号。这样,保证了每一个任务产生的中间数据对应的第一信号唯一,且可检测识别。

可选地,在生成中间数据和第一信号时,将第一信号插入到中间数据的尾部。这样,第一信号与中间数据结合为一体,第一信号完成对中间数据的标记,对第一信号的存储情况进行检测,即认定为中间数据的存储情况,例如,当检测到第一信号完成存储时,即确定了中间数据完成存储,当检测到第一信号未完成存储时,即确定中间数据未完成存储。

步骤400,检测第一信号是否完成存储,并将检测信息发送给管理模块2。

其中,对第一信号的检测,可以由用于存储第一信号的存储模块完成,也可以通过另一检测模块通过访问的方式完成。对第一信号检测的发起,可以由管理模块2下发任务,检测模块接收该下发任务并对用于存储第一信号的存储模块进行访问检测,也可以由用于存储第一信号的存储模块发起,当该存储模块接收第一信号之后,即开始对其进行检测;另外,也可以设置当第一信号完成存储时,对存储第一信号的存储模块自动向管理模块2反馈信息。

参见图2,可选地,步骤400,检测第一信号是否完成存储,并将检测信息发送给管理模块2,具体为:

步骤401,通过轮询方式检测第一信号是否完成存储;

步骤402,当检测到第一信号完成存储时,则向管理模块2发送第一成功应答;

步骤403,当无法检测到第一信号时,判断检测的次数是否达到预设阈值;

步骤404,当检测的次数达到预设阈值时,则向管理模块2发送失败应答;

其中,通过预设阈值可以限定检测第一信号的次数,当检测第一信号的次数达到预设阈值时,可以视为对中间数据持久化(存储)操作失败。该预设阈值可以根据每次检测第一信号的时间间隔以及经验时间确定,该经验时间可以表示为根据经验在一定时间为还未完成存储的信号通常存储失败的时间,预设阈值可以等于经验时间除于每次检测第一信号的时间间隔,计算结果向上取整。例如,预设阈值为10,当第1次至10次检测第一信号均为未检测到第一信号时,向管理模块2发出失败应答。

当检测的次数未达到预设阈值时,则继续检测第一信号是否完成存储,返回步骤401。

例如,当预设阈值为10,检测的次数为5时,则返回步骤401,继续对第一信号进行检测,直至检测到第一信号完成存储,或者,第10次未检测到第一信号完成存储。

在本实施例中,管理模块2当接收第一成功应答时,即可获知对中间数据持久化操作成功,当接收到失败应答时,即可获知对中间数据持久化操作失败,便于管理模块2根据持久化操作成功和持久化操作失败做出相应反应。

可选地,参见图3,本流计算中数据持久化的方法还包括:

步骤301,对key对应的value进行数据处理时,还生成结果数据;

步骤302,对结果数据进行存储,并向管理模块2发送第二成功应答;

其中,结果数据与中间数据存储在两个不同的存储模块中,用于存储结果数据的存储模块完成存储结果数据后,发送第二成功应答。

步骤303,管理模块2根据第二成功应答生成跟踪任务,并下发跟踪任务;根据跟踪任务开始通过轮询方式检测第一信号是否完成存储,进入步骤401。

本实施例中,管理模块2可以通过接收第二成功应答后,主动对第一信号进行检测,从而确定中间数据的存储情况。

可选地,参见图4,在步骤200之后以及步骤300之前,本流计算中数据持久化的方法还包括:

步骤201,将执行列表中与任务对应的key进行比较;

其中,执行列表用于为数据处理提供key。

步骤202,当key不包含在执行列表中时,将key加入执行列表中;

步骤300,具体为:根据执行列表中key向数据源1提取执行列表中key对应的value,并进行数据处理由此生成中间数据和第一信号。即key进入执行列表后,就开始进行步骤300。

在本实施例中,当key不包含在执行列表中时,即在执行列表中没有与该key相同的key,这样保证了同一时间在执行中的key的唯一性,进一步保证了任务以及其产生的中间数据的事务性。

可选地,参见图4,本流计算中数据持久化的方法还包括:

步骤203,当任务对应的key包含在执行列表中时,将key加入等待列表中;

步骤204,将等待列表中key与执行列表进行比较,当等待列表中key不包含在执行列表中时,将等待列表中key加入执行列表中。

具体地,等待列表中的key相对于新发起的任务对应的key优先进入执行列表中。

可选地,参见图5,本流计算中数据持久化的方法还包括:

步骤500,当管理模块2接收到第一成功应答或者失败应答,生成删除信号;

步骤600,根据删除信号移除第一信号以及执行列表中对应任务的key。

本实施例中,通过管理模块2接收到的第一成功应答或者失败应答,移除第一信号以及执行列表中对应任务的key,即实现了将用于存储中间数据的存储模块中无用数据进行删除,又将为未进入执行列表中key移出了空间,使本流计算中数据持久化的方法继续实施。

可选地,当执行列表中key的数量达到设置上限时,将未进入执行列表的key加入等待列表中,其中,等待列表中的key按时间顺序排序,先进入执行列表的key在保证在执行列表中无相同key的情况下,优先进入执行列表。

其中,本领域的技术人员可以人为设置执行列表的设置上限,也可以根据执行主体的数据处理能力设置。

本发明实施例提供的流计算中数据持久化的方法,通过管理模块2发起一个任务;根据任务向数据源1提取任务对应的key;根据key向数据源1提取key对应的value,并进行数据处理由此生成中间数据和第一信号,存储中间数据和第一信号;检测第一信号是否完成存储,并将检测信息发送给管理模块2。这样,可以有效地对中间数据持久化结果进行反馈,从而保证中间数据持久化的事务性。

基于相同的发明构思,本发明实施例还提供了一种流计算中数据持久化的系统,参见图6,包括:

数据源1,用于存储多个key以及每个key对应的value;

管理模块2,用于发起一个任务;

协调模块3,用于根据任务向数据源1提取任务对应的key;

处理模块4,用于根据key向数据源1提取key对应的value,并进行数据处理由此生成中间数据和第一信号;

第一存储模块5,用于存储中间数据和第一信号;

检测模块6,用于检测第一信号是否完成存储,并将检测信息发送给管理模块2。

其中,第一存储模块5可以为redis(一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库)。

本实施例中,检测模块6可以设置在第一存储模块5内。

可选地,所述处理模块4,还用于:

在生成中间数据和第一信号时,将第一信号插入到中间数据的尾部。

可选地,检测模块6,用于:

通过轮询方式检测第一信号是否完成存储,当检测到第一信号完成存储时,则向管理模块2发送第一成功应答。

可选地,检测模块6,还用于:

当无法检测到第一信号时,判断检测的次数是否达到预设阈值;

当检测的次数达到预设阈值时,则向管理模块2发送失败应答,或者

当检测的次数未达到预设阈值时,则继续检测第一信号是否完成存储。

可选地,协调模块3,还用于将执行列表中与任务对应的key进行比较,当key不包含在执行列表中时,将key加入执行列表中;

处理模块4,用于根据执行列表中key向数据源1提取执行列表中key对应的value,并进行数据处理由此生成中间数据和第一信号。

可选地,管理模块2,用于接收到第一成功应答或者失败应答,并生成删除信号;

第一存储模块5,还用于根据删除信号移除第一信号;

协调模块3,还用于根据删除信号移除执行列表中对应任务的key。

可选地,协调模块3,还用于:

将执行列表中与任务对应的key进行比较,当任务对应的key包含在执行列表中时,将key加入等待列表中;

将等待列表中key与执行列表进行比较,当等待列表中key不包含在执行列表中时,将等待列表中key加入执行列表中。

可选地,参见图7,本流计算中数据持久化的系统还包括第二存储模块7;

处理模块4,还用于对key对应的value进行数据处理时,生成结果数据;

第二存储模块7,用于存储结果数据,并向管理模块2发送第二成功应答;

管理模块2,还用于根据第二成功应答生成跟踪任务,并下发跟踪任务;

检测模块6,用于根据跟踪任务开始通过轮询方式检测第一信号是否完成存储。

可选地,数据源1,用于根据业务类型将key存放在不同数据桶中;

协调模块3,用于根据key的业务类型向对应的数据桶中提取key。

可选地,管理模块2,用于:

根据数据源1中各个业务类型的key的数量生成任务策略,并根据任务策略发起任务。

本发明实施例提供的流计算中数据持久化的系统,通过数据源1,用于存储多个key以及每个key对应的value;管理模块2,用于发起一个任务;协调模块3,用于根据任务向数据源1提取任务对应的key;处理模块4,用于根据key向数据源1提取key对应的value,并进行数据处理由此生成中间数据和第一信号;第一存储模块5,用于存储中间数据和第一信号;检测模块6,用于检测第一信号是否完成存储,并将检测信息发送给管理模块2。这样,可以有效地对中间数据持久化结果进行反馈,从而保证中间数据持久化的事务性。

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

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

还需要说明的是,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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