一种基于JAVA的配置中心的配置管理系统及方法与流程

文档序号:34551229发布日期:2023-06-28 01:47阅读:98来源:国知局
一种基于JAVA的配置中心的配置管理系统及方法与流程

本发明涉及计算机,特别涉及一种基于java的配置中心的配置管理系统及方法。


背景技术:

1、配置中心是将所有项目的配置集中管理的平台。本发明中所说的配置如图1所示,是由多条key=value所组成,其中,key是配置项,value是配置项的值。

2、现在java生态市面上主流的配置中心有disconf、apollo和nacos等。它们的原理分两类,一类是基于配置文件,另一类是基于key=value(即kv)。不管哪种模式,它们的原理都如图2所示。从图2可以看到项目是和kv绑定的。但实际开发中同一个项目会有多个项目环境,一般分为本地环境、测试环境、预上线环境和正式环境。在不同项目环境中,同一样的key经常会对应不同的值。现有的配置中心的解决方式如图3所示,所有的配置文件都有三个版本,分别是测试环境用、预上线用和正式用,且这三个版本中的key是可以不一致的。图3中没有本地环境的配置,因为本地环境更为复杂,在本地环境中有的kv是和测试环境一致,有的kv中的值则由开发人员自己设定,所以一般是将测试环境的配置以文件的形式下载到本地,然后本地开发使用配置文件而断开配置中心。

3、因此,现有的配置中心存在以下缺陷:

4、1、配置中心的配置项在各项目环境中会出现不一致的情况。有可能出现因为不同项目环境的维护人员不一样而导致不同环境下的配置项出现不一致的情况。比如图1中的“warn.phone”,在测试环境中已经删除了但正式环境中还保留,或者在测试环境和预上线环境中都添加了,但在正式环境中忘记添加。

5、2、不能精确提供客户端所需要的配置。如图4所示,配置中心给项目b配置添加了三个kv,但实际项目b只用到了两个,但最终配置中心还是将所有的配置都传给了项目b,也就是多传了一个无用的kv给项目b,在实现场景中往往有可能多传几十个无用的kv给客户端。

6、3、对于配置中心内的每个配置项,不能确定都有哪些项目在用这些配置项。

7、4、不能检测出业务中不再使用的配置。

8、5、现在所有配置中心都要求只能适用配置中心所提供的kv,但对于本地环境,有些配置项的值需要和测试环境不一样,又或者为了模拟一些情况需要添加本地环境才会用到的kv,这时开发人员只能将测试环境的配置以文件的形式下载到本地,然后本地开发使用配置文件而断开配置中心。

9、因此现有的配置管理系统存在配置项和配置项的值与当前项目环境匹配不准确,从而导致客户端在不同项目环境下的配置容易混乱。


技术实现思路

1、为了克服现有技术存在的缺陷,本发明的一个目的在于提供一种基于java的配置中心的配置管理系统,以解决上述的问题。

2、为了克服现有技术存在的缺陷,本发明的另一个目的在于提供一种基于java的配置中心的配置管理方法,以解决上述的问题。

3、本发明解决其技术问题所采用的技术方案是:一种基于java的配置中心的配置管理系统,配置中心包括服务端和客户端,所述服务端和所述客户端通信连接;

4、还包括服务端设置模块、客户端设置模块和获取配置模块;

5、所述服务端设置模块用于在服务端中将项目与配置组相关联,将配置组和配置项相关联,将配置项和项目环境相关联,将配置项对应的项目环境与配置项的值相关联;

6、所述客户端设置模块用于在客户端定义配置注册类,并将配置项作为所述配置注册类的属性值;

7、所述获取配置模块用于根据配置项获取在服务端中对应的项目环境的配置项的值,并将该配置项和配置项的值返回客户端。

8、值得说明的是,所述服务端设置模块用于在服务端中建立项目配置表、配置项表以及配置在各环境中的值表;

9、还用于获取所述项目并存储于项目配置表的项目id中,获取所述配置组并存储于项目配置表的配置组id和配置项表的配置组id中,获取所述配置项并存储于配置项表的配置项id和配置在各环境中的值表的配置项id中,获取所述配置项的值并存储于配置在各环境中的值表的配置项设置值中,获取所述项目环境并存储于配置在各环境中的值表的项目环境设置值中;其中,在所述项目配置表中,一个项目关联一个配置组;在所述配置项表中,一个配置组关联多个配置项;在所述配置在各环境中的值表中,一个配置项关联多个配置项的值。

10、可选的,在所述服务端设置模块中,所述配置项表还包括非空判定项;

11、所述服务端设置模块还用于当获取到的所述配置非空判定项为true时,在配置在各环境中的值表中该配置项对应的所有配置项的值均为非空值才返回设置成功,反之返回设置失败。

12、优选的,在所述服务端设置模块中,所述配置项表还包括是否必须判定项;

13、所述服务端设置模块还用于当获取到的所述是否必须判定项为true时,在客户端中不指定该配置项时,向客户端返回该配置项和对应的配置项的值。

14、具体地,在所述服务端设置模块中,所述配置项表还包括默认值;

15、所述服务端设置模块还用于当获取到的默认值不为空时且在配置在各环境中的值表中该配置项对应的所有项目环境的配置项的值均空时,向客户端返回该默认值中的内容。

16、值得说明的是,一种基于java的配置中心的配置管理方法,配置中心包括服务端和客户端,所述服务端和所述客户端通信连接,其方法包括:

17、服务端设置步骤:在服务端中将项目与配置组相关联,将配置组和配置项相关联,将配置项和项目环境相关联,将配置项对应的项目环境与配置项的值相关联;

18、客户端设置步骤:在客户端定义配置注册类,并将配置项作为所述配置注册类的属性值;

19、获取配置步骤:根据配置项获取在服务端中对应的项目环境的配置项的值,并将该配置项和配置项的值返回客户端。

20、可选的,所述服务端设置步骤包括:

21、在服务端中建立项目配置表、配置项表以及配置在各环境中的值表;

22、获取所述项目并存储于项目配置表的项目id中,获取所述配置组并存储于项目配置表的配置组id和配置项表的配置组id中,获取所述配置项并存储于配置项表的配置项id和配置在各环境中的值表的配置项id中,获取所述配置项的值并存储于配置在各环境中的值表的配置项设置值中,获取所述项目环境并存储于配置在各环境中的值表的项目环境设置值中;其中,在所述项目配置表中,一个项目关联一个配置组;在所述配置项表中,一个配置组关联多个配置项;在所述配置在各环境中的值表中,一个配置项关联多个配置项的值。

23、优选的,所述配置项表包括非空判定项;

24、所述服务端设置步骤还包括:当获取到的所述配置非空判定项为true时,在配置在各环境中的值表中该配置项对应的所有配置项的值均为非空值才返回设置成功,反之返回设置失败。

25、具体地,所述配置项表还包括是否必须判定项;

26、所述服务端设置步骤还包括:当获取到的所述是否必须判定项为true时,在客户端中不指定该配置项时,向客户端返回该配置项和对应的配置项的值。

27、优选的,所述配置项表还包括默认值;

28、所述服务端设置步骤还包括:当获取到的默认值不为空时且在配置在各环境中的值表中该配置项对应的所有项目环境的配置项的值均空时,向客户端返回该默认值中的内容。

29、本发明的有益效果在于:在所述基于java的配置中心的配置管理系统中,项目与配置组相关联,将配置组和配置项相关联,将配置项和所有项目环境相关联,将配置项对应的项目环境与配置项的值相关联,这样就能保证所有配置项在所有项目和项目环境中都一致且配置项只需写一次,并且能精确提供客户端所需要的配置,另外,由于最终形成的关联关系中,项目会与配置项相关联,因此,能确定每个项目在用的配置项,同时也能确定那些没有关联到配置项,从而能检测到业务中不再实用的配置。由于所述基于java的配置中心的配置管理系统在设置时已经将本地环境和测试环境中的配置区分开,在使用时客户端直接获取即可,从而不必再通过开发人员将测试环境的配置以文件的形式下载到本地。

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