SpringCloud Config分布式配置中心

文章目录

  • 代码地址
  • 简介
  • 与GitHub整合配置
  • 项目整合
    • 测试
  • Config客户端配置与测试
    • 测试
  • Config客户端之动态刷新
    • 测试

代码地址

地址:https://github.com/13thm/study_springcloud/tree/main/days10_Config

简介

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。

SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理…

作用:

  1. 不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release
  2. 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息
  3. 当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置

与GitHub整合配置

  1. 用你自己的账号在GitHub上新建一个名为springcloud-config的新Repository

  2. 拉取到本地

git clone [email protected]:13thm/springcloud-config.git

不知道为什么 这里总是拉取不下来总是超时,用了还是不行…

然后后面就换到Gitee 里面试了

https://gitee.com/thmiao/springcloud-config

项目整合

  1. 新建Module模块cloud-config-center-3344
  2. 写pom
  3. 改yml
  4. 写主启动类
  5. windows下修改hosts文件,增加映射
    地址:
C:\Windows\System32\drivers\etc

SpringCloud Config分布式配置中心_第1张图片
SpringCloud Config分布式配置中心_第2张图片

127.0.0.1  config-3344.com

打开命令提示符(Command Prompt)或 PowerShell,以管理员身份运行。然后执行以下命令来刷新 DNS 缓存:

ipconfig /flushdns

测试

测试通过Config微服务是否可以从GitHub上获取配置内容

http://config-3344.com:3344/master/config-dev.yml
http://localhost:3344/master/config-dev.yml

SpringCloud Config分布式配置中心_第3张图片

/{name}-{profiles}.yml
例子:http://localhost:3344/config-dev.yml


/{label}-{name}-{profiles}.yml
例子:http://localhost:3344/master/config-dev.yml
 

label:分支(branch)

name :服务名

profiles:环境(dev/test/prod)

Config客户端配置与测试

  1. 新建cloud-config-client-3355
  2. 写pom
  3. 写bootstrap.yml(配置文件)
    applicaiton.yml是用户级的资源配置项

bootstrap.yml是系统级的,优先级更加高

Spring Cloud会创建一个“Bootstrap Context”,作为Spring应用的Application Context的父上下文。初始化的时候,Bootstrap Context负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的Environment

  1. 主启动
  2. 业务类

测试

http://config-3344.com:3344/master/config-dev.yml
http://config-3344.com:3344/master/config-dev.yml
http://localhost:3355/configInfo

SpringCloud Config分布式配置中心_第4张图片
SpringCloud Config分布式配置中心_第5张图片
SpringCloud Config分布式配置中心_第6张图片

成功实现了客户端3355访问SpringCloud Config3344通过GitHub获取配置信息

Config客户端之动态刷新

问题随时而来,分布式配置的动态刷新问题

  1. Linux运维修改GitHub上的配置文件内容做调整
  2. 刷新3344,发现ConfigServer配置中心立刻响应
  3. 刷新3355,发现ConfigClient客户端没有任何响应
  4. 3355没有变化除非自己重启或者重新加载
  5. 难到每次运维修改配置文件,客户端都需要重启??噩梦
    避免每次更新配置都要重启客户端微服务3355

修改3355模块
1 . POM引入actuator监控

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-actuatorartifactId>
dependency>
  1. 修改YML,暴露监控端口
  2. 业务类Controller修改

测试

访问:

http://config-3344.com:3344/master/config-dev.yml
http://localhost:3355/configInfo

修改:
- 此时修改github—> 3344 ---->3355
- 这时候访问

需要运维人员发送Post请求刷新3355

# 必须是POST请求
curl -X POST "http://localhost:3355/actuator/refresh"

这下就实现了避免客户端都需要重启

你可能感兴趣的:(springcloud,spring,cloud,分布式,spring)