解决spring-cloud-config 多服务共享公共配置的问题
问题描述
我们公司的项目是基于SpringCloud开发的微服务,用到了Spring-Cloud-Config作为微服务统一的配置中心,可以将散落在各个服务的配置进行统一配置管理。
虽然配置中心将各个应用的配置文件进行了统一管理, 但是涉及到的一些公共配置,比如数据库连接,redis连接,ftp连接等,依然还散落在各个应用的配置文件中,并没有抽取,我们需要根据环境的不同,而动态修改它们,非常难以维护。导致每次涉及修改这些公共配置,就非常老火。
所以想到了利用公共文件方法,现在在这里简单阐述一下如何配置。(下面例子Spring-Cloud-Config-Server都是使用本地配置方式)。
经过网上查阅资料,大部分都是采用方法一进行配置的,那么我提供了一个方式二配置,也许会让你眼前一亮,然后留下你的想法,如果是你去选择,会选择哪个方法呢?
方法一:
首先在配置中心的 config/
目录下创建一个公共配置文件common.yml
, 然后在各个应用下的 bootstrap.yml
文件中 spring.cloud.config.name
这里去配置多个配置文件名。
例如:
service-a 客户端的 bootstap.yml:
spring: cloud: config: name: service-a, common
service-b 客户端的 bootstap.yml:
spring: cloud: config: name: service-b, common
方法二:(比较推荐)
我们还记得springboot单体应用的时候, 是如何抽离公共配置呢?答案是用spring.profiles.include 进行引用其他公共配置文件。而且它的文件命名有个特点,就是必须是application-
开头的配置文件。
我们也会去想,像spring-cloud-config这样的配置集中化,这样的配置会生效吗?
例如:
首先,我们在 config/
目录下创建 application-common-dev.yml
配置文件
然后分别修改 service-a
和 service-b
在 config/
目录下的配置文件,配置如下:
service-a
客户端的 service-a-dev.yml
spring: application: name: service-a #公共配置文件 profiles: include: common-dev
service-b
客户端的 service-b-dev.yml
spring: application: name: service-b #公共配置文件 profiles: include: common-dev
分别启动各自的服务,就可以看到服务启动成功。
那么,这两种方式那种更好一些呢。
方法一:
缺点:如果有新加的公共配置文件,需要去每个服务的bootstrap.yml都去修改一下。并且需要重新发布jar包。
方法二:
优点:配置可以外部化,而且修改配置文件,不需要单独发布jar包。
到此这篇关于解决spring-cloud-config 多服务共享公共配置的问题的文章就介绍到这了,更多相关spring-cloud-config 公共配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Mybatis-Plus同时使用逻辑删除和唯一索引的问题及解决办法(报数据重复Duplicate entry的
在开发中,我们经常会有逻辑删除和唯一索引同时使用的情况,但当使用mybatis plus时,如果同时使用逻辑删除和唯一索引,会报数据重复Duplicate entry的问题,如何解决这个问题呢,小编给大家分享Mybatis-Plus同时使用逻辑删除和唯一索引的问题及解决办法,一起看看吧2023-11-11如何在Java SpringBoot项目中配置动态数据源你知道吗
这篇文章主要介绍了SpringBoot如何在运行时动态添加数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2021-09-09Spring Boot系列教程之7步集成RabbitMQ的方法
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。下面这篇文章主要给大家介绍了关于Spring Boot之7步集成RabbitMQ的相关资料,需要的朋友可以参考下2018-11-11
最新评论