Spring Cloud 动态刷新配置

当config客户端启动时,会从server端获取一次配置,而后我们更新server端托管的配置之后客户端并不能获取到最新的配置,所以需要我们进行一定的处理

主动刷新

  • 重启,重启客户端,客户端启动时会再次重新加载配置
    ps:此方法并不可取,生产环境往往不能随便重启
  • 调用客户端的refresh方法
    1、客户端pom.xml添加依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

2、关闭client内部端口的身份认证

management.security.enabled=false

3、向当前客户端(http://xxx/refresh)发起post请求

此种方案适用性有限,当服务为集群部署或复杂架构下就不太适用了,下面介绍一种更优的方案

Bus消息总线推送刷新

这里消息中间件使用的是kafkarabbitmq集成方法与之类似,这里就不再一一描述

1、安装kafkazookeeperkafka依赖于zookeeperkafka新版本的内置了zookeeper,这里使用的是kafka2.11-1.1.1版本,最后一个支持java7的版本
2、config服务及customer增加依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-kafka</artifactId>
        </dependency>
        <!--当前版本spring cloud默认引用的无法启动,需要重新引用-->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>1.0.3.RELEASE</version>
        </dependency>

3、增加相关配置

management.security.enabled=false
spring.cloud.stream.kafka.binder.brokers=localhost:9092
spring.cloud.stream.kafka.binder.zk-nodes=localhost:2181

4、向当前config服务端(http://xxx/bus/refresh)发起post请求

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容