问题描述

我们公司的项目是基于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-aservice-bconfig/ 目录下的配置文件,配置如下:

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 多服务共享公共配置的解决方案总结,太全了!的更多相关文章

  1. Spring Cloud Config、Apollo、Nacos配置中心选型及对比

    Spring Cloud Config.Apollo.Nacos配置中心选型及对比 1.Nacos 1.1 Nacos主要提供以下四大功能 2.Spring Cloud Config 3.Apollo ...

  2. Spring Cloud Config 使用Bus的动态配置中心

    server端配置 POM文件 <dependency> <groupId>org.springframework.boot</groupId> <artif ...

  3. Spring cloud config client获取不到配置中心的配置

    Spring cloud client在配置的时候,配置文件要用 bootstrap.properties 贴几个说明的链接.但是觉得说的依然不够详细,得空详查. 链接1 链接2 链接3 原文地址:h ...

  4. Spring Cloud官方文档中文版-Spring Cloud Config(上)-服务端(配置中心)

    官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...

  5. Spring Boot + Spring Cloud 构建微服务系统(九):配置中心(Spring Cloud Config)

    技术背景 如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多.此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启, ...

  6. 【SpringCloud构建微服务系列】使用Spring Cloud Config统一管理服务配置

    一.为什么要统一管理微服务配置 对于传统的单体应用而言,常使用配置文件来管理所有配置,比如SpringBoot的application.yml文件,但是在微服务架构中全部手动修改的话很麻烦而且不易维护 ...

  7. 微服务SpringCloud之Spring Cloud Config配置中心Git

    微服务以单个接口为颗粒度,一个接口可能就是一个项目,如果每个项目都包含一个配置文件,一个系统可能有几十或上百个小项目组成,那配置文件也会有好多,对后续修改维护也是比较麻烦,就和前面的服务注册一样,服务 ...

  8. 微服务SpringCloud之Spring Cloud Config配置中心SVN

    在回来的路上看到一个个的都抱着花,吃了一路的狗粮,原本想着去旁边的工业园里跑跑步呢,想想还是算了,人家过七夕,俺们过巴西.上一博客学习了Spring Cloud Config使用git作为配置中心,本 ...

  9. Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务

    上一篇文章,讲了SpringCloudConfig 集成Git仓库,这一篇我们讲一下SpringCloudConfig 配和 Eureka 注册中心一起使用 在分布式系统中,由于服务数量巨多,为了方便 ...

随机推荐

  1. mysql5.5和5.6的一些区别

    timestamp 5.5中 直接写timestamp不加长度   5.6 中 写的timestamp(3) datatime 5.5中 直接写datetime 不加长度  5.6中 可以添加长度(3 ...

  2. 华为方舟编译器正式支持C语言:完全开源

    投递人 itwriter 发布于 2020-10-14 19:08 评论(15) 有1938人阅读 原文链接 2019 年 8 月底,华为方舟编译器(OpenArkCompiler)正式开源,迈出了跨 ...

  3. Windows下的git服务器搭建

    时间一晃又是两个月过去了,我好像在写博客这方面有点懒,= .= 主要也是没啥好写的,项目上的事情又不能写,能写的东西实在太少. 前两个月领导花巨资申请了一个服务器,让我搞git服务器来管理代码,花了几 ...

  4. MeteoInfoLab脚本示例:获取一维数据并绘图

    气象数据基本为多维数据(通常是4维,空间3维加时间维),只让数据中一维可变,其它维均固定即可提取一维数据.比如此例中固定了时间维.高度维.纬度维,只保留经度维可变:hgt = f['hgt'][0,[ ...

  5. 19。删除链表倒数第N个节点

    class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next# 这道题还是很简单的,我们只 ...

  6. go panic

    panic 抛出异常 通过recover捕获 类似 php python等语言的try catch package mainimport ( "fmt" "errors& ...

  7. 想买保时捷的运维李先生学Java性能之 JIT即时编译器

    前言 本文记录日常学习<深入理解Java虚拟机>,不知道为啥感觉看一遍也就过了,喜欢动动手理解理解,这样才有点感觉,静不下心来的时候,看书抄书也可以用这个办法. 一.什么是JIT(Just ...

  8. zookeeper核心之ZAB协议就这么简单!

    背景 我们都知道 Zookeeper 是基于 ZAB 协议实现的,在介绍 ZAB 协议之前,先回顾一下 Zookeeper 的起源与发展. Zookeeper 究竟是在什么样的时代背景下被提出?为了解 ...

  9. spring与缓存注解,以及encache缓存使用

    随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...

  10. 小白:String函数总结

    string.h函数: 1.strlen 数出字符串存在多少字符: 2.strcmp 比较两个字符串,若相等返回0不相等返回1 3.strcpy(char *restrict dst,const ch ...