一种流式应用升级方法、主控节点及流计算系统的制作方法

文档序号:6631229阅读:305来源:国知局
一种流式应用升级方法、主控节点及流计算系统的制作方法
【专利摘要】本发明提供一种流式应用升级方法及流计算系统,该方法包括:获取流式应用更新后的逻辑模型,通过对比更新后的逻辑模型以及初始逻辑模型,以确定待调整的流;根据待调整的流,生成升级指令;将生成的升级指令下发给工作节点,以使工作节点根据升级命令的指示,调整其上分布的PE之间的流;本发明提供的方法能够实现流式应用的在线升级,不中断业务。
【专利说明】一种流式应用升级方法、主控节点及流计算系统

【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种流式应用升级方法、一种主控节点以及一种流计算系统。

【背景技术】
[0002]随着大数据时代的到来,对海量数据进行实时处理、分析、决策的市场需求不断扩大,如:电信领域的精准广告推送,金融领域的交易动态实时分析,工业领域的实时监控等等。在此背景下,数据密集型应用,比如金融服务、网络监控、电信数据管理等,已经得到越来越广泛的应用,同时适应于数据密集型应用的流计算系统也应运而生。数据密集型应用产生的数据具有数据量大、快速、时变的特点,当数据密集型应用部署到流计算系统之后,流计算系统可以在接收到应用的数据时就立即对其进行处理,以保证实时性。如图1所示,流计算系统通常包括一个主控节点(1381:610和多个工作节点(恥!'!^!'),主控节点主要负责调度和管理各个工作节点,而工作节点是承载实际的数据处理操作的逻辑实体,工作节点具体通过调用若干个执行单元(四,?1~00688 £161116111:)来对数据进行处理,是业务逻辑的物理执行单元。
[0003]通常,流计算系统中部署的应用程序或业务被称为流式应用,现有技术中,当部署一个流式应用到流计算系统时,需要预先定义该流式应用的逻辑模型,流式应用的逻辑模型通常以无回路有向图^070110来表示,如图2所示,其中是承载实际的数据处理操作的物理载体,也是可被流计算系统调度执行的最小单元;'册III代表各间的传输的数据流,箭头表示了数据流的走向可以动态加载并执行业务逻辑,对流式应用的数据进行实时处理。如图3所示,流计算系统根据逻辑模型将各个部署在不同的工作节点上执行,各个依照自己的逻辑进行运算,并把运算结果转发给下游?2。而当用户需求或业务场景发生变化时,流式应用就需要更新或升级,初始的逻辑模型已经不再适用。因此首先需要离线完成流式应用的更新,并定义新的逻辑模型,然后停止旧的应用,再根据新的逻辑模型将更新后的流式应用重新部署到流计算系统中,最后再启动更新后的流式应用。可以看出,现有技术中进行流式应用的更新,需要中断原先业务,无法进行流式应用的在线升级,导致业务损失。


【发明内容】

[0004]本发明实施例提供一种流式应用升级方法、主控节点及流计算系统,用以在不需要中断业务的情况下,实现流计算系统中流式应用的在线升级。
[0005]第一方面,本发明实施例提供了一种流式应用升级方法,应用于流计算系统中的主控节点,所述流计算系统包括所述主控节点和至少一个工作节点,其中,多个执行单元分布于所述至少一个工作节点中的一个或多个工作节点上,用于对所述流计算系统上部署的流式应用的数据进行处理,其中所述流式应用的初始逻辑模型用于表示处理所述流式应用的数据的所述多个?2以及所述多个之间的数据流走向;所述方法包括:
[0006]在所述流式应用更新的情况下,所述主控节点获取所述流式应用更新后的逻辑模型,并通过比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流;
[0007]根据所述待调整的数据流,生成升级指令;
[0008]将所述升级指令下发给第一工作节点,所述第一工作节点是与所述待调整的数据流相关的所在的工作节点,所述升级指令用于指示所述第一工作节点调整其上分布的
之间的数据流走向。
[0009]在第一方面的第一种可能的实现方式中,所述比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流包括:
[0010]比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定所述待调整的数据流,其中所述流式应用的初始逻辑模型所表示的与所述更新后的逻辑模型所表不的相同。
[0011]在第一方面的第二种可能的实现方式中,所述通过比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流包括:
[0012]比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定待调整的以及所述待调整的数据流,其中所述流式应用的初始逻辑模型所表示的与所述更新后的逻辑模型所表示的不完全相同;
[0013]所述根据所述待调整的数据流,生成升级指令包括:
[0014]根据所述待调整的数据流,生成第一升级指令;根据所述待调整的生成第二升级指令;
[0015]所述将所述升级指令下发给第一工作节点包括:
[0016]将所述第一升级指令下发给所述第一工作节点,将所述第二升级指令下发给第二工作节点,所述第二工作节点包括所述待调整的所在的工作节点;所述第一升级指令用于指示所述第一工作节点调整其上分布的之间的数据流走向,所述第二升级指令用于指示所述第二工作节点调整其上分布的的数目。
[0017]结合第一方面,或者第一方面第一至第二种任意一种可能的实现方式,在第三种可能的实现方式中,还包括:
[0018]所述主控节点根据与所述待调整的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标和所述目标执行数据恢复的检查点0116(^130111七;
[0019]向所述目标所在工作节点下发数据恢复指令,所述数据恢复指令用于指示所述目标根据所述恢复数据;
[0020]当确定所述第一工作节点完成调整,且所述第一工作节点上分布的准备就绪之后,所述主控节点触发所述目标将恢复的数据输入所述目标的下游进行处理。
[0021]结合第一方面第三种可能的实现方式,在第四种可能的实现方式中,所述待调整的数据流包括:待更新的数据流和待删除的数据流;所述主控节点根据与所述待调整的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标和所述目标执行数据恢复的检查点0116(^1)01111:,包括:
[0022]所述主控节点根据与所述待更新的数据流和待删除的数据流相关的的状态数据,确定执行数据恢复的;根据与所述待更新的数据流和待删除的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标;其中,每个的状态数据是该在输出事件的触发下备份的,用于指示该处理数据的状态。
[0023]结合第一方面第二到第四种中任意一种可能的实现方式,在第五种可能的实现方式中,所述待调整的包括待新增的;所述第二工作节点为所述主控节点根据所述流计算系统中各个工作节点的负载状况选择的工作节点;所述第二升级指令用于指示所述第二工作节点创建所述待新增的?2。
[0024]结合第一方面第二到第五种中任意一种可能的实现方式,在第六种可能的实现方式中,所述待调整的包括待删除的;所述第二工作节点为所述待删除的所在的工作节点;所述第二升级指令用于指示所述第二工作节点删除所述待删除的?2。
[0025]结合第一方面,或者第一方面第一至第六种任意一种可能的实现方式,在第七种可能的实现方式中,还包括:
[0026]根据所述流式应用的初始逻辑模型配置所述多个对所述流式应用的数据进行处理。
[0027]结合第一方面,或者第一方面第一至第七种任意一种可能的实现方式,在第八种可能的实现方式中,所述流式应用的初始逻辑模型是用有向无环图表示的。
[0028]第二方面,本发明实施例提供了一种流计算系统中的主控节点,,所述流计算系统包括所述主控节点和至少一个工作节点;其中,多个执行单元分布于所述至少一个工作节点中的一个或多个工作节点上,用于对所述流计算系统上部署的流式应用的数据进行处理,其中所述流式应用的初始逻辑模型用于表示处理所述流式应用的数据的所述多个以及所述多个之间的数据流走向;所述主控节点包括:
[0029]获取及比较模块,用于在所述流式应用更新的情况下,获取所述流式应用更新后的逻辑模型,并通过比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流;
[0030]升级指令生成模块,用于根据所述待调整的数据流,生成升级指令;
[0031]发送模块,用于将所述升级指令下发给第一工作节点,所述第一工作节点是与所述待调整的数据流相关的所在的工作节点,所述升级指令用于指示所述第一工作节点调整其上分布的之间的数据流走向。
[0032]在第二方面的第一种可能的实现方式中,所述获取及比较模块具体用于:
[0033]比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定所述待调整的数据流,其中所述流式应用的初始逻辑模型所表示的与所述更新后的逻辑模型所表不的相同。
[0034]在第二方面的第二种可能的实现方式中,其中所述流式应用的初始逻辑模型所表示的与所述更新后的逻辑模型所表示的不完全相同;
[0035]所述升级指令生成模块具体用于,根据所述待调整的数据流,生成第一升级指令;根据所述待调整的生成第二升级指令;
[0036]所述发送模块具体用于,将所述第一升级指令下发给所述第一工作节点,将所述第二升级指令下发给第二工作节点,所述第二工作节点包括所述待调整的所在的工作节点;所述第一升级指令用于指示所述第一工作节点调整其上分布的之间的数据流走向,所述第二升级指令用于指示所述第二工作节点调整其上分布的的数目。
[0037]结合第二方面,或者第二方面第一至第三种任意一种可能的实现方式,在第三种可能的实现方式中,还包括:
[0038]数据恢复模块,用于根据与所述待调整的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标和所述目标执行数据恢复的检查点
[0039]所述发送模块还用于,向所述目标所在工作节点下发数据恢复指令,所述数据恢复指令用于指示所述目标根据所述恢复数据;
[0040]所述主控节点还包括:输入触发模块,用于当确定所述第一工作节点完成调整,且所述第一工作节点上分布的准备就绪之后,触发所述目标将恢复的数据输入所述目标的下游进行处理。
[0041]结合第二方面第三种可能的实现方式,在第四种可能的实现方式中,所述待调整的数据流包括:待更新的数据流和待删除的数据流;所述数据恢复模块具体用于:
[0042]所述主控节点根据与所述待更新的数据流和待删除的数据流相关的的状态数据,确定执行数据恢复的;根据与所述待更新的数据流和待删除的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标;其中,每个的状态数据是该在输出事件的触发下备份的,用于指示该处理数据的状态。
[0043]结合第二方面第二到第四种中任意一种可能的实现方式,在第五种可能的实现方式中,所述待调整的包括待删除的;所述第二工作节点为所述待删除的所在的工作节点;所述第二升级指令用于指示所述第二工作节点删除所述待删除的?2。
[0044]结合第二方面第二到第五种中任意一种可能的实现方式,在第六种可能的实现方式中,所述待调整的包括待新增的;所述第二工作节点为所述主控节点根据所述流计算系统中各个工作节点的负载状况选择的工作节点;所述第二升级指令用于指示所述第二工作节点创建所述待新增的?2。
[0045]结合第二方面,或者第二方面第一至第六种任意一种可能的实现方式,在第七种可能的实现方式中,还包括:配置模块,用于根据所述流式应用的初始逻辑模型配置所述多个对所述流式应用的数据进行处理。
[0046]第三方面,本发明实施例提供了一种流计算系统,,包括:主控节点和至少一个工作节点,其中,多个执行单元分布于所述至少一个工作节点中的一个或多个工作节点上,用于对所述流计算系统上部署的流式应用的数据进行处理,其中所述流式应用的初始逻辑模型用于表示处理所述流式应用的数据的所述多个以及所述多个之间的数据流走向;
[0047]所述主控节点用于:在所述流式应用更新的情况下,获取所述流式应用更新后的逻辑模型,并通过比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流;根据所述待调整的数据流,生成升级指令;将所述升级指令下发给第一工作节点,所述第一工作节点是与所述待调整的数据流相关的所在的工作节点,所述升级指令用于指示所述第一工作节点调整其上分布的之间的数据流走向;
[0048]所述第一工作节点,用于接收所述主控节点发送的升级指令,根据所述升级指令的指示,调整所述第一工作节点上分布的之间的数据流走向。
[0049]在第三方面的第一种可能的实现方式中,其中所述流式应用的初始逻辑模型所表示的与所述更新后的逻辑模型所表示的相同。
[0050]在第三方面的第二种可能的实现方式中,其中所述流式应用的初始逻辑模型所表示的与所述更新后的逻辑模型所表示的不完全相同;根据所述待调整的数据流,生成第一升级指令;根据所述待调整的生成第二升级指令;
[0051]将所述第一升级指令下发给所述第一工作节点,将所述第二升级指令下发给第二工作节点,所述第二工作节点包括所述待调整的所在的工作节点;
[0052]所述第一工作节点具体用于,接收所述主控节点发送的所述第一升级指令,根据所述第一升级指令的指示,调整所述第一工作节点上分布的之间的数据流走向;
[0053]所述第二工作节点具体用于,接收所述主控节点发送的所述第二升级指令,根据所述第二升级指令的指示,调整所述第二工作节点上分布的的数目。
[0054]结合第三方面,或者第三方面第一至第二种任意一种可能的实现方式,在第三种可能的实现方式中,所述主控节点还用于,根据与所述待调整的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标和所述目标执行数据恢复的检查点0116(^1)01111:;向所述目标?2所在工作节点下发数据恢复指令,所述数据恢复指令用于指示所述目标根据所述恢复数据;当确定所述第一工作节点完成调整,且所述第一工作节点上分布的准备就绪之后,触发所述目标将恢复的数据输入所述目标
的下游进行处理。
[0055]由上述技术方案可知,本发明实施例提供的流式应用升级方法及流计算系统,通过对比流式应用发生更新前后逻辑模型的差异,动态确定待调整的数据流,并根据待调整的数据流生成相应的升级指令下发给工作节点,从而在不需要中断业务的情况下,实现流计算系统中流式应用的在线升级。

【专利附图】

【附图说明】
[0056]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0057]图1为本发明提供的流计算系统架构示意图;
[0058]图2为本发明实施例提供的流式应用的逻辑模型示意图;
[0059]图3为本发明实施例提供的流式应用部署示意图;
[0060]图4为本发明实施例提供的流计算系统工作原理图;
[0061]图5为本发明实施例提供的流式应用升级方法的流程图;
[0062]图6为本发明实施例提供的流式应用更新前后逻辑模型变化示意图;
[0063]图7为本发明实施例提供的流式应用更新前后逻辑模型变化示意图;
[0064]图8为本发明实施例提供的流式应用升级方法的流程图;
[0065]图9为本发明实施例提供的流式应用逻辑模型示意图
[0066]图10为本发明实施例提供的流式应用的逻辑模型调整示意图;
[0067]图11为本发明实施例提供的流式应用升级之后的部署示意图;
[0068]图12为本发明实施例提供的的输入流和输出流的依赖关系不意图;
[0069]图13为本发明实施例提供的的输入流和输出流的依赖关系不意图;
[0070]图14为本发明实施例提供的状态数据备份示意图;
[0071]图15为本发明实施例提供的主控节点示意图;
[0072]图16为本发明实施例提供的流计算系统示意图;
[0073]图17为本发明实施例提供的主控节点示意图。

【具体实施方式】
[0074]为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚地描述。显然,下述的各个实施例都只是本发明一部分的实施例。基于本发明下述的各个实施例,本领域普通技术人员即使没有作出创造性劳动,也可以通过等效变换部分甚至全部的技术特征,而获得能够解决本发明技术问题,实现本发明技术效果的其它实施例,而这些变换而来的各个实施例显然并不脱离本发明所公开的范围。
[0075]本发明实施例提供的技术方案可典型地应用于流计算系统中,图4描述了流计算系统的基本结构,该流计算系统包括:主控节点(1381:610和多个工作节点,在集群部署时,主控节点和工作节点都可以有一个或多个,主控节点可以是与工作节点分离的物理节点;在单机部署时,主控节点和工作节点可以是部署在同一个物理节点上的逻辑单元;其中,物理节点具体可以为计算机或服务器。主控节点负责将数据流调度到工作节点上进行处理。通常情况下,一台物理节点即为一个工作节点,在某些情形下,一台物理节点可以对应于多个工作节点,一台物理节点对应的工作节点的数量取决于该物理节点的硬件物理资源。可以将一个工作节点理解为是一份硬件物理资源。对应于同一物理节点的工作节点间采用进程通信的方式进行通信,对应于不同物理节点的工作节点间采用网络通信的方式进行通信。
[0076]如图4所示,流计算系统包括主控节点、工作节点1、工作节点2和工作节点3。
[0077]主控节点根据流式应用的逻辑模型将流式应用部署到到工作节点1、工作节点2和工作节点3这三个工作节点上进行处理。图3所示的逻辑模型为包含九个执行单元?1~00688 £161116111:):?21至?£9,以及这九个?2之间的数据流走向的逻辑关系图,?2之间数据流的走向也体现了各个的输入流和输出流的依赖关系。需要说明的是,本发明实施例中数据流也简称为流(81^68111)。
[0078]主控节点根据流式应用的逻辑模型,配置工作节点1上的和?23,工作节点2上的?24、?27和?29,以及工作节点3上的?25、?26、?28来对流式应用的数据流进行处理。可以看出,经过配置之后,工作节点1、2、3上的之间的数据流走向与流式应用的逻辑模型是匹配的。
[0079]本发明实施例中的流式应用的逻辑模型可以为有向无环图^0110
、树状图或者含有环的图。流式应用的逻辑模型可以参阅图2进行理解,如图2所示的流式计算应用图包括7个算子,分别从?£1到?£7,有8条数据流,分别从81到88。图2中明确标出了数据流的走向,例如:数据流81是从?£1到算子?25,表示?25处理的是?21输出的流,即?25的输出依赖于?£1的输入,通常也称?£5为?21的下游,而?£1为的上游;可以理解的是,上游和下游是根据之间的数据流走向来确定的,对于一条数据流来说,与其相关的有且仅有两个:输出该数据流的源?2,以及该数据流流向的目的?2 (也即接收该数据流的,从数据流的方向来看,源为目的的上游?2,而目的为源的下游;进一步地,数据流32输入?22,并经?22逻辑处理后,产生两条数据流33和34,分别进入?23和?24进行逻辑处理,同理,?22也为?21的下游?2,而?21为?22的上游;?24输出的数据流54和?23输出的数据流37均作为?26的输入,即?26的输出依赖于和?24的输入。需要说明的是,在本发明实施例中,将输出依赖于单一的输入的定义为无状态四,比如?25,?23,?24 ;将输出依赖于多个的输入的定义为有状态?2,比如?26,?27。数据流中包含单个数据段,称为元组,元组可以是结构化或非结构化数据。通常,元组中可表示特定时间点某事物的状态,流计算系统中的以元组为单位对流式应用产生的数据流进行处理,也可以认为元组是流计算系统中的数据的最小粒度划分和表示。
[0080]还需要说明的是,流计算系统只是本发明技术方案的一个典型应用场景,并不对本发明的应用场景构成限制,其它涉及分布式系统或云计算系统应用部署与升级的应用场景,本发明实施例的技术方案均适用。
[0081]本发明实施例提供一种流式应用升级方法,该方法可典型地应用与图1及图4所示的流计算系统中,假设该流计算系统上部署有流式应用八,且流式应用4的初始逻辑模型为01,则该流计算系统的主控节点根据初始逻辑模型01,部署多个执行单元$£)来对流式应用八的数据流进行处理,其中,该多个执行单元分布于流计算系统的一个或多个工作节点上;如图6所示,当流式应用八发生升级或更新后,其逻辑模型也相应地发生更新(假设更新后的逻辑模型为02),通常逻辑模型的更新一般由开发人员来完成,或者由开发人员借助开发工具来完成,本发明不做特别限定。如图5所示,该流式应用升级方法的主要流程描述如下:
[0082]8501:在流式应用八更新的情况下,流计算系统的主控节点获取流式应用八更新后的逻辑模型02 ;
[0083]8502:主控节点通过对比更新后的逻辑模型02以及初始逻辑模型01,以确定待调整的数据流;
[0084]8503:主控节点根据待调整的数据流,生成升级指令;
[0085]3504:主控节点将生成的升级指令下发给第一工作节点,其中,第一工作节点是与待调整的数据流相关的所在的工作节点,该升级指令用于指示第一工作节点调整其上分布的之间的数据流走向。
[0086]需要说明的是,本发明实施例中的待调整的数据流可以为一条,也可以为多条,视具体的情况而定,而对于每条待调整的数据流来说,与其相关的具体是指该待调整的数据流的源和目的,其中,该待调整的数据流的源为输出该待调整的数据流的?2,待调整的数据流的目的为接收该待调整的数据流的或该待调整的数据流的源的下游?2。
[0087]本发明实施例提供的流式应用升级方法及流计算系统,通过对比流式应用发生更新前后逻辑模型的差异,动态确定待调整的数据流,并根据待调整的数据流生成相应的升级指令下发给工作节点,从而在不需要中断业务的情况下,实现流计算系统中流式应用的在线升级。
[0088]在本发明实施例中,流式应用的逻辑模型用于表示处理该流式应用的数据的多个以及该多个之间的数据流走向;当流式应用发生升级或更新后,其逻辑模型也相应地发生更新,通常情况下,更新后的逻辑模型与初始的逻辑模型的差异主要分为两种类型:
(1)初始逻辑模型所表示的与更新后的逻辑模型所表示的完全相同,仅仅是之间的数据流走向发生变化;(2)初始逻辑模型所表示的与更新后的逻辑模型所表示的不完全相同,同时之间的数据流走向也发生变化;针对上述两种类型的差异,下面分别介绍相应的处理流程。
[0089]在一个具体的实施例中,如图6所示,流式应用的初始逻辑模型所表示的与该流式应用更新后的逻辑模型所表示的完全相同,而之间的数据流走向发生变化,根据图6,流式应用更新前后,其逻辑模型中的均为?21-?27,完全相同,但是数据流走向发生了变化,即原来由流向?26的数据流变为由?£4流向?27的数据流311,同时新增了从?22流向?26的数据流312。在这种情况下,流式应用升级方法的主要流程如下:
[0090]步骤1:通过比较流式应用的初始逻辑模型以及该流式应用更新后的逻辑模型,确定待调整的数据流;其中,该待调整的数据流包括一条或多条数据流;具体地,在一个优选的实施例中,待调整的数据流可以包括:待新增的数据流、待删除的数据流或待更新的数据流中的至少一种,其中待更新的数据流是指流式应用的逻辑模型更新后目的节点或者源节点之一发生变化的数据流;具体到图6所示的情形,待调整的数据流包括:待新增的数据流312、待更新的数据流311。
[0091]步骤2:根据待调整的数据流,生成升级指令;其中,升级指令可以包括一条或多条指令,且升级指令与待调整的数据流的类型相关,例如,若待待调整的数据流包括待新增的数据流和待更新的数据流,则生成的升级指令包括:用于新增数据流的指令和用于更新数据流的指令;其中不同类型的升级指令可以可以为单独的指令,也可以集成到一条指令当中,也本发明不做特别限定。具体到图6所示的情形,生成的升级指令包括:新增数据流812的指令和将数据流36更新为311的指令。
[0092]步骤3:将生成的升级指令下发给第一工作节点,第一工作节点是与待调整的数据流相关的所在的工作节点;可以理解的是,第一工作节点可能为一个或多个,第一工作节点在接收到该升级指令后,执行升级指令所指示的操作,比如新增数据流312,以及将数据流36更新为311,从而使得第一工作节点上分布的之间的数据流走向发生调整,并且调整之后的数据流走向与更新后的逻辑模型相匹配。
[0093]进一步的,由于在第一工作节点对其上分布的之间的数据流进行调整时,可能会使正在处理的数据发生丢失,因此需要对数据进行恢复,具体地,在一个实施例中,在第一工作节点对其上分布的之间的数据流进行调整之前,主控节点根据与待调整的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标和该目标执行数据恢复的检查点0116(^1)01111:;向该目标所在工作节点下发数据恢复指令,该数据恢复指令用于指示该目标根据该0116(^1)01111:恢复数据;当主控节点确定第一工作节点完成调整,且第一工作节点上分布的准备就绪之后,主控节点触发该目标四将恢复的数据输入该目标的下游进行处理。
[0094]需要说明的是,主控节点可以通过主动发送询问消息的方式感知流计算系统中各个工作节点上四的状态,也可以由工作节点将自身分布的各个四的状态上报给主控节点, 的状态包括:运行状态、就绪状态和停止状态;当与上下游的的通道建立成功,就表示出于就绪状态,可以接收数据流并进行处理了。
[0095]可选地,主控节点在执行上述流式应用升级方法步骤之前,还可以根据上述流式应用的初始逻辑模型配置多个对流式应用的数据进行处理。
[0096]本发明实施例提供的流式应用升级方法,通过对比流式应用发生更新前后逻辑模型的差异,动态确定待调整的数据流,并生成相应的升级指令下发给工作节点,以完成流式应用的在线升级,从而可以保证应用升级过程中不需要中断原先业务;进一步的,通过在升级的过程中对数据进行恢复,以确保不会造成关键数据丢失,影响业务运行。
[0097]在另一个具体的实施例中,如图7所示,流式应用的初始逻辑模型所表示的与该流式应用更新后的逻辑模型所表示的不完全相同,且之间的数据流走向也发生了变化,根据图7,流式应用更新前后,其逻辑模型中的数目发生了变化〈?22、?23、?24和
被删除,新增了 ^£94213),数据流走向也发生了变化,即原来的数据流34、35、36和37被删除,同时新增了数据流311-316,原来的数据流33的目的发生了更新,原来的数据流89的源发生了更新。在这种情况下,如图8所示,流式应用升级方法的主要流程如下:
[0098]8801:主控节点通过比较流式应用的初始逻辑模型以及该流式应用更新后的逻辑模型,确定待调整的和待调整的数据流;其中,该待调整的包括一个或多个?2,该待调整的数据流包括一条或多条数据流;具体地,在一个优选的实施例中,该待调整的包括:待新增的或待删除的中的至少一种,待调整的数据流可以包括:待新增的数据流、待删除的数据流或待更新的数据流中的至少一种。
[0099]具体地,如图9所示,主控节点通过对比流式应用更新前后的逻辑模型,可以确定需要将原始逻辑模型中?22、?23、?24和?26组成的子逻辑模型替换成由?29-?213组成的子逻辑模型,才能与更新后的逻辑模型相同;因此,确定?22、?23、?24、?26,以及?29-?213为待调整的(其中,?22、?23、?24和?26为待删除的?2,?29~?213为待新增的?幻,以及确定与待调整的相关的数据流,即待调整的的所有输入流和输出流为待调整的流,如图9中的虚线部分所指示的流为待删除的数据流,黑色加粗部分所指示的流为待新增的数据流,浅色加粗部分所指示的流为待更新的数据流。
[0100]8802:主控节点根据待调整的数据流,生成第一升级指令;根据待调整的生成第二升级指令;其中,第一升级指令和第二升级指令分别可以包括一条或多条指令,且第一升级指令与待调整的数据流的类型相关,第二升级指令与待调整的的类型相关,例如,若待调整的数据流包括待新增的数据流和待更新的数据流,则生成的第一升级指令包括:用于新增数据流的指令和用于更新数据流的指令;若待调整的包括待新增的?2,则生成的第二升级指令包括:用于新增的指令;其中,第一升级指令和第二升级指令可以为单独的指令,也可以集成到一条指令中,也本发明不做特别限定。具体到图7所示的情形,生成的第一升级指令包括:删除数据流的指令、新增数据流的指令和更新数据流的指令,第二升级指令包括:新增的指令,删除的指令。
[0101]在一个具体的实施例中,如图9所示,主控节点通过对比流式应用更新前后的逻辑模型,确定出待调整的和待调整的流之后,可以进一步确定调整策略,即如何对和流进行调整,才能使得调整之后的部署情况(包括的个数以及之间数据流的依赖关系)与流式应用更新后的逻辑模型相匹配。调整策略包含两部分内容:(1)92数目的调整策略,即需要新增哪些和/或需要删除哪些; (2)92之间数据流走向的调整策略,即哪些的数据流走向需要更新,哪些数据流需要增加,以及哪些数据流需要删除。
[0102]在一个优选的实施例中,调整策略主要包括如下情形中的至少一种:
[0103](1)更新流:数据流的目的节点或者源节点之一发生变化;
[0104](2)删除流:数据流流在应用更新后需废弃;
[0105](3)新增流:数据流原先不存在,应用更新后新增的流;
[0106](4)删除?2:应用更新后需废弃的?已;
[0107](5)新增?2:应用更新后新增的?已。
[0108]具体到图7和图9所示的逻辑模型,结合图10可以看出,需要新增5个 $£94213),以及新增?29-?213之间的数据流;需要删除?22、?23、?24和?26,以及删除
?22、?23、?24和?26之间的数据流;同时,由于?£1的输出流的目的四发生了变化(由?已2变为四幻,?27的输入流也发生了变化(由?26的输出流变为?213的输出流,即流的源节点发生变化),因此,需要对?£1的输出流和?27的输入流进行更新。基于上述分析,可以得出调整策略为:
[0109]
[0110](2)新增?29-?213之间的流;其中,?29-?213之间的数据流走向是由更新后的逻辑模型决定的;
[0111]⑶删除?£2、?23、?24和?£6 ;
[0112](4)删除?22、?23、?24 和?26 之间的流;
[0113](5)将?21的输出流的目的四由?22改为?29 ;将?27的输入流的源由?26改为?213。
[0114]调整策略确定之后,基于确定出的调整策略,主控节点即可生成升级指令,升级指令用于指示工作节点(具体而言是待调整的所在的工作节点和待调整的数据流所涉及的所在的工作节点)实施确定出的调整策略。与调整策略相对应,升级指令包括:新增
指令、删除指令、更新流指令、删除流指令或新增流指令中的至少一个。具体到图7和图9所示的逻辑模型,升级指令具体包括:
[0115](1)新增?29-?213 的指令;
[0116](2)新增?29-?213之间的流的指令;
[0117](3)删除?22、?23、?24 和?26 的指令;
[0118](4)删除?22、?23、?24和?26之间的流的指令;
[0119](5)将?21的输出流的目的?2由?22改为?29的指令,以及将?27的输入流的源由?26改为?213的指令。
[0120]3803:主控节点将生成的第一升级指令下发给第一工作节点,将生成的第二升级指令下发给第二工作节点,其中,第一工作节点是与待调整的数据流相关的所在的工作节点,第二工作节点包括待调整的所在的工作节点;可以理解的是,第一工作节点和第二工作节点均可能为一个或多个,并且第一工作节点和第二工作节点可以存在重叠,即一个工作节点可能即属于第一工作节点,也同时属于第二工作节点;第一升级指令用于指示第一工作节点调整其上分布的之间的数据流走向,第二升级指令用于指示所述第二工作节点调整其上分布的的数目;第一工作节点和第二工作节点在接收到升级指令后,执行升级指令所指示的操作,从而使得第一工作节点和第二工作节点上分布的以及之间的数据流走向得到调整。可以理解的是,第二工作节点调整其上分布的的数目具体可以是创建新的和/或删除已创建的?2。
[0121]可选地,在一个具体的实施例中,如果待调整的包括待删除的;则第二工作节点包括该待删除的所在的工作节点;第二升级指令用于指示该第二工作节点删除该待删除的
[0122]可选地,在另一个具体的实施例中,如果待调整的包括待新增的;则第二工作节点可以为主控节点根据流计算系统中各个工作节点的负载状况选择的工作节点,也可以为主控节点随机选择的工作节点;第二升级指令用于指示第二工作节点创建该待新增的?2。
[0123]具体到图7和图9所示的逻辑模型,如图11所示,主控节点将新增?四指令发送给界01^61~2,将新增?210的指令发送给肌将新增?211和?211的指令发送给肌将新增?213的指令发送给恥1^61*6 ;将删除?22、?23的指令发送给肌江匕。,将删除?34、?26的指令发送给恥1^614 ;将删除?22和?23之间流的指令发送给?22和?23初始所在的工作节点10461*3,将删除?23和?26之间数据流的指令发送给?23所在的工作节点^01-1^61-3和?26所在的工作节点101^614 ;其余的指令以此类推,此处不再赘述。需要说明的是,每个工作节点都维护了该工作节点上所有的数据流配置信息,每个的数据流配置信息包括源地址、目的地址、端口号等信息,因此对数据流的删除和更新,实质上是通过修改数据流配置信息来实现的。
[0124]如图11所示,根据主控节点下发的升级指令,2新增了 ?29,肌3删除了 ?22、?23,新增了 ?210,恥4 删除了 ?26、?24,新增了 ?311,?212,恥 6 新增了 ?213 ;同时,^01-1^61-1-6通过删除流、新增流、更新流等操作,对之间的数据流走向也进行了调整,具体而言:新增了 ?四-?213之间的流,删除了 ?22、?23、?24和?26之间的流,将的输出流的目的由改为?29 ;将?27的输入流的源由?26改为?213。从图11可以看出,调整之后的部署情况(包括的个数以及之间数据流的依赖关系)与流式应用八更新后的逻辑模型相匹配。
[0125]进一步的,由于在第一工作节点和第二工作节点对其上分布的以及之间的数据流进行调整时,可能会使正在处理的数据发生丢失,因此需要对数据进行恢复,具体地,在一个实施例中,该流式应用升级方法还包括:
[0126]8804:主控节点根据与待调整的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标和该目标执行数据恢复的检查点0116(^13011^ ;向该目标所在工作节点下发数据恢复指令,该数据恢复指令用于指示该目标根据该01160^01111:恢复数据;当主控节点确定第一工作节点和第二工作节点完成调整,且第一工作节点和第二工作节点上分布的准备就绪之后,主控节点触发该目标将恢复的数据输入该目标的下游进行处理。需要说明的是,主控节点可以通过主动发送询问消息的方式感知流计算系统中各个工作节点上的状态,也可以由工作节点将自身分布的各个的状态上报给主控节点,的状态包括:运行状态、就绪状态和停止状态;当四与上下游的的通道建立成功,就表示出于就绪状态,可以接收数据流并进行处理了。
[0127]在流式应用更新或升级过程中,因为调整的部署需要涉及数据流的调整,而在对的部署进行调整时,可能有些数据正在处理,为了保证升级过程中数据不丢失,需要根据待调整的数据流相关的的的原始输入流和输出流的依赖关系,确定需要进行数据恢复的目标和所述目标执行数据恢复的检查点0116(^1)01111:,以保证在应用升级之前尚未被处理完毕的数据在升级完成之后能够继续被重新处理;其中,这里所说的需要恢复的数据,通常是指元组。
[0128]在一个具体的实施例中,如图12所示,待调整的数据流相关的肫1,?22,?23,?24,?26,?27|组成的子逻辑模型的输入/输出关系如下:元组1广12、13和14由?21输入?22之后,经?22处理之后得到元组匕、4、1?和^,然后元组匕、1^2、1?被输入?已4进行处理,得到叫,元组么被输入?23进行处理,得到1” ?26对叫处理之后得到02,对1工处理之后得到0工。基于上述输入/输出关系,可分析得到待调整的的输入流和输出流的依赖关系,如图13所不:
[0129]依赖于?26的输入1工,而1工依赖于又依赖于12,所以对于整个子逻辑模型而言,的输出0工依赖于?22的输入12 ;
[0130]02依赖于?26的输入叫,而叫依赖于?24的输入和、和1?又依赖于^、“和14,所以对于整个子逻辑模型而言,的输出02依赖于?£2的输入^、“和14。通过分析得出的上述依赖关系可知,?22,?23,?24和?26均依赖于?21的输出,因此,当第一工作节点和第二工作节点对其上分布的以及之间的数据流进行调整时,?22,?23,?24和?26中尚有数据未被处理完毕,则需要对数据恢复,即为目标?2。
[0131]进一步地,根据第一工作节点和第二工作节点对其上分布的以及之间的数据流进行调整时,待调整的数据流相关的备份的最新的状态数据,可以确定输入待调整的数据流相关的的数据当前是否已经处理完毕并输出给下游,进而可以确定目标执行数据恢复的检查点需要说明的是,的状态数据用于表示的处理数据状态,其具体包含的内容是本领域技术人员熟知的,例如状态数据可包括:元组接收队列中的缓存数据、消息通道中的缓存数据、?2在处理自身接收队列中的一个或多个普通元组的过程中产生的数据(比如当前处理的普通元组的处理结果及中间过程数据)中的一种或多种数据。需要说明的是,由于新增数据流并不需要进行数据恢复,因此在确定执行数据恢复的以及需要进行数据恢复的目标时,不需要用到待新增数据流相关的的状态信息,以及待新增数据流相关的的输入流和输出流的依赖关系。例如在一个实施例中,因此如果待调整的数据流中包括:待更新的数据流、待删除的数据流和待新增的数据流,则只需要根据待更新的数据流以及待删除的数据流相关的的状态数据,就可以确定执行数据恢复的根据待更新的数据流以及待删除的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标?2;类似的,如果待调整的数据流中包括:待更新的数据流和待新增的数据流,则只需要根据待更新的数据流相关的的状态数据,以及待更新的数据流相关的的输入流和输出流的依赖关系,就可以确定执行数据恢复的吐一土即丨社,以及需要进行数据恢复的目标?已。
[0132]需要说明的是,在本发明的一个实施例中,?2的状态数据是周期性备份的,即流计算系统周期性地触发各个对自身的状态数据进行备份,在收到检查点事件之后,进行将自身当前的状态数据进行备份,并记录同时清理过期的数据。本领域技术人员可以理解的是,可以理解为数据备份的记录点或者是备份数据的索引,一个对应于一次数据备份操作,在不同的时候备份的数据具有不同的且通过可以查询并得到在该下备份的数据。在本发明的另一个实施例中,可以使用输出触发机制(由输出触发)来进行状态数据的备份,如图14所示,当完成对输入流I即111^31:1*6211111-5的处理,并输出处理结果011如1113廿6孤11时,触发模块触发状态数据处理模块,状态数据处理模块进而启动新的01160^01111:记录最新的状态数据至内存或磁盘,这样的触发方式精准有效,相比于周期性触发的方式,效率更好,可避免过多的资源消耗;进一步地,状态数据处理模块还可以清理上一个0116(^1)01111:记录的历史数据,从而减少中间数据,有效节省存储空间。
[0133]下面以图12所示的情形为例,详细说明根据的输入流和输出流的依赖关系和状态数据来确定需要进行数据恢复的目标和该目标执行数据恢复的检查点0^60^0111^的过程:若根据待调整的数据流相关的丨?21,?22,?23,?24,?26,?27|的状态数据判断出输入?£6尚未完成对元组叫的处理,或者对元组1111处理之后得到的02尚未送达?26的下游:?27,则根据上述输入流和输出流的依赖关系可以确定出:02所依赖的13和14需要被恢复,且应该由输出13和14的四1来完成数据恢复,即需要恢复数据的目标?2为?21,从而可以确定出可以恢复出13和14的0116(^1)01111:。这样,在第一工作节点和第二工作节点调整自身四的部署情况之前,目标可以根据确定出的恢复数据^、^和14,且当第一工作节点和所述第二工作节点完成调整,且第一工作节点和第二工作节点上分布的准备就绪之后,目标重新将恢复的数据和14其下游进行处理,从而确保升级过程中不会发生数据的丢失,达到无损升级的目的。
[0134]可选地,主控节点在执行上述流式应用升级方法步骤之前,还可以根据上述流式应用的初始逻辑模型配置多个对流式应用的数据进行处理。
[0135]本发明实施例提供的流式应用升级方法,通过对比流式应用发生更新前后逻辑模型的差异,动态确定待调整的数据流,并生成相应的升级指令下发给工作节点,以完成流式应用的在线升级,从而可以保证应用升级过程中不需要中断原先业务;进一步的,通过在升级的过程中对数据进行恢复,以确保不会造成关键数据丢失,影响业务运行。
[0136]基于上述方法及系统实施例,本发明实施例还提供一种流计算系统中的主控节点,该主控节点可以为一台计算机或服务器;该流计算系统还包括至少一个工作节点;假设该流计算系统上部署有流式应用八,多个执行单元$£)分布于上述至少一个工作节点中的一个或多个工作节点上,用于对流式应用八的数据进行处理,其中流式应用八的逻辑模型用于表示处理该流式应用的数据的多个以及该多个之间的数据流走向;假设流式应用八的初始逻辑模型为01,当流式应用纟发生升级或更新后,其逻辑模型也相应地发生更新(假设更新后的逻辑模型为02),如图15所示,主控节点30包括:
[0137]获取及确定模块301,用于在流式应用八发生更新的情况下,获取流式应用八更新后的逻辑模型02,并通过对比更新后的逻辑模型02以及初始逻辑模型01,以确定待调整的数据流;
[0138]升级指令生成模块302,用于根据待调整的流,生成升级指令;
[0139]发送模块303,用于将生成的升级指令下发给第一工作节点,以使第一工作节点根据该升级指令的指示,调整第一工作节点上分布的之间的数据流走向;其中第一工作节点是流计算系统包含的工作节点中的一个或多个工作节点,且第一工作节点是与待调整的数据流相关的所在的工作节点。
[0140]需要说明的是,本发明实施例中的待调整的数据流可以为一条,也可以为多条,视具体的情况而定,而对于每条待调整的数据流来说,与其相关的具体是指该待调整的数据流的源和目的,其中,该待调整的数据流的源为输出该待调整的数据流的?2,待调整的数据流的目的为接收该待调整的数据流的或该待调整的数据流的源的下游?2。
[0141]本发明实施例提供的流计算系统中的主控节点,通过对比流式应用发生更新前后逻辑模型的差异,动态确定待调整的数据流,并根据待调整的数据流生成相应的升级指令下发给工作节点,从而在不需要中断业务的情况下,实现流计算系统中流式应用的在线升级。
[0142]进一步地,根据更新后的逻辑模型与初始的逻辑模型的差异的类型,获取及确定模块301的在具体的处理细节上也存在一定差异。例如,在一个优选的实施例中,获取及比较模块301具体用于:
[0143]比较流式应用八的初始逻辑模型以及所述更新后的逻辑模型,以确定待调整的数据流,其中流式应用八的初始逻辑模型01所表示的与更新后的逻辑模型02所表示的相同。
[0144]在另一个优选的实施例中,获取及比较模块301具体用于:比较初始逻辑模型01以及更新后的逻辑模型02,以确定待调整的以及待调整的数据流,其中流式应用八的初始逻辑模型01所表示的与更新后的逻辑模型02所表示的不完全相同。相应地,在这种情况下,升级指令生成模块302具体用于,根据获取及比较模块301确定的待调整的数据流,生成第一升级指令;根据获取及比较模块301确定的待调整的生成第二升级指令;发送模块303具体用于:将:第一升级指令下发给第一工作节点,将第二升级指令下发给第二工作节点,其中第二工作节点包括待调整的所在的工作节点,第一升级指令用于指示第一工作节点调整其上分布的之间的数据流走向,第二升级指令用于指示第二工作节点调整其上分布的的数目。
[0145]进一步地,在一个优选的实施例中,主控节点30还包括:
[0146]数据恢复模块304,用于根据与待调整的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标和该目标执行数据恢复的0116(^13011^ ;
[0147]发送模块303还用于,在数据恢复模块304确定出目标和也况虹乂的之后,向所述目标所在工作节点下发数据恢复指令,所述数据恢复指令用于指示所述目标根据所述也?虹乂#恢复数据;可以理解的是,该数据恢复指令是根据数据恢复模块304确定出的目标和中来构造的,其包含有指示该的信息。
[0148]相应地,主控节点30还包括:输入触发模块305,用于当确定第一工作节点完成调整,且第一工作节点上分布的均准备就绪之后,触发数据恢复模块304确定出的目标将恢复的数据输入所述目标的下游进行处理。
[0149]本发明实施例提供的流计算系统中的主控节点,通过对比流式应用发生更新前后逻辑模型的差异,动态确定待调整的数据流,并生成相应的升级指令下发给工作节点,以完成流式应用的在线升级,从而可以保证应用升级过程中不需要中断原先业务;进一步的,由于在升级的过程中对数据进行了恢复,因此不会造成关键数据丢失,影响业务运行。
[0150]本发明提供的流计算系统中的主控节点用于实施上述方法实施例中的流式应用升级方法,其具体实现细节,可以参照上述方法实施例,此处不再赘述。
[0151]本发明实施例还提供一种流计算系统,用于实现本发明实施例提供的流式应用升级方法,如图16所示,该流计算系统包括:主控节点30和至少一个工作节点(如图16中的工作节点31-34);主控节点30根据流式应用的初始逻辑模型配置多个执行单元$£)来对该流式应用的数据流进行处理,流式应用的初始逻辑模型用于表示处理所述流式应用的数据的多个以及该多个之间的数据流走向;其中,如图16所示,配置的多个分布于一个或多个工作节点上;主控节点30用于:在流式应用八发生更新的情况下,获取流式应用更新后的逻辑模型,并通过对比更新后的逻辑模型以及初始逻辑模型,以确定待调整的数据流;根据待调整的流,生成升级指令;将生成的升级指令下发给第一工作节点,其中第一工作节点是该流计算系统包含的工作节点中的一个或多个工作节点,且第一工作节点是与待调整的数据流相关的所在的工作节点。
[0152]第一工作节点,用于接收主控节点30发送的升级指令,根据该升级指令的指示,调整第一工作节点上分布的之间的数据流走向。
[0153]本发明实施例提供的流计算系统,通过对比流式应用发生更新前后逻辑模型的差异,动态确定待调整的数据流,并生成相应的升级指令下发给工作节点,以完成流式应用的在线升级,从而可以保证应用升级过程中不需要中断原先业务。
[0154]具体地,在一个实施例中,升级指令包括:新增指令、删除指令、更新流指令、删除流指令或新增流指令中的至少一个。相应地,第一工作节点在接收到升级指令后执行:新增执行单元、删除执行单元、更新流、删除流或新增流中的至少一项操作,使得执行上述操作之后的部署情况(包括的个数以及之间数据流的依赖关系)与流式应用八更新后的逻辑模型相匹配。
[0155]优选地,在一个实施例中,主控节点具体用于:比较流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定待调整的数据流,其中流式应用的初始逻辑模型所表示的
与更新后的逻辑模型所表示的相同。
[0156]优选地,在另一个实施例中,主控节点具体用于:比较流式应用的初始逻辑模型以及更新后的逻辑模型,以确定待调整的以及待调整的数据流,其中流式应用的初始逻辑模型所表示的与更新后的逻辑模型所表示的不完全相同;根据待调整的数据流,生成第一升级指令;根据待调整的生成第二升级指令;将第一升级指令下发给第一工作节点,将第二升级指令下发给第二工作节点;其中,第一工作节点是与待调整的数据流相关的
所在的工作节点,第二工作节点包括待调整的所在的工作节点。相应地,第一工作节点具体用于,接收主控节点30发送的第一升级指令,根据第一升级指令的指示,调整第一工作节点上分布的之间的数据流走向;第二工作节点用于,接收主控节点30发送的第二升级指令,根据第二升级指令的指示,调整第二工作节点上分布的的数目。
[0157]优选地,在另一个实施例中,主控节点30还用于,根据与待调整的数据流相关的的输入流和输出流的依赖关系,确定需要进行数据恢复的目标和该目标执行数据恢复的检查点0116(^1)01111:;向该目标所在工作节点下发数据恢复指令,该数据恢复指令用于指示该目标根据该也60虹01社恢复数据;当确定第一工作节点完成调整,且第一工作节点上分布的均准备就绪之后,触发该目标将恢复的数据输入该目标的下游进行处理。
[0158]需要说明的是,本发明提供的流计算系统用于实施上述方法实施例这种的流式应用升级方法,其具体实现细节,可以参照上述方法实施例,此处不再赘述。本发明实施例中的执行单元$£)可以以软件形态存在,例如进程、线程或软件功能模块,也可以以硬件的形态存在,比如处理器核,或具有数据处理能力的逻辑电路等,通过读取存储器中的可执行代码或业务处理逻辑,实现本发明实施例所描述的功能,本发明不做特别限定。
[0159]本发明实施例还提供一种流计算系统中的主控节点,该主控节点可以为一台计算机或服务器。图17是本发明实施例提供的主控节点40的结构示意图。主控节点40可包括输入设备410、输出设备420、处理器430和存储器440。
[0160]本发明实施例提供的主控节点40应用于流计算系统,所述流计算系统还包括工作节点,所述流计算系统部署有流式应用。
[0161]存储器440可以包括只读存储器和随机存取存储器,并向处理器430提供指令和数据。存储器440的一部分还可以包括非易失性随机存取存储器(附狀的。
[0162]存储器440存储了操作指令、操作系统(包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务)、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集。
[0163]在本发明实施例中,当该流式应用发生更新后,处理器430通过调用存储器440存储的操作指令(该操作指令可存储在操作系统中),执行如下操作:
[0164]通过输入设备410获取该流式应用更新后的逻辑模型,通过对比更新后的逻辑模型以及初始逻辑模型,以确定待调整的数据流;根据待调整的流,生成升级指令;将生成的升级指令下发给第一工作节点,其中第一工作节点是该流计算系统包含的工作节点中的一个或多个工作节点,且第一工作节点是与待调整的数据流相关的所在的工作节点。
[0165]本发明实施例提供的主控节点,对比流式应用发生更新前后逻辑模型的差异,动态确定待调整的数据流,并生成相应的升级指令下发给工作节点,以完成流式应用的在线升级,从而可以保证应用升级过程中不需要中断原先业务。
[0166]处理器430控制业务处理的装置40的操作,处理器430还可以称为?1~006881118 中央处理单元)。存储器440可以包括只读存储器和随机存取存储器,并向处理器430提供指令和数据。存储器440的一部分还可以包括非易失性随机存取存储器(附狀1)。具体的应用中,业务处理的装置40的各个组件通过总线系统450耦合在一起,其中总线系统450除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统450。
[0167]上述本发明实施例揭示的方法可以应用于处理器430中,或者由处理器430实现。处理器430可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器430中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器430可以是通用处理器、数字信号处理器(039)、专用集成电路(八310、现成可编程门阵列(冲以)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器440,处理器430读取存储器440中的信息,结合其硬件完成上述方法的步骤。
[0168]应该理解,在本申请所提供的几个实施例所揭露数据备份和流计算系统还可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。
[0169]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0170]另外,在本发明各个实施例提供的网络设备中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0171]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括山盘、移动硬盘、只读存储器
、随机存取存储器^00688、磁碟或者光盘等各种可以存储程序代码的介质。
[0172]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种流式应用升级方法,其特征在于,应用于流计算系统中的主控节点,所述流计算系统包括所述主控节点和至少一个工作节点,其中,多个执行单元PE分布于所述至少一个工作节点中的一个或多个工作节点上,用于对所述流计算系统上部署的流式应用的数据进行处理,其中所述流式应用的初始逻辑模型用于表示处理所述流式应用的数据的所述多个PE以及所述多个PE之间的数据流走向;所述方法包括: 在所述流式应用更新的情况下,所述主控节点获取所述流式应用更新后的逻辑模型,并通过比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流; 根据所述待调整的数据流,生成升级指令; 将所述升级指令下发给第一工作节点,所述第一工作节点是与所述待调整的数据流相关的PE所在的工作节点,所述升级指令用于指示所述第一工作节点调整所述第一工作节点上分布的PE之间的数据流走向。
2.根据权利要求1所述的升级方法,其特征在于,所述比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流包括: 比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定所述待调整的数据流,其中所述流式应用的初始逻辑模型所表示的PE与所述更新后的逻辑模型所表示的PE相同。
3.根据权利要求1所述的升级方法,其特征在于,所述通过比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流包括: 比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定待调整的PE以及所述待调整的数据流,其中所述流式应用的初始逻辑模型所表示的PE与所述更新后的逻辑模型所表示的PE不完全相同; 所述根据所述待调整的数据流,生成升级指令包括: 根据所述待调整的数据流,生成第一升级指令;根据所述待调整的PE生成第二升级指令; 所述将所述升级指令下发给第一工作节点包括: 将所述第一升级指令下发给所述第一工作节点,将所述第二升级指令下发给第二工作节点,所述第二工作节点包括所述待调整的PE所在的工作节点;所述第一升级指令用于指示所述第一工作节点调整所述第一工作节点上分布的PE之间的数据流走向,所述第二升级指令用于指示所述第二工作节点调整所述第二工作节点上分布的PE的数目。
4.根据权利要求1-3任一项所述的升级方法,其特征在于,还包括: 所述主控节点根据与所述待调整的数据流相关的PE的输入流和输出流的依赖关系,确定需要进行数据恢复的目标PE和所述目标PE执行数据恢复的检查点checkpoint ; 向所述目标PE所在工作节点下发数据恢复指令,所述数据恢复指令用于指示所述目标PE根据所述checkpoint恢复数据; 当确定所述第一工作节点完成调整,且所述第一工作节点上分布的PE准备就绪之后,所述主控节点触发所述目标PE将恢复的数据输入所述目标PE的下游PE进行处理。
5.根据权利要求4所述的升级方法,其特征在于,所述待调整的数据流包括:待更新的数据流和待删除的数据流;所述主控节点根据与所述待调整的数据流相关的PE的输入流和输出流的依赖关系,确定需要进行数据恢复的目标PE和所述目标PE执行数据恢复的检查点checkpoint,包括: 所述主控节点根据与所述待更新的数据流和待删除的数据流相关的PE的状态数据,确定执行数据恢复的checkpoint ;根据与所述待更新的数据流和待删除的数据流相关的PE的输入流和输出流的依赖关系,确定需要进行数据恢复的目标PE ;其中,每个PE的状态数据是该PE在输出事件的触发下备份的,用于指示该PE处理数据的状态。
6.根据权利要求3至5任一项所述的升级方法,其特征在于,所述待调整的PE包括待新增的PE ;所述第二工作节点为所述主控节点根据所述流计算系统中各个工作节点的负载状况选择的工作节点;所述第二升级指令用于指示所述第二工作节点创建所述待新增的PE0
7.根据权利要求3至6任一项所述的升级方法,其特征在于,所述待调整的PE包括待删除的PE ;所述第二工作节点为所述待删除的PE所在的工作节点;所述第二升级指令用于指示所述第二工作节点删除所述待删除的PE。
8.根据权利要求1至7任一项所述的升级方法,其特征在于,还包括: 根据所述流式应用的初始逻辑模型配置所述多个PE对所述流式应用的数据进行处理。
9.根据权利要求1至8任一项所述的升级方法,其特征在于,所述流式应用的初始逻辑模型是用有向无环图DAG表示的。
10.一种流计算系统中的主控节点,其特征在于,所述流计算系统包括所述主控节点和至少一个工作节点;其中,多个执行单元PE分布于所述至少一个工作节点中的一个或多个工作节点上,用于对所述流计算系统上部署的流式应用的数据进行处理,其中所述流式应用的初始逻辑模型用于表示处理所述流式应用的数据的所述多个PE以及所述多个PE之间的数据流走向;所述主控节点包括: 获取及比较模块,用于在所述流式应用更新的情况下,获取所述流式应用更新后的逻辑模型,并通过比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流; 升级指令生成模块,用于根据所述待调整的数据流,生成升级指令; 发送模块,用于将所述升级指令下发给第一工作节点,所述第一工作节点是与所述待调整的数据流相关的PE所在的工作节点,所述升级指令用于指示所述第一工作节点调整所述第一工作节点上分布的PE之间的数据流走向。
11.根据权利要求10所述的主控节点,其特征在于,所述获取及比较模块具体用于: 比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定所述待调整的数据流,其中所述流式应用的初始逻辑模型所表示的PE与所述更新后的逻辑模型所表示的PE相同。
12.根据权利要求10所述的主控节点,其特征在于,所述获取及比较模块具体用于匕较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定待调整的PE以及所述待调整的数据流,其中所述流式应用的初始逻辑模型所表示的PE与所述更新后的逻辑模型所表示的PE不完全相同; 所述升级指令生成模块具体用于,根据所述待调整的数据流,生成第一升级指令;根据所述待调整的PE生成第二升级指令; 所述发送模块具体用于,将所述第一升级指令下发给所述第一工作节点,将所述第二升级指令下发给第二工作节点,所述第二工作节点包括所述待调整的PE所在的工作节点;所述第一升级指令用于指示所述第一工作节点调整所述第一工作节点上分布的PE之间的数据流走向,所述第二升级指令用于指示所述第二工作节点调整所述第二工作节点上分布的PE的数目。
13.根据权利要求10至13任一项所述的主控节点,其特征在于,还包括: 数据恢复模块,用于根据与所述待调整的数据流相关的PE的输入流和输出流的依赖关系,确定需要进行数据恢复的目标PE和所述目标PE执行数据恢复的检查点checkpoint ; 所述发送模块还用于,向所述目标PE所在工作节点下发数据恢复指令,所述数据恢复指令用于指示所述目标PE根据所述checkpoint恢复数据; 所述主控节点还包括:输入触发模块,用于当确定所述第一工作节点完成调整,且所述第一工作节点上分布的PE准备就绪之后,触发所述目标PE将恢复的数据输入所述目标PE的下游PE进行处理。
14.根据权利要求13所述的主控节点,其特征在于,所述待调整的数据流包括:待更新的数据流和待删除的数据流;所述数据恢复模块具体用于: 所述主控节点根据与所述待更新的数据流和待删除的数据流相关的PE的状态数据,确定执行数据恢复的checkpoint ;根据与所述待更新的数据流和待删除的数据流相关的PE的输入流和输出流的依赖关系,确定需要进行数据恢复的目标PE ;其中,每个PE的状态数据是该PE在输出事件的触发下备份的,用于指示该PE处理数据的状态。
15.根据权利要求12至14任一项所述的主控节点,其特征在于,所述待调整的PE包括待删除的PE ;所述第二工作节点为所述待删除的PE所在的工作节点;所述第二升级指令用于指示所述第二工作节点删除所述待删除的PE。
16.根据权利要求12至15任一项所述的主控节点,其特征在于,所述待调整的PE包括待新增的PE ;所述第二工作节点为所述主控节点根据所述流计算系统中各个工作节点的负载状况选择的工作节点;所述第二升级指令用于指示所述第二工作节点创建所述待新增的PE。
17.一种流计算系统,其特征在于,包括:主控节点和至少一个工作节点,其中,多个执行单元PE分布于所述至少一个工作节点中的一个或多个工作节点上,用于对所述流计算系统上部署的流式应用的数据进行处理,其中所述流式应用的初始逻辑模型用于表示处理所述流式应用的数据的所述多个PE以及所述多个PE之间的数据流走向; 所述主控节点用于:在所述流式应用更新的情况下,获取所述流式应用更新后的逻辑模型,并通过比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流;根据所述待调整的数据流,生成升级指令;将所述升级指令下发给第一工作节点,所述第一工作节点是与所述待调整的数据流相关的PE所在的工作节点,所述升级指令用于指示所述第一工作节点调整所述第一工作节点上分布的PE之间的数据流走向; 所述第一工作节点,用于接收所述主控节点发送的升级指令,根据所述升级指令的指示,调整所述第一工作节点上分布的PE之间的数据流走向。
18.根据权利要求17所述的流计算系统,其特征在于,在比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,确定待调整的数据流的方面,所述主控节点具体用于:比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定所述待调整的数据流,其中所述流式应用的初始逻辑模型所表示的PE与所述更新后的逻辑模型所表示的PE相同。
19.根据权利要求17所述的流计算系统,其特征在于,所述主控节点具体用于,比较所述流式应用的初始逻辑模型以及所述更新后的逻辑模型,以确定待调整的PE以及所述待调整的数据流,其中所述流式应用的初始逻辑模型所表示的PE与所述更新后的逻辑模型所表示的PE不完全相同;根据所述待调整的数据流,生成第一升级指令;根据所述待调整的PE生成第二升级指令;将所述第一升级指令下发给所述第一工作节点,将所述第二升级指令下发给第二工作节点,所述第二工作节点包括所述待调整的PE所在的工作节点; 所述第一工作节点具体用于,接收所述主控节点发送的所述第一升级指令,根据所述第一升级指令的指示,调整所述第一工作节点上分布的PE之间的数据流走向; 所述第二工作节点具体用于,接收所述主控节点发送的所述第二升级指令,根据所述第二升级指令的指示调整所述第二工作节点上分布的PE的数目。
20.根据权利要求17至19任一项所述的流计算系统,其特征在于,所述主控节点还用于,根据与所述待调整的数据流相关的PE的输入流和输出流的依赖关系,确定需要进行数据恢复的目标PE和所述目标PE执行数据恢复的检查点checkpoint ;向所述目标PE所在工作节点下发数据恢复指令,所述数据恢复指令用于指示所述目标PE根据所述checkpoint恢复数据;当确定所述第一工作节点完成调整,且所述第一工作节点上分布的PE准备就绪之后,触发所述目标PE将恢复的数据输入所述目标PE的下游PE进行处理。
【文档编号】G06F9/38GK104317556SQ201410568236
【公开日】2015年1月28日 申请日期:2014年10月22日 优先权日:2014年10月22日
【发明者】洪斯宝, 夏命榛, 张松山 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1