触发应用程序更改的方法、装置、电子设备及存储介质与流程

文档序号:21407574发布日期:2020-07-07 14:41阅读:147来源:国知局
触发应用程序更改的方法、装置、电子设备及存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种触发应用程序更改的方法、装置、电子设备及存储介质。



背景技术:

kubernetes是一个开源的、用于管理云平台中多个主机上的容器化的应用程序,kubernetes的目标是让部署容器化的应用程序简单并高效,它提供了应用程序部署、规划、更新、维护的一种机制。kubernetes通过更新应用程序的配置信息以实现对安装在容器中的应用程序的更改。

configmap是kubernetes中用于存储通用配置变量的配置文件。它使用户可以将分布式系统中用于不同模块的环境变量统一到一个对象中管理。kubernetes可通过对configmap的更新来更改容器中的应用程序。

在kubernetes中,由于容器中的应用程序不会监视配置信息的更改,因此configmap的更新并不必然会导致应用程序所执行配置信息的同步更新。在现有技术中,当配置信息更新后,只有在应用程序重新启动进程时才能加载新的配置信息,或出现新的应用程序被创建而原有的应用程序被终止的状态时才能加载新的配置信息。即,现有技术中存在着更新配置信息后,应用程序在不重启的情况下,仍然执行原有更新前的配置信息的现象,具有更新的配置信息与应用程序当前执行的配置信息不同的问题。

现有技术中需要通过手动重启应用程序的方法来克服更新的配置信息与应用程序当前执行的配置信息不同的问题。不仅效率低,而且反应不及时。



技术实现要素:

本发明实施例提供一种触发应用程序更改的方法、装置、电子设备及存储介质,用以解决现有技术中手动重启应用程序方法执行效率低、反应不及时的缺陷。

本发明第一方面实施例提供了一种触发应用程序更改的方法,包括:

监控到应用程序的配置信息发生变动,从所述应用程序所对应的配置文件中获取所述应用程序的变动后配置信息;

确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致,触发所述应用程序重启以执行变动后配置信息。

基于本发明任一实施例,还包括:

监控到应用程序触发目标事件,获取所述应用程序当前执行的配置信息,存储所述应用程序当前执行的配置信息;其中,所述目标事件为所述应用程序的创建事件或读取事件或更新事件。

基于本发明任一实施例,还包括:

为所要监控的应用程序的对象设置标注;其中,所述标注包括用于描述应用程序的配置信息是否发生变动的第一字段以及用于保存应用程序当前执行的配置信息的第二字段。

基于本发明任一实施例,所述确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致包括:

计算所述应用程序的变动后配置信息的哈希值;

计算所述应用程序当前执行的配置信息的哈希值;

确定所述应用程序的变动后配置信息的哈希值与所述应用程序当前执行的配置信息的哈希值不一致。

基于本发明任一实施例,所述监控到应用程序的配置信息发生变动包括:采用kubernetes中的控制器监控到应用程序的配置信息发生变动。

基于本发明任一实施例,所述监控到应用程序触发目标事件包括:采用kubernetes中的控制器监控到应用程序触发目标事件。

基于本发明任一实施例,所述存储所述应用程序当前执行的配置信息包括:在应用程序的对象的标注的第二字段中存储所述应用程序当前执行的配置信息。

本发明第二方面实施例还提供了一种触发应用程序更改的装置,包括:

变动后配置信息获取模块,用于监控到应用程序的配置信息发生变动,从所述应用程序所对应的配置文件中获取所述应用程序的变动后配置信息;

应用程序重启触发模块,用于确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致,触发所述应用程序重启以执行变动后配置信息。

本发明第三方面实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面实施例所述触发应用程序更改的方法的步骤。

本发明第四方面实施例提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明第一方面实施例所述触发应用程序更改的方法的步骤。

本发明实施例提供的触发应用程序更改的方法、装置、电子设备及存储介质,通过对应用程序配置信息变动的实时监控,迅速发现变动后配置信息与应用程序当前执行的配置信息不同的问题,进而触发应用程序重启,实现应用程序的更改,提高了应用程序更改的效率。

附图说明

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

图1为本发明实施例提供的触发应用程序更改的方法的流程图;

图2为本发明另一实施例提供的触发应用程序更改的方法的流程图;

图3为本发明又一实施例提供的触发应用程序更改的方法的流程图;

图4为本发明实施例提供的触发应用程序更改的装置的结构图;

图5示例了一种电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的触发应用程序更改的方法的流程图,如图1所示,本发明实施例提供的触发应用程序更改的方法包括:

步骤101、监控到应用程序的配置信息发生变动,从所述应用程序所对应的配置文件中获取所述应用程序的变动后配置信息。

在本发明实施例中,通过kubernetes中的controller(控制器)机制订阅监控配置信息的状态,一旦监控到应用程序的配置信息发生变动,从configmap获取应用程序变动后的配置信息。其中,所述变动为更新或更改。在本发明的其他实施例中,也可采用其他方法来监控应用程序配置信息的变动。

在本发明实施例中,通过对应用程序的对象的标注的监控来监控应用程序的配置信息是否发生变动。例如,在应用程序的对象的标注中设置有第一字段,该字段用于反映应用程序配置信息是否发生变动。所述标注的第一字段的一种描述方式为annotation(update-on-config-change:true),如果存在annotation(update-on-config-change:true),则意味着应用程序配置信息发生变动,反之,应用程序配置信息就没有发生变动。

步骤102、确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致,触发所述应用程序重启以执行变动后配置信息。

所述应用程序当前执行的配置信息是已知信息,它可以是从应用程序的对象中实时获取的,也可以是预先获取并存储的,也可以是本领域技术人员所能想到的其他方式获取的,在本发明实施例中不对其获取方式予以限定。

在本步骤中,应用程序重启后,将执行变动后配置信息。此时,变动后配置信息已经成为应用程序当前执行的配置信息,将该变动后配置信息作为应用程序当前执行的配置信息进行存储。例如,计算变动后的配置信息的哈希值,将这一变动后的配置信息的哈希值存储在应用程序的标注的第二字段。所述标注的第二字段的一种描述方式为annotation(version/config:hash),该第二字段用于保存应用程序当前执行的配置信息。由于应用程序当前执行的配置信息是变动后的配置信息,因此第二字段中将保存变动后配置信息。

本发明实施例提供的触发应用程序更改的方法通过对应用程序配置信息变动的实时监控,迅速发现变动后配置信息与应用程序当前执行的配置信息不同的问题,进而触发应用程序重启,实现应用程序的更改。

基于上述任一实施例,图2为本发明另一实施例提供的触发应用程序更改的方法的流程图,如图2所示,本发明另一实施例提供的触发应用程序更改的方法包括:

步骤201、监控到应用程序触发目标事件,获取所述应用程序当前执行的配置信息并存储。

在本发明的实施例中,通过kubernetes中的controller机制实现对应用程序中目标事件的监控。在本发明的其他实施例中,也可采用其他方法来监控应用程序中的目标事件。

所述的目标事件一般是对应用程序产生影响的事件,例如,创建事件、读取事件、更新事件。

应用程序当前执行的配置信息可从应用程序对象中获取。

在本发明实施例中,所获取的应用程序当前执行的配置信息存储在应用程序对象的标注中。例如,计算应用程序当前执行的配置信息的哈希值,将所得到的配置信息的哈希值存储在应用程序对象的标注的第二字段中(如annotation中的字段version/config:hash)。在本发明的其他实施例中,也可采用其他的存储方式。

步骤202、监控到应用程序的配置信息发生变动,从所述应用程序所对应的配置文件中获取所述应用程序的变动后配置信息。

步骤203、确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致,触发所述应用程序重启以执行变动后配置信息。

在本发明实施例中,所述应用程序当前执行的配置信息是通过步骤201获取的。

本发明实施例提供的触发应用程序更改的方法通过对应用程序配置信息变动的实时监控以及应用程序目标事件的监控,能迅速发现变动后配置信息与应用程序当前执行的配置信息不同的问题,进而触发应用程序重启,实现应用程序的更改。

基于上述任一实施例,图3为本发明又一实施例提供的触发应用程序更改的方法的流程图,如图3所示,本发明又一实施例提供的触发应用程序更改的方法包括:

步骤301、为所要监控的应用程序设置标注。

在本发明实施例中,为需要做监控的应用程序设置一个标注。所述标注至少包括单一字段与第二字段,其中的第一字段用于描述应用程序的配置信息是否发生变动,第二字段用于保存应用程序当前执行的配置信息。

步骤302、监控到应用程序触发目标事件,获取所述应用程序当前执行的配置信息并存储。

步骤303、监控到应用程序的配置信息发生变动,从所述应用程序所对应的配置文件中获取所述应用程序的变动后配置信息。

步骤304、确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致,触发所述应用程序重启以执行变动后配置信息。

本发明实施例提供的触发应用程序更改的方法通过标注的设置来实现对应用程序配置信息变动的监控以及应用程序配置信息的存储。

基于上述任一实施例,在本发明再一实施例提供的触发应用程序更改的方法中,所述确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致进一步包括:

计算所述应用程序的变动后配置信息的哈希值;

计算所述应用程序当前执行的配置信息的哈希值;

确定所述应用程序的变动后配置信息的哈希值与所述应用程序当前执行的配置信息的哈希值不一致。

本发明实施例提供的触发应用程序更改的方法为应用程序的变动后配置信息以及当前执行的配置信息计算哈希值,通过哈希值的比较来确定变动后配置信息与当前执行的配置信息是否一致,比较过程更为快捷,进而提高了整个方法的效率。

基于上述任一实施例,图4为本发明实施例提供的触发应用程序更改的装置的结构图,如图4所示,本发明实施例提供的触发应用程序更改的装置包括:

变动后配置信息获取模块401,用于监控到应用程序的配置信息发生变动,从所述应用程序所对应的配置文件中获取所述应用程序的变动后配置信息;

应用程序重启触发模块402,用于确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致,触发所述应用程序重启以执行变动后配置信息。

本发明实施例提供的触发应用程序更改的装置通过对应用程序配置信息变动的实时监控,迅速发现变动后配置信息与应用程序当前执行的配置信息不同的问题,进而触发应用程序重启,实现应用程序的更改。

下面结合一个具体的实例对本发明实施例提供的触发应用程序更改的方法做进一步说明。

在该实例中,deployment是kubernetes中的一种资源,代表应用程序。

相关步骤如下:

首先,在kubernetes中创建控制器监控的deployment的创建事件或读取事件或更新事件,当deployment创建时,控制器检查deployment的podtemplate是否存在annotation(update-on-config-change:true),如果annotation不存在,控制器将忽略该deployment。如果annotation存在,通过deployment中configmap的引用获取到configmap,并对configmap执行哈希运算(常用md5或者sha算法),将得到的哈希值存储在deployment的podtemplate的annotation(version/config:hash值)中,并将deployment的引用存储在控制器的监控列表中。当deployment更新configmap时,控制器会重新计算哈希值并更新存储到deployment的annotation中。

另外,控制器还监控了configmap的更新事件,当configmap发生更新时,通过ownerreferences跟踪哪些deployment使用了该configmap,重新计算configmap的哈希值和原来的deployment存储的哈希值比较,如果不相同,更新deployment的podtemplate的annotation(version/config:hash值)的哈希值,重启应用程序加载新的配置信息。

图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communicationsinterface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行如下方法:监控到应用程序的配置信息发生变动,从所述应用程序所对应的配置文件中获取所述应用程序的变动后配置信息;确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致,触发所述应用程序重启以执行变动后配置信息。

需要说明的是,本实施例中的电子设备在具体实现时可以为服务器,也可以为pc机,还可以为其他设备,只要其结构中包括如图5所示的处理器510、通信接口520、存储器530和通信总线540,其中处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信,且处理器510可以调用存储器530中的逻辑指令以执行上述方法即可。本实施例不对电子设备的具体实现形式进行限定。

此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

进一步地,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:监控到应用程序的配置信息发生变动,从所述应用程序所对应的配置文件中获取所述应用程序的变动后配置信息;确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致,触发所述应用程序重启以执行变动后配置信息。

另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:监控到应用程序的配置信息发生变动,从所述应用程序所对应的配置文件中获取所述应用程序的变动后配置信息;确定所述应用程序的变动后配置信息与所述应用程序当前执行的配置信息不一致,触发所述应用程序重启以执行变动后配置信息。

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

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

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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