如何动态配置不同的项目从springcloud Configration配置中心拉取配置的根路径

问题描述

这些年随着微服务的流行,大家都在使用微服务架构,springcloud的一下组件也在被大家广泛的使用,其中,springcloud Configration就是其中之一。springcloud Configration为分布式系统中的外部化配置提供服务器端和客户端支持。使用Config Server,我们可以在中心位置管理所有环境中应用程序的外部属性。客户端和服务器上的概念与Spring EnvironmentPropertySource抽象,因此它们非常适合Spring应用程序,但可以与以任何语言运行的任何应用程序一起使用。在应用程序从开发人员到测试人员再到生产人员的整个部署过程中,您可以管理这些环境之间的配置,并确保应用程序具有它们迁移时所需的一切。服务器存储后端的默认实现使用git,因此它轻松支持带标签的配置环境版本,并且可以通过各种工具来访问这些内容来管理内容。添加替代实现并将其插入Spring配置很容易。

springcloud Config 配置中心实现一文中,我已经实现了一个基于Eureka为注册中心的配置中心,但是其中还有些地方是需要优化的,比如说,在上面的文章中,我们的配置读取路径search-paths是写死的,这样一来,要么你的配置文件必须以项目名来命名,这样才能保证不通的项目放在一个路径下,大家都能访问到,然而这并不是我们想看到的。所以现在我们就需要实现动态配置。

实现

其实,springcloud Configration已经有解决方案了,

1.如果你的项目放在不通的git项目中,那么你只需在uri做如下配置:

uri: https://github.com/{application}

其中{application}在请求时以下面的格式:organization(_)application被设置。 

2.如果你的所有配置都放在同一个git项目中,只需将search-path做如下配置:

search-paths: '{application}'

Configserver端的配置如下:

spring:
  application:
    name: cloud-config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/CrazySnailNO001/cloud-config
          username: CrazySnailNO001
          password: password
          default-label: master #配置文件分支
          search-paths: '{application}' #动态配置文件所在根目录
          timeout: 2 #单位s
          skip-ssl-validation: true #禁用配置服务器对Git服务器的SSL证书的验证
          force-pull: true #在本地副本脏的情况下从远程存储库强制拉出

测试

创建ConfigClient端,具体的细节大家可以参考上面的那篇文章,这里只讲一下细节。关于Config的配置如下:

spring:
  application:
    name: cloud-config-client
  cloud:
    config:
      uri: http://localhost:8760
      label: master
      profile: local
      discovery:
        enabled: true
        service-id: cloud-config-server
      request-connect-timeout: 3000
      request-read-timeout: 3000

我的Config配置如下: 

我们重点关注的是spring.application.name这个配置,我们的服务会根据这个去ConfigServer获取配置。启动我们的项目,可以看到日志输出:通过端口可以发现,它读到的是cloud-config-client的配置。

然后我们将我们的配置中的spring.application.name改成cloud-config-test02-client,再重新启动项目,可以看到日志输出:通过端口可以发现,它读到的是cloud-config-test02-client的配置。

其实我们也可以通过postman来获取配置:

cloud-config-client:

cloud-config-test02:
 

结论

测试结果说明我们的动态获取配置文件是生效的!

如果大家觉得我说的不是很清楚,具体的实现不知道怎么做的话,可以结合springcloud Config 配置中心实现一文。

另外更多的配置大家可以去了解一下:https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.2.2.RELEASE/reference/html/

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 点我我会动 设计师:上身试试 返回首页