springcloud笔记8——配置管理 Spring Cloud Config

1,Spring Cloud Config介绍

Spring Cloud Config是对微服务的配置文件进行统一管理的。其工作原理是:
我们首先需要将各个微服务公共的配置信息推送到 GitHub 远程版本库。
然后我们再定义一个 Spring Cloud Config Server,其会连接上这个 GitHub 远程库。
这样我们就可以定义 Config 版的 Eureka Server、提供者与消费者了,它们都将作为 Spring Cloud Config Client 出现,它们都会通过连接 Spring Cloud Config Server 连接上 GitHub 上的远程库,以读取到指定配置文件中的内容。
在这里插入图片描述

2,新建配置文件目录,添加配置文件并上传到git仓库

在原有项目根目录下新建一个文件夹 service-config
将以前的项目application.yml配置文件复制到此目录下。
这里测试,只把provider的配置文件provider-application-test.yml放到这个目录下,提交该目录到git。provider-application-test.yml已经添加好多环境配置

server:
  port: 8081
spring:
  profiles:
    active: develop
  application:
    name: provider-depart
---
spring:
  profiles: develop
  jpa:
    generate-ddl: true
    show-sql: true
    hibernate:
      ddl-auto: none
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/testdata?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8000/eureka

logging:
  # 设置日志输出格式
  pattern:
    console: level-%level %msg%n
  level:
    root: info
    org.hibernate: info
    org.hibernate.type.descriptor.sql.BasicBinder: trace
    org.hibernate.type.descriptor.sql.BasicExtractor: trace
    com.demo.provider018081: debug

---
spring:
  profiles: master
  jpa:
    generate-ddl: true
    show-sql: true
    hibernate:
      ddl-auto: none
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://xxxx:3306/testdata2?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root

eureka:
  client:
    service-url:
      defaultZone: http://xxxx:8000/eureka

logging:
  # 设置日志输出格式
  pattern:
    console: level-%level %msg%n
  level:
    root: error
    org.hibernate: warn
    org.hibernate.type.descriptor.sql.BasicBinder: trace
    org.hibernate.type.descriptor.sql.BasicExtractor: trace
    com.demo.provider018081: warn
---
# Eureka工作界面中instance-id处链接的信息
info:
  company.name: www.abc.com
  company.addr: China Beijing
  company.tel: 12345678
  app.name: abc-msc
  app.desc: mic-server-cloud
  author: abc

3,创建配置管理工程configserver-8095

3.1 创建一个 Spring Initializr工程

命名为configserver-8095,其仅需要一个 Config Server和eureka客户端依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!--eureka客户端依赖-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

3.2 定义配置文件

从码云仓库读取项目仓库地址,因为我们只需要配置文件yml,不需要其他模块的东西,所以需要searchPaths 过滤一下

server:
  port: 8095

spring:
  application:
    name: config-service
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/luckylanyu/SpringCloud.git
          #搜索顶级和“service-config/”子目录以及名称以“test”开头的任何子目录中的配置文件。
          searchPaths: service-config,test*
          username: xxx
          password: xxx
          timeout: 5
          # 分支,(git仓库定义)
          default-label: develop
          # 环境(配置文件内定义)
          profile: develop
    client:
      ip-address: http://127.0.0.1

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8000/eureka/

4,外部配置版的provider

将原来的provider工程的application.yml文件删除(也就是已经放到配置文件仓库的provider-application-test.yml文件),新建bootstrap.yml。

  • bootstrap.yml 中配置的是应用启动时所必须的配置信息。
  • application.yml 中配置的是应用运行过程中所必须的配置信息
  • bootstrap.yml 优先于 application.yml 进行加载。
spring:
  cloud:
    config:
      # 配置管理工程地址
      uri: http://127.0.0.1:8095
      # 配置文件名,省略后缀
      name: provider-application-test
      # git分支
      label: develop
      # 文件内定义的环境
      profile: develop

----------------------到这里配置管理就可以生效了-------------------

5,配置自动更新

GitHub 中提供了 Webhooks 功能来确保远程库中的配置文件更新后,客户端中的配置信
息也可以实时更新。具体实现方式可参考如下一篇博文:
https://blog.csdn.net/qq_32423845/article/details/79579341
这种方式存在的弊端:

  • 每个 Config Client 主机都需要在 GitHub 中进行注册
  • 每个 Config Client 需要从 GitHub 上更新配置,都需要提交一个 post 请求,即若有 N 多 个 Config Client,则需要提交 N 多个请求。

生产环境下一般使用的是 Spring Cloud Bus 完成配置文件的自
动更新。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

占星安啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值