spring cloud Greenwich 学习笔记(五)spring cloudconfig + spring cloud bus实现全自动刷新集群配置

文章目录

  • 概述
  • 前情提要
  • 集成springcloud bus消息总线
  • 测试
  • 全自动刷新

springcloud系列学习笔记目录参见博主专栏 spring boot 2.X/spring cloud Greenwich。
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。文章所有代码都已上传GitHub:https://github.com/liubenlong/springcloudGreenwichDemo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

概述

之前的文章中介绍了springcloud config的使用、集成eureka注册中心、配置的刷新等内容,但是之前介绍的是手动刷新,并且只支持单台服务的配置刷新,实际应用中肯定不是单台服务而是集群。本文介绍如何与spring cloud bus一起实现集群的配置全自动更新

前情提要

  • spring cloud Greenwich 学习笔记(四)springcloud config 分布式配置中心
  • RabbitMQ简介 及 Windows安装RabbitMQ

集成springcloud bus消息总线

我们这里首先将springcloud-config-serverspringcloud-config-client copy一份(后缀添加autorefresh),用于本文描述。
配置服务端升级
注意是添加了spring-cloud-starter-bus-amqp。其他不变
完整的pom文件:

<dependencies>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>

    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-bus-amqpartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-config-serverartifactId>
    dependency>

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    dependency>
dependencies>

配置客户端升级
首先也是添加spring-cloud-starter-bus-amqp依赖
完整pom依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-config-clientartifactId>
    dependency>

    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-actuatorartifactId>
    dependency>

    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    dependency>

    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-bus-amqpartifactId>
    dependency>
dependencies>

application.yml中需要添加rabbitmq以及cloud bus的配置,完整配置如下:

server:
  port: 8092

spring:
  application:
    name: springcloud-config-client
  rabbitmq:
    host: localhost
    port: 5672
    username: lbl
    password: 123456
  cloud:
    bus:
      enabled: true
      trace:
        enabled: true

#配置actuator
# 1.X版本的springboot 配置: management.security.enabled=false  已经作废
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh,health,info # 2.X 版本的配置方式。默认只有health,info,这里需要将refresh添加上【手动刷新使用的是refresh,使用消息总线则是bus-refresh】
  endpoint:
    health:
      show-details: always

其他不变。

测试

依次启动springcloud-eureka-server, 两个springcloud-config-server-autorefresh(端口:8090, 8091), 两个springcloud-config-client-autorefresh(端口8092,8093)
此时访问http://127.0.0.1:8092/hihttp://127.0.0.1:8093/hi返回结果都是hi zhangsan66
我们修改git配置文件的内容为zhangsan77。访问其中一台客户端http://127.0.0.1:8092/actuator/bus-refresh进行刷新,刷新成功后,再次访问http://127.0.0.1:8092/hihttp://127.0.0.1:8093/hi,返回结果都是hi zhangsan77
我们没有刷新8093这台机器,但是通过spring cloud bus使得集群中的所有机器都刷新了配置。
至此 spring cloudconfig + eureka + spring cloud bus + rabbitmq实现了手动刷新功能。架构图如下:
spring cloud Greenwich 学习笔记(五)spring cloudconfig + spring cloud bus实现全自动刷新集群配置_第1张图片

全自动刷新

上面虽然可以刷新集群中所有机器的配置,但还是需要手动调用接口刷新。接下来我们来配置一下实现全自动刷新配置。
这里需要使用到GIT的webhooks功能:
spring cloud Greenwich 学习笔记(五)spring cloudconfig + spring cloud bus实现全自动刷新集群配置_第2张图片
上面的Payload URL就填写我们的配置中心触发刷新的地址,当然这里不能写localhost啦,要外网访问地址才行。
通常来讲我们的配置中心也是在公司内网,这里只要确保公司内部的git可以访问配置中心即可。
还有这里面有个Secret的秘钥验证,如果这里填写的话,在配置文件上要写上encrypt.key与之对应。

springcloud系列学习笔记目录参见博主专栏 spring boot 2.X/spring cloud Greenwich。
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。文章所有代码都已上传GitHub:https://github.com/liubenlong/springcloudGreenwichDemo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

你可能感兴趣的:(spring,cloud,spring,boot,2.X/spring,cloud,Greenwich)