Spring Cloud微服务笔记七(Config配置中心)

概况

Spring Cloud Config为微服务架构中的微服务提供集中化的外部部署支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
Spring Cloud Config分为服务端和客户端两部分,服务端也称为分布式配置中心,他是一个独立的微服务应用,用来连接配置服务器应为客户端提供获取配置信息,加密/解密信息等访问接口。
客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载信息配置服务器,默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。

作用

  1. 集中管理配置文件
  2. 不同环境不同配置,动态化的配置更新,分环境比如dev/test/prod/beta/release
  3. 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务回想配置中心统一拉取自己的信息
  4. 当配置发生改变时,服务不需要重启即可感知到配置的变化并应用新的配置
  5. 将配置信息一REST接口的形式暴露(POST/CRUL访问刷新即可)

配置

服务端

Maven

 <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
  </dependency>

YML配置

server:
  port: 3344
spring:
  application:
    name: config-center
  cloud:
    config:
      server:
        git:
          uri: https://github.com/mj164499472/springcloud-config.git
          search-paths:
            - springcloud-config
      label: master
  #rabbitmq相关配置,15672是web端口,5672是访问端口
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka
##rabbitmq相关配置,暴露bus刷新配置的端点

management:
  endpoints:
    web:
      exposure:
        include: "bus-refresh"

主启动类添加注解:@EnableConfigServer

通过以上配置就可通过访问服务的方式获取到GitHub上的配置内容,例如http://localhost:3344/master/config-dev.yml
读取配置规则:/{lable}/{application}-{profile}.yml、/{application}-{profile}.yml、/{application}-{profile}/lable
**lable:**分支(branch)
**application:**服务名
**profile:**环境(dev/test/prod)

客户端

Maven

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
  </dependency>
server:
  port: 3355

spring:
  application:
    name: config-client
  cloud:
    config:
      label: master
      name: bootstrap
      profile: dev
      uri: http://localhost:3344 #配置中心地址

#rabbitmq相关配置,15672是web端口,5672是访问端口
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

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

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

注意,bootstrap.yml的优先级最高

通过以上配置,可以简单实现客户端从服务端获取配置信息(配置中心),而服务端是从GitHub上面拉取配置信息,实现了统一管理。

配置动态刷新

当我们修改GitHub上面的配置的时候,再通过服务器去访问会发现服务端可以获取到最新的配置信息,然后我们通过客户端去访问服务端的时候,却发现获取到的配置信息却不是最新,这里需要配置动态刷新(其实上面的YML文件中就有配置过)

客户端引入actuator监控模块
Maven

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

通过配置YML,暴露监控端口

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

然后通过CMD命令:curl -X POST"http://localhost:3355/actuator/refresh"即可完成刷新
但是这也并不是最优方案,后续中会通过消息总线来进行广播刷新

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值