Spring Cloud Consul 配置中心

说明

配置中心简介

  • Consul 提供了一个 Key/Value仓库来存储配置和其他元数据。
  • 在这里插入图片描述
  • 在特定的 bootstrap时期配置会被加载到 Spring 环境中。配置默认存储在 /config 目录。根据应用名和激活的配置文件,模拟 Spring Cloud Config解析属性的顺序创建多个 PropertySource实例。例如,一个应用名为 “testApp” ,启用profile为 dev 的应用,以下配置源会被创建:
    • config/testApp,dev/
      config/testApp/
      config/application,dev/
      config/application/
      
    • 偏特定的配置在上面,偏通用的配置在底下。在 config/application/目录下的配置适用于所有使用 consul 管理配置的应用 。在 config/testApp目录下的配置仅适用于服务名为 testApp的服务实例。

项目构建

  • 博主另一篇博客中,构建了一个基础的微服务项目: awesome-user-server。本博客在这个项目的基础上,引入配置中心。
  • 在这里插入图片描述
    • 添加了一个 bootstrap.yml 配置文件

依赖

  • 要启动 Spring Cloud Consul 配置中心服务,只要用引入 spring-cloud-starter-consul-config即可。
  • 项目(awesome-user-server)中实际引入的是:spring-cloud-starter-consul-all,它包含了 :
    • 在这里插入图片描述
    • 因此,不需要做任何改动

配置

  • 可以通过以下属性进行自定义Consul 配置。
    • bootstrap.yml
    •  spring:
         cloud:
           consul:
             config:
               enabled: true
               prefix: configuration
               defaultContext: apps
               profileSeparator: '::'
      
    • enabled设置这个属性为 false 将会关闭 Consul 配置
    • prefix为配置信息设置基础目录
    • defaultContext设置适用于所有应用的目录
    • profileSeparator设置分隔符的值,用于分隔属性源配置文件名(profiles)
  • 博主当前的配置:
    • bootstrap.yml
    • spring:
        cloud:
          consul:
            config:
              enabled: true
              prefix: config
              defaultContext: awesome-user-server
              profileSeparator: ','
              data-key: configuration
              format: YAML
      
    • 这个配置的作用:
      • Consul 配置中心使用 YAML 格式的配置文件
      • 本项目会读取 Consul 配置中心 Key/Value仓库中 key 为 config/awesome-user-server/configuration对应的 Value 值。
        • 这个 Value 值是一个 YAML 格式的配置文件的内容。它用于覆盖默认的配置。
          • 例如,项目中的 application.yml的配置项 key1 = value1。假设此时Value 值(它是一个YAML格式的文档内容)也包含 key1配置项,而且 key1 = value2。那么,项目实际读取配置项 key1时,取到的值是 value2

测试

引用默认配置

  • 默认情况下,使用的数据库为 andy_test。
  • 请求获取用户信息接口:
    • 在这里插入图片描述

通过配置中心修改默认配置

  • 通过修改 config/awesome-user-server/configuration的内容,覆盖默认配置:
  • 这里,修改连接的数据库,把 andy_test修改为 andy_test_v0
    • 在这里插入图片描述
    • 再次访问获取用户信息接口,发现信息内容已经发生了变化:
      • 在这里插入图片描述

版权声明:本文为liqing0013原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。