spring cloud config

本文介绍如何使用Spring Cloud Config实现统一配置管理,包括服务端与客户端的搭建过程,以及如何利用Spring Cloud Bus和RabbitMQ实现配置的实时刷新。

config,同一配置中心

存在的原因,是为了解决什么问题?

  • 方便配置文件更新,同一配置在git
  • 配置内容安全与权限(即开发不能对项目的配置进行修改)
  • 更新配置项目需要重启(config配置后,不用重启)

config,分两端,一段是config-server端,一端是client端。server端负责从git上拉取配置,保存在本地git,

那么为什么本地git存一份,防止远端git出问题不能访问,这时能访问本地git的配置文件。

再通过eureka分发配置到相应的机器上。

首先配置config-server端

1.引入依赖

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

2.启动类上加注解

@EnableConfigServer

3.配置文件配置

spring:  
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/pengqingyang/config-repo
          username: xxxx
          password: xxx

4.Client配置

引入依赖

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

修改配置

spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG  //eureka配置中心的server端
      profile: dev

配置中心加载配置文件,有个要注意的地方,如果获取的是order-dev,即在配置了profile的情况下,访问order-dev配置文件,会默认加载oder文件和order-dev和并在一起。

 

Spring cloud bus自动刷新配置

原由,服务启动后,各服务会访问config-server端,获取配置文件信息,如果,中途配置文件信息改变了。

那么,各服务端也不能更新信息?

怎么解决呢,那就是服务端主动推送消息,利用消息队列(RabbitMQ)传送消息

config-server端利用spring cloud bus配置服务端接口,一般配置(/bus-refresh)

而自动更新配置怎么做?为什么?

因为,client端只在启动服务,获取一次配置,中途不会重启,所以无法获取配置。

那怎么做?通过RabbitMq推送更新消息。

在服务端配置Spring cloud bus,配置/bus-refresh接口,由github的Webhook接口,更新了github上的接口,便会触发服务端的/bus-refresh接口,服务端便会推送消息到MQ,

在服务端暴露/bus-refresh接口

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

在client端添加

@RefreshScope注解

启动github上的Webhooks,在地址栏后面加上 “外面穿透的地址/monitor”

重启项目即可

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值