一种基于JAVA的配置中心的配置管理系统及方法技术方案

技术编号:38007787 阅读:10 留言:0更新日期:2023-06-30 10:25
本发明专利技术公开了一种基于JAVA的配置中心的配置管理系统及方法,其系统包括:服务端设置模块用于在服务端中将项目与配置组相关联,将配置组和配置项相关联,将配置项和项目环境相关联,将配置项对应的项目环境与配置项的值相关联;客户端设置模块用于在客户端定义配置注册类,并将配置项作为配置注册类的属性值;获取配置模块用于根据配置项获取在服务端中对应的项目环境的配置项的值,并将该配置项和配置项的值返回客户端。其方法包括服务端设置步骤、客户端设置步骤和获取配置步骤。所述基于JAVA的配置中心的配置管理系统及方法解决了现有方案存在配置项和配置项的值与当前项目环境匹配不准确,从而导致客户端在不同项目环境下的配置容易混乱的问题。境下的配置容易混乱的问题。境下的配置容易混乱的问题。

【技术实现步骤摘要】
一种基于JAVA的配置中心的配置管理系统及方法


[0001]本专利技术涉及计算机
,特别涉及一种基于JAVA的配置中心的配置管理系统及方法。

技术介绍

[0002]配置中心是将所有项目的配置集中管理的平台。本专利技术中所说的配置如图1所示,是由多条key=value所组成,其中,key是配置项,value是配置项的值。
[0003]现在JAVA生态市面上主流的配置中心有Disconf、Apollo和Nacos等。它们的原理分两类,一类是基于配置文件,另一类是基于key=value(即kv)。不管哪种模式,它们的原理都如图2所示。从图2可以看到项目是和kv绑定的。但实际开发中同一个项目会有多个项目环境,一般分为本地环境、测试环境、预上线环境和正式环境。在不同项目环境中,同一样的key经常会对应不同的值。现有的配置中心的解决方式如图3所示,所有的配置文件都有三个版本,分别是测试环境用、预上线用和正式用,且这三个版本中的key是可以不一致的。图3中没有本地环境的配置,因为本地环境更为复杂,在本地环境中有的kv是和测试环境一致,有的kv中的值则由开发人员自己设定,所以一般是将测试环境的配置以文件的形式下载到本地,然后本地开发使用配置文件而断开配置中心。
[0004]因此,现有的配置中心存在以下缺陷:
[0005]1、配置中心的配置项在各项目环境中会出现不一致的情况。有可能出现因为不同项目环境的维护人员不一样而导致不同环境下的配置项出现不一致的情况。比如图1中的“warn.phone”,在测试环境中已经删除了但正式环境中还保留,或者在测试环境和预上线环境中都添加了,但在正式环境中忘记添加。
[0006]2、不能精确提供客户端所需要的配置。如图4所示,配置中心给项目B配置添加了三个kv,但实际项目B只用到了两个,但最终配置中心还是将所有的配置都传给了项目B,也就是多传了一个无用的kv给项目B,在实现场景中往往有可能多传几十个无用的kv给客户端。
[0007]3、对于配置中心内的每个配置项,不能确定都有哪些项目在用这些配置项。
[0008]4、不能检测出业务中不再使用的配置。
[0009]5、现在所有配置中心都要求只能适用配置中心所提供的kv,但对于本地环境,有些配置项的值需要和测试环境不一样,又或者为了模拟一些情况需要添加本地环境才会用到的kv,这时开发人员只能将测试环境的配置以文件的形式下载到本地,然后本地开发使用配置文件而断开配置中心。
[0010]因此现有的配置管理系统存在配置项和配置项的值与当前项目环境匹配不准确,从而导致客户端在不同项目环境下的配置容易混乱。

技术实现思路

[0011]为了克服现有技术存在的缺陷,本专利技术的一个目的在于提供一种基于JAVA的配置
中心的配置管理系统,以解决上述的问题。
[0012]为了克服现有技术存在的缺陷,本专利技术的另一个目的在于提供一种基于JAVA的配置中心的配置管理方法,以解决上述的问题。
[0013]本专利技术解决其技术问题所采用的技术方案是:一种基于JAVA的配置中心的配置管理系统,配置中心包括服务端和客户端,所述服务端和所述客户端通信连接;
[0014]还包括服务端设置模块、客户端设置模块和获取配置模块;
[0015]所述服务端设置模块用于在服务端中将项目与配置组相关联,将配置组和配置项相关联,将配置项和项目环境相关联,将配置项对应的项目环境与配置项的值相关联;
[0016]所述客户端设置模块用于在客户端定义配置注册类,并将配置项作为所述配置注册类的属性值;
[0017]所述获取配置模块用于根据配置项获取在服务端中对应的项目环境的配置项的值,并将该配置项和配置项的值返回客户端。
[0018]值得说明的是,所述服务端设置模块用于在服务端中建立项目配置表、配置项表以及配置在各环境中的值表;
[0019]还用于获取所述项目并存储于项目配置表的项目id中,获取所述配置组并存储于项目配置表的配置组id和配置项表的配置组id中,获取所述配置项并存储于配置项表的配置项id和配置在各环境中的值表的配置项id中,获取所述配置项的值并存储于配置在各环境中的值表的配置项设置值中,获取所述项目环境并存储于配置在各环境中的值表的项目环境设置值中;其中,在所述项目配置表中,一个项目关联一个配置组;在所述配置项表中,一个配置组关联多个配置项;在所述配置在各环境中的值表中,一个配置项关联多个配置项的值。
[0020]可选的,在所述服务端设置模块中,所述配置项表还包括非空判定项;
[0021]所述服务端设置模块还用于当获取到的所述配置非空判定项为true时,在配置在各环境中的值表中该配置项对应的所有配置项的值均为非空值才返回设置成功,反之返回设置失败。
[0022]优选的,在所述服务端设置模块中,所述配置项表还包括是否必须判定项;
[0023]所述服务端设置模块还用于当获取到的所述是否必须判定项为true时,在客户端中不指定该配置项时,向客户端返回该配置项和对应的配置项的值。
[0024]具体地,在所述服务端设置模块中,所述配置项表还包括默认值;
[0025]所述服务端设置模块还用于当获取到的默认值不为空时且在配置在各环境中的值表中该配置项对应的所有项目环境的配置项的值均空时,向客户端返回该默认值中的内容。
[0026]值得说明的是,一种基于JAVA的配置中心的配置管理方法,配置中心包括服务端和客户端,所述服务端和所述客户端通信连接,其方法包括:
[0027]服务端设置步骤:在服务端中将项目与配置组相关联,将配置组和配置项相关联,将配置项和项目环境相关联,将配置项对应的项目环境与配置项的值相关联;
[0028]客户端设置步骤:在客户端定义配置注册类,并将配置项作为所述配置注册类的属性值;
[0029]获取配置步骤:根据配置项获取在服务端中对应的项目环境的配置项的值,并将
该配置项和配置项的值返回客户端。
[0030]可选的,所述服务端设置步骤包括:
[0031]在服务端中建立项目配置表、配置项表以及配置在各环境中的值表;
[0032]获取所述项目并存储于项目配置表的项目id中,获取所述配置组并存储于项目配置表的配置组id和配置项表的配置组id中,获取所述配置项并存储于配置项表的配置项id和配置在各环境中的值表的配置项id中,获取所述配置项的值并存储于配置在各环境中的值表的配置项设置值中,获取所述项目环境并存储于配置在各环境中的值表的项目环境设置值中;其中,在所述项目配置表中,一个项目关联一个配置组;在所述配置项表中,一个配置组关联多个配置项;在所述配置在各环境中的值表中,一个配置项关联多个配置项的值。
[0033]优选的,所述配置项表包括非空判定项;
[0034]所述服务端设置步骤还包括:当获取到的所述配置非空判定项为true时,在配置在各环境中的值表中该配置项对应的所有配置本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于JAVA的配置中心的配置管理系统,配置中心包括服务端和客户端,所述服务端和所述客户端通信连接,其特征在于:还包括服务端设置模块、客户端设置模块和获取配置模块;所述服务端设置模块用于在服务端中将项目与配置组相关联,将配置组和配置项相关联,将配置项和项目环境相关联,将配置项对应的项目环境与配置项的值相关联;所述客户端设置模块用于在客户端定义配置注册类,并将配置项作为所述配置注册类的属性值;所述获取配置模块用于根据配置项获取在服务端中对应的项目环境的配置项的值,并将该配置项和配置项的值返回客户端。2.根据权利要求1所述的基于JAVA的配置中心的配置管理系统,其特征在于:所述服务端设置模块用于在服务端中建立项目配置表、配置项表以及配置在各环境中的值表;还用于获取所述项目并存储于项目配置表的项目id中,获取所述配置组并存储于项目配置表的配置组id和配置项表的配置组id中,获取所述配置项并存储于配置项表的配置项id和配置在各环境中的值表的配置项id中,获取所述配置项的值并存储于配置在各环境中的值表的配置项设置值中,获取所述项目环境并存储于配置在各环境中的值表的项目环境设置值中;其中,在所述项目配置表中,一个项目关联一个配置组;在所述配置项表中,一个配置组关联多个配置项;在所述配置在各环境中的值表中,一个配置项关联多个配置项的值。3.根据权利要求2所述的基于JAVA的配置中心的配置管理系统,其特征在于:在所述服务端设置模块中,所述配置项表还包括非空判定项;所述服务端设置模块还用于当获取到的所述配置非空判定项为true时,在配置在各环境中的值表中该配置项对应的所有配置项的值均为非空值才返回设置成功,反之返回设置失败。4.根据权利要求3所述的基于JAVA的配置中心的配置管理系统,其特征在于:在所述服务端设置模块中,所述配置项表还包括是否必须判定项;所述服务端设置模块还用于当获取到的所述是否必须判定项为true时,在客户端中不指定该配置项时,向客户端返回该配置项和对应的配置项的值。5.根据权利要求4所述的基于JAVA的配置中心的配置管理系统,其特征在于:在所述服务端设置模块中,所述配置项表还包括默认值;所述服务端设置模块还用于当获取到的默认值不为空时且在配置在各环境中的值表中该配置项对应的所有项目环境的配置项...

【专利技术属性】
技术研发人员:李宝君何玉华
申请(专利权)人:全通金信控股广东有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1