CN109992297A - 配置应用方法、系统、装置和可读存储介质 - Google Patents
配置应用方法、系统、装置和可读存储介质 Download PDFInfo
- Publication number
- CN109992297A CN109992297A CN201910204375.2A CN201910204375A CN109992297A CN 109992297 A CN109992297 A CN 109992297A CN 201910204375 A CN201910204375 A CN 201910204375A CN 109992297 A CN109992297 A CN 109992297A
- Authority
- CN
- China
- Prior art keywords
- configuration
- application
- configuration data
- memory
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种配置应用方法、系统、装置和计算机可读存储介质。所述配置应用方法通过添加对应用的配置数据的监控策略,当监控到应用的配置数据变更时,根据监控策略重新从配置中心下载应用的配置数据,并据此更新内存中的对象的属性值,从而实现应用的对象的属性值的动态更新。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种配置应用方法、系统、装置和可读存储介质。
背景技术
随着互联网的不断发展,程序功能日益复杂,各种业务开关、参数的配置及服务器地址等参数越来越多。随着配置的增多,配置修改几率也越来越大。
业内有两种比较常用的管理配置的技术:Spring本地配置文件和Spring CloudConfig组件。Spring支持读取本地的配置文件,不支持通过远程的方式读取配置文件,所以每次修改配置文件都需要重新打包并发布项目。Spring Cloud Config是Spring Cloud的一个组件,它支持使用git或者svn保存配置数据到Config Server上,从而实现所有配置文件的集中管理。如图1所示。当git系统101通过命令修改Config Server 102的配置文件后,每个config client 103的对象的属性并不能自动更新,为了更新每个config client 103对象的属性,必须在配置变更后调用特定URL以调用Spring Cloud Config Server执行刷新配置操作。
综上,现有技术中,修改配置后均需要重启项目来加载配置文件,这种复杂的方式让人越来越难以忍受。因此,需要一种修改配置文件后可以实时更新对象的属性值的方法。
发明内容
有鉴于此,本发明实施例提供一种配置应用方法、系统、装置和计算机可读存储介质,能够实现在修改配置文件后,实时完成对对象的属性值的更新。
第一方面,本发明实施例提供一种配置应用方法,包括:
从所述配置中心获取应用的配置数据,并根据所述配置数据设置内存中的对象的属性值,同时添加对所述应用的配置数据的监控策略;
当监控到所述应用的配置数据变更时,根据所述监控策略调用处理函数,所述处理函数重新从所述配置中心下载所述应用的配置数据,并据此更新所述内存中的对象的属性值。
在一些实施例中,还包括:定时从所述配置中心将所述应用的配置数据下载到本地。
在一些实施例中,还包括:当无法从所述配置中心获取所述应用的配置数据时,根据本地的配置数据更新内存中的对象的属性值。
在一些实施例中,多个应用的配置数据存储在所述配置中心,所述配置应用方法还包括:在所述配置中心建立应用和配置数据之间的关联关系,每个应用根据所述关联关系获取相应的配置数据。
在一些实施例中,所述监控策略根据所述应用的配置数据的更新时间判断所述应用的配置数据是否发生变更。
在一些实施例中,所述应用的配置数据以文件和/或数据库形式存储,当以文件形式存储时,所述监控策略监控文件的更新时间,当以数据库形式存储时,所述监控策略监控对应数据库表的相应字段。
在一些实施例中,所述应用为基于java应用,所述根据所述配置数据更新内存中的对象的属性值包括:
遍历内存中的多个对象;
对于每个对象,根据java的反射机制获取多个对象的属性值,将每个对象的属性值和配置数据比对,如果所述对象的属性值的值和相应的配置数据不同,则根据相应的配置数据更改所述对象的属性值的值。
第二方面,本发明实施例提供一种配置应用系统,包括:
初始化模块,用于从所述配置中心获取应用的配置数据,并根据所述配置数据设置内存中的对象的属性值,同时添加对所述应用的配置数据的监控策略;
配置更新模块,当监控到所述应用的配置数据变更时,根据所述监控策略调用处理函数,所述处理函数重新从所述配置中心获取所述应用的配置数据,并据此更新所述内存中的对象的属性值。
在一些实施例中,还包括:定时器模块,用于定时从所述配置中心将所述应用的配置数据下载到本地。
在一些实施例中,所述配置更新模块当无法从所述配置中心获取所述应用的配置数据时,根据本地的配置数据更新内存中的对象的属性值。
第三方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述任一项所述的配置应用方法。
第四方面,本发明实施例提供一种装置,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的计算机指令执行实现上述任一项所述的配置应用方法。
本发明实施例具有以下优点或有益效果:通过添加对应用的配置数据的监控策略,当监控到应用的配置数据变更时,根据监控策略重新从配置中心下载应用的配置数据,并据此更新内存中的对象的属性值,从而实现应用的对象的属性值的动态更新。
附图说明
通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1示出了现有配置应用系统的结构图;
图2示出了本发明一实施例的配置应用方法的流程图;
图3示出了配置中心和应用之间的关系示意图;
图4示出了本发明另一实施例的配置应用方法的流程图;
图5示出了本发明实施例的配置应用系统的结构图;
图6示出了本发明实施例的实现配置应用方法的装置的结构图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
【术语描述】
Spring:框架是一个开源的Java平台,它为容易而快速的开发出耐用的Java应用程序提供了全面的基础设施。
Spring cloud:是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发。
Spring cloud config:分布式配置中心,Spring cloud的组件,用于管理配置。
Spring Cloud Config Server:Spring cloud config的服务端。
Git:是一个开源的分布式版本控制系统。
Svn:SVN是Subversion的简称,是一个开放源代码的版本控制系统。
Map:Java语言中一种内存容器。
图2示出了本发明一实施例的配置应用方法的流程图。具体包括以下步骤。
在步骤S201中,从配置中心获取应用的配置数据,并根据配置数据设置内存中的对象的属性值,同时添加对应用的配置数据的监控策略。
在步骤S202中,当监控到应用的配置数据变更时,根据监控策略调用处理函数,处理函数重新从配置中心获取应用的配置数据,并据此更新内存中的对象的属性值。
本实施例描述一个应用监控配置中心的配置数据,并在配置中心的配置数据变更时,相应地更新自身创建类的对象的属性值。具体地,当应用启动后,从配置中心获取应用的配置数据,并构建多个类的对象(即将类加载到内存中),如果某个对象的属性值的数值来自配置数据,则根据配置数据设置该对象的属性值,同时,在应用中添加对本应用的配置数据的监控策略,该监控策略指示当监控到对应的配置数据发生变更时,调用处理函数,因而当应用在运行过程中,监控到对应的配置数据发生变更时,调用处理函数,该处理函数重新从配置中心获取应用的配置数据,并据此更新内存中的对象的属性值。因而,实现应用的对象的属性值的动态更新。
一般地,配置中心和应用部署在不同的服务器上。在配置中心存储多个应用的配置数据。当一个应用到配置中心获取配置数据时,需要确定那些配置数据属于自身,因此,配置中心上还存储有应用和配置数据之间的关联关系,通过该关联关系使得每个应用能够获取到自身的配置数据。当然,该关联关系也可以存储在应用部署的服务器上。此外,应用还可以定时将配置中心的配置数据下载到本地,在一些异常情况下,例如,当配置中心和应用部署的服务器之间的网络中断时,则可以使用本地服务器上的配置数据。当然,优先使用配置中心的配置数据。
目前面向对象构建的项目很多采用java+spring+bean的技术路线。Spring是最受欢迎的企业级Java应用程序开发框架,它使开发人员使用快速开发企业级的应用程序。对此,图3示出了配置中心和采用上述技术路线实现的多个应用之间的关系示意图,图4示出了本发明另一实施例的采用上述技术路线实现的配置应用方法的流程图。
参见图3,采用上述技术路线实现的多个应用的配置数据存储在配置中心。当应用A和B启动后,spring架构构建spring容器,spring容器根据spring自定义配置从配置中心获取配置数据并加载到内存中;然后在容器内构建java bean对象,java bean对象包括属性1和属性2,根据java bean的自定义注解判断属性1的值是否来自配置数据,如果是则采用内存中配置数据设置属性1的值,对于属性2也如此操作。
其中,spring自定义配置和java bean的自定义注解均设置在源码文件中。在编码阶段,利用spring的自定义配置功能,添加自定义配置例如<concrete:config appid="appid">,通过该配置标注使用的应用名,与配置中心的配置文件进行关联。然后在javabean中添加自定义注解例如ConcreteValue,使用该注解直接标注那些属性使用配置数据的值(示例1)。此外,java bean也可以利用自定义配置功能,添加Java bean的自定义配置(示例2)。
示例1如下:
示例2如下:
<bean class="xxx.xxx.JavaBean">
<property name="url"value="#{url}"/>
</bean>
应该指出,图3仅示出了一个静态关系图,此外,应用A和B还需要监控配置中心的配置数据,并据此修改属性1和属性2的值。下面根据图4的流程图进行进一步的描述。图4包括以下步骤。
在步骤S401中,获取配置中心的配置数据。
在步骤S402中,spring容器初始化。
在步骤S403中,解析配置数据,将数据放入spring容器。
在步骤S404中,将有占位符的对象及占位符的值保存到内存容器中。
在步骤S405中,对配置数据的变更行为添加监控策略。
在步骤S406中,对象初始化将配置中的占位符替换为解析后的值。
在步骤S407中,监听到配置数据变更,获取配置中心的配置数据。
在步骤S408中,遍历内存容器中保存的对象,对比对象的属性值与变更的配置数据。
在步骤S409中,通过反射机制,更新对象的属性值。
其中,步骤S401-S406一般在应用的初始化阶段执行,S407-S409在初始化完成之后的运行阶段执行。首先,通过步骤S401-S406,在内存中构建好java bean对象,根据配置数据设置java bean对象的属性值,并且对于配置中心的配置数据添加监控策略。然后通过步骤S407-S409,当监控到配置数据变更时,重新从配置中心获取配置数据,遍历内存容器中保存的对象,将对象的属性值与变更的配置数据比对,并据此更新对象的属性值。从而,实现对配置数据的实时动态加载。此外,在本实施例中,提及了java的反射机制。java的反射机制是指java应用在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性。而本实施例正是利用java的反射机制实现在运行状态下对Java对象的属性值的更新。当然,其他编程语言也有类似的机制。
在上述实施例中,应用在初始化阶段设置监控策略。这个监控策略确保当指定的事件发生时,能够执行相应的操作。对于本发明而言,指定的事件为配置数据发生变更。配置数据是否发生变更可以采用多种方法进行判断。可选地,可以根据配置数据的更新时间判断配置数据是否发生变更。具体地,当应用启动之后,从配置中心获取配置数据的同时,将配置数据的当前更新时间记录到内存中,然后应用监控配置数据的更新时间,当监控到配置数据的更新时间和内存中存储的更新时间不同时,调用处理函数。配置数据可以以文件和/或数据库形式存储,当以文件形式存储时,监控文件的更新时间以判断配置数据是否发生变更,当以数据库形式存储时,监控数据库表的相应字段以判断配置数据是否发生变更。
图5示出了本发明另一实施例的配置应用系统的结构图。该配置应用系统,包括初始化模块501和配置更新模块502。
初始化模块501用于从配置中心获取应用的配置数据,并根据配置数据设置内存中的对象的属性值,同时添加对应用的配置数据的监控策略。配置更新模块用于当监控到应用的配置数据变更时,根据监控策略调用处理函数,处理函数重新从配置中心获取应用的配置数据,并据此更新内存中的对象的属性值。
该配置应用系统通过初始化模块设置监控策略,通过配置更新模块在配置数据变更时,更新内存中的对象的属性值,从而实现应用的对象的属性值的动态更新。相对于现有技术,该配置应用系统无需重新启动应用,即完成对于内存中的对象的属性值的更新。
配置中心和配置应用系统一般部署在不同的服务器上。可选地,配置应用系统还包括一个定时器模块,该定时器模块定时从配置中心将应用的配置数据下载到配置应用系统部署的服务器上。当配置应用系统部署的服务器和配置中心的网络中断时,配置应用系统使用本地的配置数据对内存中的对象的属性值进行更新。当然,配置应用系统部署的服务器上存储的配置数据不能确保为最新。因此,当配置应用系统部署的服务器和配置中心的网络恢复后,还应该比较本地的配置数据和配置中心的配置数据,以判断两者是否相同。如果不同则将配置中心的配置数据下载到本地。理论上,配置应用系统设定的配置策略在网络恢复时,即恢复对于配置数据的监控,因此无需强制配置应用系统重新获取配置中心的配置数据。
可以理解,由于配置应用系统和配置应用方法的功能相同,因此在描述配置应用系统时以相对简略的方式撰写。
图6是本发明示例性的实施例的执行配置应用方法的装置的结构图。图6示出的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围构成任何限制。
参考图6,该装置包括通过总线连接的处理器601、存储器602和输入输出设备603。存储器602包括只读存储器(ROM)和随机访问存储器(RAM),存储器602内存储有执行系统功能所需的各种计算机指令和数据,处理器601从存储器602中读取各种计算机指令以执行各种适当的动作和处理。输入输出设备包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。存储器602还存储有计算机指令以完成本发明实施例的装置规定的操作。计算机指令包括:从配置中心获取应用的配置数据,并根据配置数据设置内存中的对象的属性值,同时添加对应用的配置数据的监控策略;当监控到应用的配置数据变更时,根据监控策略调用处理函数,处理函数重新从所述配置中心下载所述应用的配置数据,并据此更新所述内存中的对象的属性值。
相应地,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,计算机指令被执行时实现上述方法所规定的操作。
附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,实现规定逻辑功能的可执行指令可以重新组合,从而创建新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
系统的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用JAVA、C/C++/C#、SQL等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是步骤实现规定的逻辑功能的可执行指令可以重新组合,从而创建新的步骤。步骤的顺序也不应该仅仅局限于方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其中的某些步骤并行或按照相反顺序执行。
根据本发明的系统和方法可以部署在单个或多个服务器上。例如,可以将不同的模块分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、模块或系统,以减轻负载压力。服务器包括但不限于在同一个局域网以及通过Internet连接的多个PC机、PC服务器、刀片机、超级计算机等。
以上仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种配置应用方法,其特征在于,包括:
从配置中心获取应用的配置数据,并根据所述配置数据设置内存中的对象的属性值,同时添加对所述应用的配置数据的监控策略;
当监控到所述应用的配置数据变更时,根据所述监控策略调用处理函数,所述处理函数重新从所述配置中心下载所述应用的配置数据,并据此更新所述内存中的对象的属性值。
2.根据权利要求1所述的配置应用方法,其特征在于,还包括:定时从所述配置中心将所述应用的配置数据下载到本地。
3.根据权利要求2所述的配置应用方法,其特征在于,还包括:当无法从所述配置中心获取所述应用的配置数据时,根据本地的配置数据更新所述内存中的对象的属性值。
4.根据权利要求1所述的配置应用方法,其特征在于,多个应用的配置数据存储在所述配置中心,所述配置应用方法还包括:在所述配置中心建立应用和配置数据之间的关联关系,每个应用根据所述关联关系获取相应的配置数据。
5.根据权利要求1所述的配置应用方法,其特征在于,所述监控策略根据所述应用的配置数据的更新时间判断所述应用的配置数据是否发生变更。
6.根据权利要求5所述的配置应用方法,其特征在于,所述应用的配置数据以文件和/或数据库形式存储,当以文件形式存储时,所述监控策略监控文件的更新时间,当以数据库形式存储时,所述监控策略监控对应数据库表的相应字段。
7.根据权利要求1所述的配置应用方法,其特征在于,所述应用为基于java应用,所述根据所述配置数据更新内存中的对象的属性值包括:
遍历内存中的多个对象;
对于每个对象,根据java的反射机制获取多个对象的属性值,将每个对象的属性值和配置数据比对,如果所述对象的属性值的值和相应的配置数据不同,则根据相应的配置数据更改所述对象的属性值的值。
8.一种配置应用系统,其特征在于,包括:
初始化模块,用于从所述配置中心获取应用的配置数据,并根据所述配置数据设置内存中的对象的属性值,同时添加对所述应用的配置数据的监控策略;
配置更新模块,当监控到所述应用的配置数据变更时,根据所述监控策略调用处理函数,所述处理函数重新从所述配置中心获取所述应用的配置数据,并据此更新所述内存中的对象的属性值。
9.根据权利要求8所述的配置应用方法,其特征在于,还包括:定时器模块,用于定时从所述配置中心将所述应用的配置数据下载到本地。
10.根据权利要求9所述的配置应用方法,其特征在于,所述配置更新模块当无法从所述配置中心获取所述应用的配置数据时,根据本地的配置数据更新内存中的对象的属性值。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现如权利要求1至8中任一项所述的配置应用方法。
12.一种装置,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的计算机指令执行实现如权利要求1至9中任一项所述的配置应用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910204375.2A CN109992297A (zh) | 2019-03-18 | 2019-03-18 | 配置应用方法、系统、装置和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910204375.2A CN109992297A (zh) | 2019-03-18 | 2019-03-18 | 配置应用方法、系统、装置和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109992297A true CN109992297A (zh) | 2019-07-09 |
Family
ID=67129767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910204375.2A Pending CN109992297A (zh) | 2019-03-18 | 2019-03-18 | 配置应用方法、系统、装置和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992297A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110673881A (zh) * | 2019-09-06 | 2020-01-10 | 深圳平安通信科技有限公司 | 微服务集群的配置管理方法、装置和计算机设备 |
-
2019
- 2019-03-18 CN CN201910204375.2A patent/CN109992297A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110673881A (zh) * | 2019-09-06 | 2020-01-10 | 深圳平安通信科技有限公司 | 微服务集群的配置管理方法、装置和计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110546606B (zh) | 租户升级分析系统及方法 | |
US20190205118A1 (en) | Automated deployment and servicing of distributed applications | |
CN104317642B (zh) | 云计算环境下的软件部署方法和装置 | |
US20110313966A1 (en) | Activity schemes for support of knowledge-intensive tasks | |
JP2017107555A (ja) | ソフトウェア・コンテナ中のソフトウェアの識別を決定するための方法、システム、およびプログラム | |
US11429353B1 (en) | Dynamic service provisioning using templatized infrastructure resources | |
WO2015126411A1 (en) | Migrating cloud resources | |
WO2006082432A2 (en) | Time-series forecasting | |
CN108052340A (zh) | 一种应用升级方法、装置 | |
CN111459763A (zh) | 跨kubernetes集群监控系统及方法 | |
CN103744680A (zh) | 一种业务流程处理方法及装置 | |
CN107294771A (zh) | 一种适用于大数据集群的高效部署系统以及使用方法 | |
US11902103B2 (en) | Method and apparatus for creating a custom service | |
US20130254757A1 (en) | Nesting installations of software products | |
CN109992297A (zh) | 配置应用方法、系统、装置和可读存储介质 | |
CN110784347A (zh) | 一种容器集群的节点管理方法、系统、设备及存储介质 | |
EP3712732A1 (en) | System mehtod and computer-implemented program for commissioning field device | |
CN108170760B (zh) | 智能硬件管理系统和设备 | |
CN114721681A (zh) | 配置文件更新方法、装置、设备及存储介质 | |
CN110209409B (zh) | 一种应用产品的定制方法、系统及存储介质 | |
WO2022197440A1 (en) | Automatic update of vm sets | |
CN111722597B (zh) | 准备用于工业控制系统的工程数据的方法和系统 | |
CN107741936B (zh) | 一种数据关系的更新方法及装置 | |
JP7391503B2 (ja) | 情報処理システムおよび情報処理方法 | |
CN110971665A (zh) | 一种对接多类型存储的管理方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |