配置中心 Spring Cloud Config

本文介绍了Spring Cloud Config作为配置中心的使用,包括理解配置中心的重要性,配置管理通过Git,创建远程Git仓库如码云,搭建Config微服务,改造微服务从配置中心获取配置,以及讨论了配置中心实时更新的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 配置中心 Spring Cloud Config

1. 目标

  • 了解配置中心的作用
  • 能配置Git仓库
  • 能搭建配置中心
  • 修改微服务,从配置中心获取修改的配置

2.  讲解

2.1 Config简介

分布式系统中,由于服务数量非常多,配置文件分散在不同微服务项目中,管理极其不方便。为了方便配置文件集中管理,需要分布式配置中心组件。在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持配置文件放在远程仓库Git(GitHub、码云)。配置中心本质上是一个微服务,同样需要注册到Eureka服务中心!

​ 【配置中心的架构图】

2.2 Git配置管理

2.3远程Git仓库

  • 知名的Git远程仓库有国外的GitHub和国内的码云(gitee);
  • GitHub主服务在外网,访问经常不稳定,如果希望服务稳定,可以使用码云;
  • 码云访问地址:http://gitee.com

测试地址:

https://gitee.com/skllll/config.git

2.4 创建远程仓库

首先使用码云上的git仓库需要先注册账户

账户注册完成,然后使用账户登录码云控制台并创建公开仓库

配置仓库 名称和路径

2.5创建配置文件

在新建的仓库中创建需要被统一配置管理的配置文件

文件命名有规则:


配置文件的命名方式:{application}-{profile}.yml或{application}-{profile}.properties
application为应用名称
profile用于区分开发环境dev,测试环境test,生产环境pro等
  开发环境 user-dev.yml
  测试环境 user-test.yml
  生产环境 user-pro.yml

创建一个user-provider-dev.yml文件

将user-provider工程里的配置文件application.yml内容复制进去。

创建完user-provider-dev.yml配置文件之后,gitee中的仓库如下: 

2.6 搭建配置中心微服务

实现步骤:


1. 创建配置中心SpringBoot项目config_server
2. 配置坐标依赖
3. 启动类添加开启配置中心服务注解
4. 配置服务中心application.yml文件
5. 启动测试

实现过程:

(1)创建工程

工程坐标


<artifactId>config-server</artifactId>
<groupId>com.itheima</groupId>
<version>1.0-SNAPSHOT</version>

(2)pom.xml依赖


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud-parent</artifactId>
        <groupId>com.itheima</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>config-server</artifactId>

    <dependencies>
        <!-- Eureka客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--配置中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>
</project>

(3)创建启动类

config-server工程中创建启动类com.itheima.ConfigServerApplication,代码如下:


@SpringBootApplication
@EnableDiscoveryClient//开启Eureka客户端发现功能
@EnableConfigServer//开启配置服务支持
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class,args);
    }
}

(4)application.yml配置文件


# 注释版本
server:
  port: 18085 # 端口号
spring:
  application:
    name: config-server # 应用名
  cloud:
    config:
      server:
        git:
          # 配置gitee的仓库地址
          uri: https://gitee.com/skllll/config.git
# Eureka服务中心配置
eureka:
  client:
    service-url:
      # 注册Eureka Server集群
      defaultZone: http://127.0.0.1:7001/eureka
# com.itheima 包下的日志级别都为Debug
logging:
  level:
    com: debug

注意:上述spring.cloud.config.server.git.uri是在码云创建的仓库地址

(5)测试

启动config-server,访问<http://localhost:18085/user-provider-dev.yml>,效果如下:

可以查看到码云上的文件数据,并且可以在gitee上修改user-dev.yml,然后刷新上述测试地址也能及时更新数据

2.7 服务去获取配置中心配置

目标:改造user-provider工程,配置文件不再由微服务项目提供,而是从配置中心获取。

实现步骤:


1. 添加配置中心客户端启动依赖
2. 修改服务提供者的配置文件
3. 启动服务
4. 测试效果

实现过程:

(1)添加依赖


<!--spring cloud 配置中心-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

(2)修改配置

删除user-provider工程的application.yml文件

创建user-provider工程bootstrap.yml配置文件,配置内容如下


# 注释版本
spring:
  cloud:
    config:
      name: user-provider # 与远程仓库中的配置文件的application保持一致,{application}-{profile}.yml
      profile: dev # 远程仓库中的配置文件的profile保持一致
      label: master # 远程仓库中的版本保持一致
      discovery:
        enabled: true # 使用配置中心
        service-id: config-server # 配置中心服务id
#向Eureka服务中心集群注册服务
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka

关于application.yml和bootstrap.yml文件的说明:


- bootstrap.yml文件是SpringBoot的默认配置文件,而且其加载时间相比于application.yml更早。
- bootstrap.yml和application.yml都是默认配置文件,但定位不同
  - bootstrap.yml可以理解成系统级别的一些参数配置,一般不会变动
  - application.yml用来定义应用级别的参数
- 搭配spring-cloud-config使用application.yml的配置可以动态替换。
- bootstrap.yml相当于项目启动的引导文件,内容相对固定
- application.yml文件是微服务的常规配置参数,变化比较频繁

启动测试:

启动服务中心、配置中心、用户中心user_service

如果启动没报错,其实已经使用上配置中心内容了

可以在服务中心查看也可以检验user_service的服务

2.8 配置中心存在的问题

(1)修改码云配置文件

修改在码云上的user-provider-dev.yml文件,添加一个属性test.message,如下操作:

(2)读取配置文件数据

user-provider工程中创建一个com.itheima.controller.LoadConfigController读取配置文件信息,代码如下:


@RestController
@RequestMapping(value = "/config")
public class LoadConfigController {

    @Value("${test.message}")
    private String msg;

    /***
     * 响应配置文件中的数据
     * @return
     */
    @RequestMapping(value = "/load")
    public String load(){
        return msg;
    }
}

启动运行user-provider,访问<http://localhost:18081/config/load>

修改码云上的配置后,发现项目中的数据仍然没有变化,只有项目重启后才会变化。

3 小结

  • 配置中心的作用:将各个微服务的配置文件集中到一起进行统一管理。

  • 能搭建配置中心

  需要在application.yml配置文件中指定需要远程更新的仓库地址。

 

  • 修改微服务,从配置中心获取修改的配置

properties
  创建bootstrap.yml,并在bootstrap.yml中配置
  # 注释版本
  spring:
    cloud:
      config:
        name: user-provider # 与远程仓库中的配置文件的application保持一致,{application}-{profile}.yml
        profile: dev # 远程仓库中的配置文件的profile保持一致
        label: master # 远程仓库中的版本保持一致
        discovery:
          enabled: true # 使用配置中心
          service-id: config-server # 配置中心服务id
  #向Eureka服务中心集群注册服务
  eureka:
    client:
      service-url:
        defaultZone: http://127.0.0.1:7001/eureka
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值