一种应用升级方法及装置与流程

文档序号:11677310阅读:209来源:国知局
一种应用升级方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种应用升级方法及装置。



背景技术:

一个系统提供给用户的各种服务其实是由对应的各种应用来支持的。

通常,运行中的应用会一直接收其它数据源(如系统、应用、客户端等)回流的数据。以推荐场景为例,用户a查看了一篇文章,那么该行为数据(即查看这篇文章)就会通过日志回流到系统中,该系统解析日中后,查询用户a的好友信息;接着将用户a的行为数据和好友信息回流到推荐应用中;这样,推荐应用就可以基于回流数据给用户a的好友推荐类似于“您的好友a看过了xx文章”的信息。这种应用由于需要实时地给用户提供服务,所以对可用性要求较高。但是,一个应用不可避免的都会需要进行升级。

现有技术中,应用升级流程如图1所示,在升级过程中,各个环节都需要人工确认后进行操作,包括:

a1:人工停止老应用从数据源接收回流的数据;

a2:在人工确认所述老应用内未处理的数据处理完毕后,人工向应用管理模块提交关闭所述老应用的命令(即kill命令);

a3:在人工确定应用管理模块完全关闭所述老应用后,人工向应用管理模块提交启动新应用的命令(即start命令);

a4:等待应用管理模块启动完毕所述新应用。

如上所述,由于应用是停机升级,所以整个升级过程直到新应用启动完毕之前都无法给用户提供服务。而且,由于各个环节都需要人工参与,所以整个应用升级所需时间比较多,如图1中a1到a2之间耗时大于4分钟,a2到a3之间耗时大于3分钟,a3待a4之间耗时大于3分钟,整个升级过程耗时需要10分钟以上。

综上所述,现有技术中存在有应用升级耗时较多的问题。



技术实现要素:

本申请提供的一种应用升级方法及装置,以解决现有技术中应用升级耗时较多的问题。

根据本申请实施例提供的一种应用升级方法,所述方法应用于应用管理模块,所述方法包括:

获取被提交应用的应用名;

在所述被提交应用与已存在的应用重名的情况下,触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数;

在接收到所述已存在的应用返回的执行完毕信息的情况下,回收所述各节点占用的进程;

在回收完毕的情况下,触发预设的启动命令,从而启动所述被提交应用中各节点对应的进程。

可选的,在所述被提交应用与已存在的应用重名的情况下,触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数,具体包括:

在所述被提交应用与已存在的应用重名的情况下,判断是否接收到提交的针对所述已存在的应用的升级命令;

在接收到提交的针对所述已存在的应用的升级命令的情况下,触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数。

可选的,所述应用包括jstorm应用;

所述进程包括jvm进程。

根据本申请实施例提供的一种关闭应用方法,所述方法应用于待升级的应用,所述方法包括:

在被应用管理模块调用节点的结束函数后,停止根节点接收回流的数据,并将所述根节点确定为当前节点;

处理当前节点内的数据并发送到下游节点;

在当前节点内的数据处理完毕并且接收到上游全部节点广播的结束标识后,向所述当前节点的下游全部子节点广播结束标识;

在当前节点存在下一个节点的情况下,将下一个节点确定为当前节点,返回执行所述处理当前节点内的数据并发送到下游节点的步骤;

在当前节点为最后一个节点的情况下,所述根节点向所述应用管理模块返回执行完毕信息,从而等待所述应用管理模块回收各节点对应的进程。

可选的,所述应用包括jstorm应用;

所述进程包括jvm进程。

根据本申请实施例提供的一种应用升级装置,所述装置应用于应用管理模块,所述装置包括:

获取单元,获取被提交应用的应用名;

调用单元,在所述被提交应用与已存在的应用重名的情况下,触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数;

回收单元,在接收到所述已存在的应用返回的执行完毕信息的情况下,回收所述各节点占用的进程;

启动单元,在回收完毕的情况下,触发预设的启动命令,从而启动所述被提交应用中各节点对应的进程。

可选的,所述调用单元,具体包括:

判断子单元,在所述被提交应用与已存在的应用重名的情况下,判断是否接收到提交的针对所述已存在的应用的升级命令;

调用子单元,在接收到提交的针对所述已存在的应用的升级命令的情况下,触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数。

可选的,所述应用包括jstorm应用;

所述进程包括jvm进程。

根据本申请实施例提供的一种关闭应用装置,所述装置应用于待升级的应用,所述装置包括:

停止接收单元,在被应用管理模块调用节点的结束函数后,停止根节点接收回流的数据,并将所述根节点确定为当前节点;

处理数据单元,处理当前节点内的数据并发送到下游节点;

广播标识单元,在当前节点内的数据处理完毕并且接收到上游全部节点广播的结束标识后,向所述当前节点的下游全部子节点广播结束标识;

控制单元,在当前节点存在下一个节点的情况下,将下一个节点确定为当前节点后输入到所述处理数据单元中;

返回信息单元,在当前节点为最后一个节点的情况下,所述根节点向所述应用管理模块返回执行完毕信息,从而等待所述应用管理模块回收各节点对应的进程。

可选的,所述应用包括jstorm应用;

所述进程包括jvm进程。

本申请实施例中,对应用管理模块(topologymanager,tm)进行改造,使得所述应用管理模块可以允许用户提交重名的应用。如此,在所述应用管理模块检测到用户提交了重名应用时,可以自动地对已存在的重名应用进行升级。这样,避免了现有技术中应用升级过程中需要人为参与所造成的耗时较多的问题,从而大大减少了应用升级所消耗的时间。本申请实施例还对应用的结束流程进行改造,使得任意节点在处理完毕其内的数据以及在接收到全部上游节点广播的结束标识的情况下,需要向下游全部节点广播结束标识;在全部节点都处理完数据后,根节点才可以向应用管理模块返回执行完毕信息,从而等待应用管理模块回收各节点对应的进程。如此,通过结束标识可以确保应用的每一个节点内的数据都处理完毕,保证了数据处理的完整性,避免人为确定数据处理完毕时可能遗漏的情况,而且由于没有人为参与,因此大大减少了应用升级所消耗的时间。

附图说明

图1是现有技术中应用升级方法的流程图;

图2是本申请一实施例提供的应用升级方法的流程图;

图3是本申请一实施例提供的提示信息示意图;

图4是本申请一实施例提供的应用中的各节点示意图;

图5是本申请一实施例提供的关闭应用方法的流程图;

图6是本申请提供的应用升级装置所在设备的一种硬件结构图;

图7是本申请一实施例提供的应用升级装置的模块示意图;

图8是本申请提供的关闭应用装置所在设备的一种硬件结构图;

图9是本申请一实施例提供的关闭应用装置的模块示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以下举例说明本申请实施例可以应用的jstorm的场景中。

storm是一种开源的分布式容错实时计算系统,使用storm可以降低并行批量处理数据的复杂度。一般的,storm被用在对实时处理的系统中。

jstorm是用java重新实现了类storm的系统。jstorm继承了storm的所有优点,并且jstorm比storm更强大、更稳定、性能更好。

一般的,jstorm应用可以部署在系统的应用管理模块中(topologymanager,tm)。jstorm应用与应用管理模块之间可以进行通信,并完成应用升级等功能。

请参见图2,为本申请一实施例提供的应用升级方法的流程图,该实施例从应用管理模块侧进行描述,包括以下步骤:

步骤110:获取被提交应用的应用名。

本实施例中,通过对应用管理模块进行改造,允许用户在应用管理模块中提交同名的应用。

所述应用管理模块在用户提交应用后,可以获取被提交应用的应用名。

步骤120:在所述被提交应用与已存在的应用重名的情况下,触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数。

本实施例中,如果用户提供的应用与已存在的应用重名,则说明需要对已存在的重名应用进行升级,并且所述应用管理器自动地进入升级流程,即触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数。

所述结束函数用于节点处理未处理完毕的数据进而等待回收该节点对应的进程。

步骤130:在接收到所述已存在的应用返回的执行完毕信息的情况下,回收所述各节点占用的进程。

本实施例中,应用管理模块在调用所述已存在的应用中各节点的结束函数后,需要等待所述已存在的应用中各节点处理未处理完毕的数据。

一般的,已存在的应用处理完数据后,会返回一个执行完毕信息;所以应用管理模块在接收到所述已存在的应用返回的执行完毕信息的情况下,则说明所述已存在的应用内未处理完的数据已经都处理完毕了,因此,可以回收所述各节点占用的进程。

步骤140:在回收完毕的情况下,触发预设的启动命令,从而启动所述被提交应用中各节点对应的进程。

本实施例中,应用管理模块在回收了所述已存在的应用所有节点占用的进程后,则说明所述已存在的应用已经完全关闭了,接着可以启动所述被提交应用了;

具体地,在回收完毕的情况下,触发预设的启动命令,从而启动所述被提交应用中各节点对应的进程。

在等待所述被提交应用中各节点对应的进程都启动后,则说明所述被提交应用已经启动。如此,整个应用升级过程结束。

通过本实施例,对应用管理模块进行改造,使得所述应用管理模块可以允许用户提交重名的应用。如此,在所述应用管理模块检测到用户提交了重名应用时,可以自动地对已存在的重名应用进行升级。这样,大大减少了应用升级所消耗的时间(可以缩短到3分钟左右),避免了现有技术中应用升级过程中需要人为参与所造成的耗时较多的问题。

上述实施例中,应用管理模块只要检测到提交应用出现重名时,会自动地对已存在的重名应用进行升级,即关闭老应用(已存在的应用),启动新应用(提交的应用)。这样,虽然可以大大缩短应用升级时间,但是在实际应用中,提交应用是人为操作的,而人为操作往往具有很多不确定因素,例如用户提交的应用虽然重名,但并不是升级老应用的,只是命名相同的另一个应用。这种情况下,通过上述实施例提供的应用升级方法,就会直接对老应用进行升级,这样就会出现升级错误。

为了解决这样问题,在本申请的另一个实施例中,所述步骤120,具体可以包括如下步骤:

在所述被提交应用与已存在的应用重名的情况下,判断是否接收到提交的针对所述已存在的应用的升级命令;

在接收到提交的针对所述已存在的应用的升级命令的情况下,触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数。

本实施例中与上述实施例相比,应用管理模块在检测到提交应用重名时,不会直接对已存在的应用进行升级,而是需要经过用户确定,用户确定后,可以返回一个升级命令。应用管理模块只有在接收到提交的针对所述已存在的应用的升级命令的情况下,才会触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数。

如图3所示的提示信息示意图中,应用管理模块可以输出一个用于确定的提示信息“您确定对应用进行升级吗”,还可以显示重名的已存在应用详情和重名的提交应用详情。

通过本实施例,对应用管理模块进行改造,使得所述应用管理模块可以允许用户提交重名的应用,并且将原本需要人工提交的两个命令简化为一个升级命令。如此,通过需要用户提交一个升级命令避免了上一实施例中的问题,而且依然可以避免了现有技术中应用升级过程中需要人为参与所造成的耗时较多的问题,从而大大减少了应用升级所消耗的时间。

在本申请所述的应用升级方法可以应用在jstorm场景中,即所述应用包括jstorm应用,而对应的,所述进程包括jvm进程。

一般的,应用处理输入的数据时,可以分为多个处理步骤,每一个处理步骤都可以视为一个节点。通常,每一个节点都会对应一个进程。其中,与数据源连接的节点可以称为根节点(spout),其它的节点可以称为子节点(bolt)。如图4所示的节点示意图中,节点1即为根节点,节点2、3、4、即为子节点。每一个数据都是按照节点的先后顺序处理的。

现有技术中,在关闭老应用时,需要人工确定老应用内未处理的数据处理完毕。然而,人工确定并不准确,而且需要依靠一定经验来判断,无法保证老应用内未处理的数据完全处理。

为了解决这一问题,请参见图5,为本申请一实施例提供的关闭应用方法的流程图,该实施例从待升级的应用侧进行描述,包括以下步骤:

步骤210:在被应用管理模块调用节点的结束函数后,停止根节点接收回流的数据,并将所述根节点确定为当前节点。

本实施例中,如前所述,根节点了连接数据源,在关闭应用时,需要停止根节点接收数据源回流的数据。

步骤220:处理当前节点内的数据并发送到下游节点。

本实施例中,当前节点内未处理的数据需要进行处理,并将处理的数据发送到下游节点,图4中根节点1处理的数据,需要发送到下游节点即节点2。

步骤230:在当前节点内的数据处理完毕并且接收到上游全部节点广播的结束标识后,向所述当前节点的下游全部子节点广播结束标识。

本实施例中,所述结束标识用于表示节点内的数据处理完毕。例如节点2广播结束标识,说明节点2内的数据处理完毕。

当前节点将数据处理完毕后,需要判断是否接收到上游全部节点广播的结束标识;在当前节点内的数据处理完毕并且接收到上游全部节点广播的结束标识后,向所述当前节点的下游全部子节点广播结束标识。

步骤240:在当前节点存在下一个节点的情况下,将下一个节点确定为当前节点,返回执行步骤220。

步骤250:在当前节点为最后一个节点的情况下,所述根节点向所述应用管理模块返回执行完毕信息,从而等待所述应用管理模块回收各节点对应的进程。

本实施例中,在最后一个节点接收到上游全部节点广播的结束标识后,可以通知根节点,然后,所述根节点向所述应用管理模块返回执行完毕信息,从而等待所述应用管理模块回收各节点对应的进程。

通过本实施例,对应用的结束流程进行改造,使得任意节点在处理完毕其内的数据以及在接收到全部上游节点广播的结束标识的情况下,需要向下游全部节点广播结束标识;在全部节点都处理完数据后,根节点才可以向应用管理模块返回执行完毕信息,从而等待应用管理模块回收各节点对应的进程。如此,通过结束标识可以确保应用的每一个节点内的数据都处理完毕,保证了数据处理的完整性,避免人为确定数据处理完毕时可能遗漏的情况,而且由于没有人为参与,因此大大减少了应用升级所消耗的时间。

本实施例中,通过对应用管理模块和应用升级流程的改造,在应用升级时,可以由应用管理模块和应用本身自动地完成升级,整个过程无需人工参与,实现了减少应用升级所需时间的目的。

在本申请所述的关闭应用方法可以应用在jstorm场景中,即所述应用包括jstorm应用,而对应的,所述进程包括jvm进程。

与前述应用升级方法实施例相对应,本申请还提供了一种应用升级装置的实施例。

本申请应用升级装置的实施例可以应用在应用管理模块。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本申请应用升级装置所在设备的一种硬件结构图,除了图6所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据该应用升级的实际功能,还可以包括其他硬件,对此不再赘述。

参见图7,为本申请一实施例提供的应用升级装置的模块图,该实施例从应用管理模块侧进行描述,所述装置包括:获取单元310、调用单元320、回收单元330和启动单元340。

其中,获取单元310,获取被提交应用的应用名;

调用单元320,在所述被提交应用与已存在的应用重名的情况下,触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数;

回收单元330,在接收到所述已存在的应用返回的执行完毕信息的情况下,回收所述各节点占用的进程;

启动单元340,在回收完毕的情况下,触发预设的启动命令,从而启动所述被提交应用中各节点对应的进程。

在一个可选的实现方式中:

所述调用单元320,具体包括:

判断子单元,在所述被提交应用与已存在的应用重名的情况下,判断是否接收到提交的针对所述已存在的应用的升级命令;

调用子单元,在接收到提交的针对所述已存在的应用的升级命令的情况下,触发预设的关闭命令,从而调用所述已存在的应用中各节点的结束函数。

在一个可选的实现方式中:

所述应用包括jstorm应用;

所述进程包括jvm进程。

与前述关闭应用方法实施例相对应,本申请还提供了一种关闭应用装置的实施例。

本申请关闭应用装置的实施例可以应用在待升级的应用。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图8所示,为本申请关闭应用装置所在设备的一种硬件结构图,除了图8所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据该关闭应用的实际功能,还可以包括其他硬件,对此不再赘述。

参见图9,为本申请一实施例提供的关闭应用装置的模块图,该实施例从待升级的应用侧进行描述,所述装置包括:停止接收单元410、处理数据单元420、广播标识单元430、控制单元440和返回信息单元450。

其中,停止接收单元410,在被应用管理模块调用节点的结束函数后,停止根节点接收回流的数据,并将所述根节点确定为当前节点;

处理数据单元420,处理当前节点内的数据并发送到下游节点;

广播标识单元430,在当前节点内的数据处理完毕并且接收到上游全部节点广播的结束标识后,向所述当前节点的下游全部子节点广播结束标识;

控制单元440,在当前节点存在下一个节点的情况下,将下一个节点确定为当前节点后输入到所述处理数据单元中;

返回信息单元450,在当前节点为最后一个节点的情况下,所述根节点向所述应用管理模块返回执行完毕信息,从而等待所述应用管理模块回收各节点对应的进程。

在一个可选的实现方式中:

所述应用包括jstorm应用;

所述进程包括jvm进程。

综上所述,本申请实施例中,对应用管理模块(topologymanager,tm)进行改造,使得所述应用管理模块可以允许用户提交重名的应用。如此,在所述应用管理模块检测到用户提交了重名应用时,可以自动地对已存在的重名应用进行升级。这样,避免了现有技术中应用升级过程中需要人为参与所造成的耗时较多的问题,从而大大减少了应用升级所消耗的时间。本申请实施例还对应用的结束流程进行改造,使得任意节点在处理完毕其内的数据以及在接收到全部上游节点广播的结束标识的情况下,需要向下游全部节点广播结束标识;在全部节点都处理完数据后,根节点才可以向应用管理模块返回执行完毕信息,从而等待应用管理模块回收各节点对应的进程。如此,通过结束标识可以确保应用的每一个节点内的数据都处理完毕,保证了数据处理的完整性,避免人为确定数据处理完毕时可能遗漏的情况,而且由于没有人为参与,因此大大减少了应用升级所消耗的时间。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

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

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

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