Spring Cloud Config:外部集中化配置管理(上)

发表于:2022-4-19 09:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:MacroZheng    来源:稀土掘金

分享:
  摘要
  Spring Cloud Config 可以为微服务架构中的应用提供集中化的外部配置支持,它分为服务端和客户端两个部分,本文将对其用法进行详细介绍。
  Spring Cloud Config 简介
  Spring Cloud Config 分为服务端和客户端两个部分。服务端被称为分布式配置中心,它是个独立的应用,可以从配置仓库获取配置信息并提供给客户端使用。客户端可以通过配置中心来获取配置信息,在启动时加载配置。Spring Cloud Config 的配置中心默认采用Git来存储配置信息,所以天然就支持配置信息的版本管理,并且可以使用Git客户端来方便地管理和访问配置信息。
  在Git仓库中准备配置信息
  由于Spring Cloud Config 需要一个存储配置信息的Git仓库,这里我们先在Git仓库中添加好配置文件再演示其功能。

  配置仓库目录结构
  master分支下的配置信息
  ·config-dev.yml:
  config:
    info: "config info for dev(master)"

  · config-test.yml:
  config:
    info: "config info for test(master)"
 
  · config-prod.yml:
  config:
    info: "config info for prod(master)"

  dev分支下的配置信息
  · config-dev.yml:
  config:
    info: "config info for dev(dev)"
 
  · config-test.yml:
  config:
    info: "config info for test(dev)"
  
  · config-prod.yml:
  config:
    info: "config info for prod(dev)"

  创建config-server模块
  这里我们创建一个config-server模块来演示Spring Cloud Config 作为配置中心的功能。

  在pom.xml中添加相关依赖
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-config-server</artifactId>
  </dependency>
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </dependency>

  在application.yml中进行配置
  server:
    port: 8901
  spring:
    application:
      name: config-server
    cloud:
      config:
        server:
          git: #配置存储配置信息的Git仓库
            uri: https://gitee.com/macrozheng/springcloud-config.git
            username: macro
            password: 123456
            clone-on-start: true #开启启动时直接从git获取配置
  eureka:
    client:
      service-url:
        defaultZone: http://localhost:8001/eureka/

  在启动类上添加@EnableConfigServer注解来启用配置中心功能
  @EnableConfigServer
  @EnableDiscoveryClient
  @SpringBootApplication
  public class ConfigServerApplication {
      public static void main(String[] args) {
          SpringApplication.run(ConfigServerApplication.class, args);
      }
  }

  通过config-server获取配置信息
  这里我们通过config-server来演示下如何获取配置信息。

  获取配置文件信息的访问格式
  # 获取配置信息
  /{label}/{application}-{profile}
  # 获取配置文件信息
  /{label}/{application}-{profile}.yml

  占位符相关解释
  ·application:代表应用名称,默认为配置文件中的spring.application.name,如果配置了spring.cloud.config.name,则为该名称;
  · label:代表分支名称,对应配置文件中的spring.cloud.config.label;
  · profile:代表环境名称,对应配置文件中的spring.cloud.config.profile。
  获取配置信息演示
  · 启动eureka-server、config-server服务;
  · 访问http://localhost:8901/master/config-dev来获取master分支上dev环境的配置信息;
  访问http://localhost:8901/master/config-dev.yml来获取master分支上dev环境的配置文件信息,对比上面信息,可以看出配置信息和配置文件信息并不是同一个概念;
  访问http://localhost:8901/master/config-test.yml来获取master分支上test环境的配置文件信息:
  访问http://localhost:8901/dev/config-dev.yml来获取dev分支上dev环境的配置文件信息:
  创建config-client模块
  我们创建一个config-client模块来从config-server获取配置。

  在pom.xml中添加相关依赖
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-config</artifactId>
  </dependency>
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </dependency>
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  在bootstrap.yml中进行配置
  server:
    port: 9001
  spring:
    application:
      name: config-client
    cloud:
      config: #Config客户端配置
        profile: dev #启用配置后缀名称
        label: dev #分支名称
        uri: http://localhost:8901 #配置中心地址
        name: config #配置文件名称
  eureka:
    client:
      service-url:
        defaultZone: http://localhost:8001/eureka/

  添加ConfigClientController类用于获取配置
  /**
   * Created by macro on 2019/9/11.
   */
  @RestController
  public class ConfigClientController {
      @Value("${config.info}")
      private String configInfo;
      @GetMapping("/configInfo")
      public String getConfigInfo() {
          return configInfo;
      }
  }

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号