关于Springcloud Config的使用 小结

16 篇文章 0 订阅
9 篇文章 0 订阅

目录

1. Config概述

1.1 简介

1.2 用途

2. Config服务端配置与测试

2.1 配置服务中心

2.2 配置读取规则

3. Config客户端配置与测试

3.1 配置客户端

3.2 客户端动态刷新配置


1. Config概述

1.1 简介

Spring Cloud Config,众所周知,分布式微服务的配置会随着项目的庞大变得越来越多,于是便有了Springcloud config。

分为服务端和客户端,服务端也称分布式配置中心,是个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息、加密/解密信息等访问。

客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置,并在启动时从配置中心获取和加载配置信息服务器,默认用的是Git来存储配置信息,有助于对环境进行版本管理,并且可以通过Git客户端工具来方便地管理和访问。

1.2 用途

1) 集中管理配置文件。

2) 不同环境不同配置,动态的配置更新,分环境部署如dev/test/prod/beta/release。

3) 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息。

4) 当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置。

5) 将配置信息以REST接口的形式暴露(post、curl访问刷新即可)。

2. Config服务端配置与测试

以下案例代码的Github地址

三个modules分别是:cloud-eureka-server7001,cloud-config-center-3344,cloud-config-client-3355。

2.1 配置服务中心

1) Github创建新建一个新的Repository,用来存放通用配置(比如config-dev.yml对应开发环境的通用配置):

config:
  info: "just for test(config-dev.yml)."

  • 用GitHub Desktop创建Repository默认是Private,会导致下一步的访问配置资源404。 
  • 注意到这里的分支是“main”而不是“master”,cloud-config-center-3344的label可以使用“master”,但客户端的label要使用“main”。

 2) 创建模块cloud-config-center-3344,配置config的uri:

server:
  port: 3344

spring:
  application:
    name: cloud-config-center
  cloud:
    config:
      server:
        git:
          uri: https://github.com/BAStriver/springcloud-test-config.git #Github上的git仓库名字
          ##搜索目录.这个目录指的是github上的目录 https://github.com/BAStriver/springcloud-test-config.git
          search-paths:
            - config-repo
      ##读取分支
      label: master

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/

3) 先启动cloud-eureka-server7001,再启动cloud-config-center-3344。

4) 访问:localhost:3344/main/config-dev.yml。

2.2 配置读取规则

1) /{label}/{application-{profile}.yml} :(推荐

  • master:localhost:3344/master/order-dev.yml
  • dev:localhost:3344/dev/order-dev.yml

2) /{application-{profile}.yml} :访问localhost:3344/master/order-test.yml

3) /{application-{profile}{/{label}} :访问localhost:3344/order/test/master

4) 更多规则可以参考:Pattern Matching and Multiple Repositories

3. Config客户端配置与测试

3.1 配置客户端

1) 创建模块cloud-config-client-3355,值得注意的是,这次的yml是“bootstrap.yml”。

server:
  port: 3355

spring:
  application:
    name: config-client
  cloud:
    #Config客户端配置
    config:
      label: main #分支名称,注意到底是master还是main
      name: config #配置文件名称
      profile: dev #读取后缀名称
      uri: http://localhost:3344
      #上面4个综合起来就是 main分支上 config-dev.yml:http://localhost:3344/main/config-dev.yml
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/

 注:注意区分Github上显示的分支名称到底是“main”还是“master”。

2) 添加一个接口(启动的时候会从服务中心获取配置的信息,而在这里的configInfo直接注入):

@RestController
public class ConfigClientController {

    // 因为config仓库以rest形式暴露,所以所有客户端都可以通过config服务端访问到github上对应的文件信息
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String getConfigInfo() {
        return  configInfo;
    }
}

3) 访问:localhost:3355/configInfo。

3.2 客户端动态刷新配置

事实上,服务中心的配置可能随时更新,这个时候,刷新3344发现ConfigServer配置中心立刻响应,刷新3355发现ConfigClient客户端没有任何响应,3355没有变化除非自己重启或者重新加载,每次都重启就显得有些不合理,于是需要引入actuator监控。

1) 修改cloud-config-client-3355的pom.xml,引入actuator监控。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2) 修改YML,暴露监控端口。

#暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

3) 这个时候重启cloud-config-client-3355,然后修改config-dev.yml,其实cloud-config-client-3355也还是不会更新配置信息,需要发送post请求刷新。

curl -X POST “http://localhost:3355/actuator/refresh”

4) 事实上,这种方式其实也并不是很好的解决方案,结合Springcloud Bus 消息总线就能更便捷地实时更新各模块的配置信息了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值