《Spring Cloud Config与Bus整合实现微服务配置自动刷新》

目录

  • Config与Bus整合自动刷新
    • 步骤1:安装RabbitMQ并启动
      • RabbitMQ的安装
    • 步骤2:创建项目
      • 创建Eureka Server
      • 创建config-server
    • 步骤3: 添加依赖
    • 步骤4:Config Client
    • 步骤5:测试运行
    • 问题一
    • 问题二
  • 总结

Config与Bus整合自动刷新

微服务A的所有实例都通过Spring Cloud Bus消息总线连接到了一起,每个实例都会从Config Server订阅配置更新事件并获取配置信息。当其中一个微服务节点的/ous/refresh端点被请求时,该实例就会向Spring Cloud Bus消息总线发送一个配置更新事件,其他实例通过Spring Cloud Bus消息总线获得该事件后也会从Config Server获取最新的配置信息并更新配置。
在这里插入图片描述
在这里插入图片描述

步骤:

1.安装RabbitMQ并启动

2.添加依赖

3.修改配置文件

4.改造Config Client

5.测试运行

步骤1:安装RabbitMQ并启动

RabbitMQ的安装

1.下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:erlang,双击.eerlangxe文件进行安装就好,安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录,同时将%ERLANG_HOME%\bin加入到Path中。
在这里插入图片描述
最后打开cmd命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功
在这里插入图片描述
2.下载RabbitMQ,下载地址:RabbitMQ,同样双击.exe进行安装就好(注意:默认的安装目录是C:/Program Files/…,这个目录中是存在空格符的,我们需要改变安装目录,貌似RabbitMQ安装目录中是不允许有空格的)。

3.安装RabbitMQ-Plugins,这个相当于是一个管理界面,方便我们在浏览器界面查看RabbitMQ各个消息队列以及exchange的工作情况,安装方法是:打开命令行cd进入rabbitmq的sbin目录,输入:rabbitmq-plugins enable rabbitmq_management命令,稍等会会发现出现plugins安装成功的提示,默认是安装6个插件。
在这里插入图片描述
4.插件安装完之后,在浏览器输入http://localhost:15672进行验证,你会看到下面界面,输入用户名:guest,密码:guest 就可以进入管理界面。
在这里插入图片描述
在这里插入图片描述

步骤2:创建项目

Eureka Server,config-server,config-client

创建Eureka Server

1)使用Spring Initializr方式创建一个名称为eureka-server的Spring Boot项目,将Artifact命名为eureka-server,在pom.xml文件中添加Eureka Server依赖。

方便测试效果,新建一个eureka-server项目作为Config Server的注册中心,
将eureka-server端口号设置为8761。
在这里插入图片描述
在加载不出来添加,要与springboot版本相符
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.bushuo</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>

                spring-cloud-starter-netflix-eureka-server

            </artifactId>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>

        <dependencies>

            <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-dependencies</artifactId>

                <version>Finchley.SR2</version>

                <type>pom</type>

                <scope>import</scope>

            </dependency>

        </dependencies>

    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2):添加Eureka的相关配置

在全局配置文件application.yml中添加Eureka的相关配置信息。
在这里插入图片描述

  • fetch-registry:
    设置false 时,该Eureka客户端不会从Eureka Server获取服务注册表的信息。这意味着它不会尝试拉取其他服务的信息,通常这在自身就是Server的情况下使用。
  • register-with-eureka:
    设置为 false 时,Eureka 客户端不注册到 Eureka Server。即不将自身信息注册到服务注册表。在 Eureka Server 节点配置中常用,因 Eureka Server 本身无需注册到其他 Eureka Server,单实例时是。

3):在项目启动类添加@EnableEurekaServer注解

在项目启动类EurekaServerApplication上添加@EnableEurekaServer注解开启Eureka Server功能。

在这里插入图片描述

4)测试运行 http://localhost:8761
在这里插入图片描述

创建config-server

在config-4下创建config-server,添加依赖,添加配置,在启动类添加注解

可以参考操作
依赖
在这里插入图片描述
配置bootstrap
在这里插入图片描述
添加启动类注解
在这里插入图片描述

步骤3: 添加依赖

Config Server和Config Client与Spring Cloud Bus整合实现配置自动刷新。改造Config Server与Config Client,在各自的pom.xml配置文件中添加spring-cloud-starter-bus-amqp依赖实现配置自动更新与spring-boot-starter-actuator依赖监控系统健康情况的工具。

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-bus-amqp</artifactId>
         <version>2.0.0.RELEASE</version>
    </dependency>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-actuator</artifactId>


    </dependency>

修改配置文件

改造Config Server和Config Client的配置文件,在配置文件中设置rabbitmq属性的相关配置,包括主机地址、端口号、用户名和密码,如下所示。
在这里插入图片描述

spring:
  application:
    name: config-client
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/nobyebye/hello.git
          username: #自己的gitee用户名
          password: #密码
          label: master
  profiles:
    active: dev
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
server:
  port: 8001
management:
  endpoints:
    web:
      exposure:
        include: "bus-refresh"

步骤4:Config Client

config-client的bootstrap.yml
在这里插入图片描述
添加控制器
在这里插入图片描述

Config Client,在需要动态刷新配置的类ConfigClientApplication上加上注解@RefreshScope。在这里插入图片描述
要在gitee的配置文件添加foo,不然没有注解
在这里插入图片描述

步骤5:测试运行

在这里插入图片描述

依次启动config-server、config-client项目。启动成功后,使用浏览器访问http://localhost:8002/foo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开cmd输入命令:curl -X POST http://localhost:8769/actuator/bus-refresh。
在这里插入图片描述

在这里插入图片描述

实现Config与Bus整合自动刷新后,系统能做到实时检测配置变更并自动应用,无需额外的人工干预,减少了系统中断时间和重启操作。这不仅提高了系统的稳定性,还能显著提升运维和开发的效率。

问题一

idea运行多个端口,没有services的窗口,点击edit Configurations
在这里插入图片描述

点击Templates->+ springboot,apply,ok了
在这里插入图片描述

在这里插入图片描述

窗口出来了
在这里插入图片描述

问题二

整合Bus自动刷新改进了之前的什么问题?

  1. 手动刷新繁琐:以往配置更新后需要手动重启各服务实例,耗时且麻烦。自动刷新可以省去这一过程,让更新更简单快捷。

  2. 减少服务中断:手动重启会导致短暂的服务中断。自动刷新避免了重启,提升了服务的连续性和可用性。

  3. 配置一致性:手动更新可能导致不同实例间配置不一致,带来同步问题。自动刷新确保所有实例同步更新,保持一致性。

  4. 降低运维复杂性:自动刷新减少了手动操作,降低运维负担,避免人为失误。

  5. 提高实时性:配置更新可实时应用,服务能更快地响应变化,提高了系统的适应性和灵活性。

总结

通过整合Spring Cloud Config与Bus实现配置自动刷新,可以在无需重启服务的情况下更新微服务配置。该机制减少了运维干预,提升了系统的稳定性和运维效率,尤其在快速变更的环境中十分实用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/893712.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python创建树状图

python创建树状图 想法&#xff1a;如何去记住每个页面的元素&#xff0c;如何实现不同页面的导航&#xff0c;如何从主页面遍历每一个页面的每一个元素 1.创建数据结构存储 2.树状图正好是我们想要的结构体 class TreeNode:def __init__(self, data):self.data dataself.ch…

电感电容谐振原理及Matlab仿真

一、电感电容谐振原理概述 电感电容谐振&#xff08;LC谐振&#xff09;是一种电路现象&#xff0c;它发生在电感器&#xff08;L&#xff09;和电容器&#xff08;C&#xff09;通过适当的方式连接时&#xff0c;电路中电流和电压之间形成共振。在这种共振状态下&#xff0c;…

2025选题推荐|基于SpringBoot的幼儿园智能管理与监控系统的设计与实现

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…

测试代理IP速度的方法有哪些?

了解代理的连接速度是否快速是确保网络使用效率和体验的关键因素之一。本文来为大家如何有效地评估和测试代理IP的连接速度&#xff0c;以及一些实用的方法和工具&#xff0c;帮助用户做出明智的选择和决策。 一、如何评估代理IP的连接速度 1. 使用在线速度测试工具 为了快速…

MySQL从入门到跑路

SQL语言 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是用于管理和操作关系数据库的一种标准编程语言。 SQL分类&#xff1a; DDL(Data Definition Language)&#xff1a;数据定义语言&#xff0c;用于操作数据库、表、字段&#xff0c…

外包干了3周,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;大专生&#xff0c;21年通过校招进入武汉某软件公司&#xff0c;干了差不多3个星期的功能测试&#xff0c;那年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我才在一个外包企业干了3周的功…

XCTF通关记录

XCTF通关记录 地址1、Banmabanma2、适合作为桌面一、变暗反转过后&#xff0c;仔细看是有个二维码的、调节然后调节亮度与对比度、得到它二、二维码解码出来之后1 、首先想到的是ASCII码&#xff0c;但是结果好像不对2、然后去搜索这是个啥 3、心仪的公司 地址 xtcf&#xff1…

uniapp,获取头部高度

头部自定义时候&#xff0c;设置获取安全区域&#xff0c;可以用 uni.getSystemInfoSync();接口。 <view class"statusBar" :style"{height:statusBarHeightpx}"> let SYSuni.getSystemInfoSync(); let statusBarHeightref(SYS.statusBarHeight) …

Java基于SSM微信小程序物流仓库管理系统设计与实现(lw+数据库+讲解等)

选题背景 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

webm格式怎么转换成mp4?几个操作简单的视频格式转换方法

webm格式怎么转换成mp4&#xff1f;webm&#xff0c;一种由Google推出的开源视频格式&#xff0c;以其高效的压缩率和流媒体传输能力而备受青睐。它特别适用于网络视频播放&#xff0c;能够在保证视频质量的同时&#xff0c;大大节省带宽和存储空间。然而&#xff0c;尽管webm格…

Selenium打开外部应用程序的弹窗处理

问题 selenium自动化操作页面跳转到外部应用程序进行下载等操作&#xff0c;各种窗口处理方式无法解决 原因 该窗口属于浏览器窗口&#xff0c;与访问页面无关&#xff08;已经脱离页面操作层面&#xff09; 解决 selenium启动浏览器时&#xff0c;对浏览器进行相关窗口设…

RDD优化:缓存和checkpoint机制、数据共享(广播变量、累加器)、RDD的依赖关系、shuffle过程、并行度说明

文章目录 1. 缓存和checkpoint机制1.1 缓存使用1.2 checkpoint1.3 缓存和checkpoint的区别 2. 数据共享2.1 广播变量2.2 累加器 3. RDD依赖关系4.shuffle过程4.1 shuffle介绍4.2 spark计算要尽量避免shuffle 5. 并行度 1. 缓存和checkpoint机制 缓存和checkpoint也叫作rdd的持…

SAM应用:医学图像和视频中的任何内容分割中的基准测试与部署

医学图像和视频中的任何内容分割&#xff1a;基准测试与部署 目录 摘要&#xff1a;一、引言1.1 SAM2 在医学图像和视频中的应用 二.结果2.1 数据集和评估协议2.2 二维图像分割的评估结果 三 讨论四 局限性和未来的工作五、方法5.1数据来源和预处理5.2 微调协议5.3 评估指标 总…

无人机视角下火灾检测数据集 共12736张 标注文件为YOLO适用的txt格式。已划分为训练集、验证集、测试集。类别:Fire yolov5-v10通用

无人机视角下火灾检测数据集 共12736张 标注文件为YOLO适用的txt格式。已划分为训练集、验证集、测试集。类别&#xff1a;Fire yolov5-v10通用 无人机视角下火灾检测数据集 共12736张 标注文件为YOLO适用的txt格式。已划分为训练集、验证集、测试集。类别&#xff1a;Fire yol…

Apple Find My介绍

0 Preface/Foreword 1 Apple Find My介绍

【Vue】Vue(八)Vue3.0 使用ref 和 reactive创建响应式数据

ref 创建&#xff1a;基本类型的响应式数据 **作用&#xff1a;**定义响应式变量。语法&#xff1a;let xxx ref(初始值)。**返回值&#xff1a;**一个RefImpl的实例对象&#xff0c;简称ref对象或ref&#xff0c;ref对象的value属性是响应式的。注意点&#xff1a; JS中操作…

达梦8-SQL日志配置与分析工具

以 dmsql_数据库实例名.log 类型命名的文件为跟踪日志文件&#xff0c;跟踪日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息等。跟踪日志主要用于分析错误和分析性能问题&#xff0c;比如&#xff0c;可以挑出系统现在执行速度较慢的 SQL 语句&#xff0c;进而对其…

以JavaScript的学习角度看Axios,并以spring boot+vue3为例具体分析实现

什么是Axios Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于在浏览器和 后端 中发送异步的 HTTP 请求。它功能强大、易用&#xff0c;常用于与 API 交互&#xff0c;发送 GET、POST、PUT、DELETE 等请求。 Axios 的主要特点&#xff1a; 支持 Promise Axios 基于 …

鸿蒙应用开发:全面认识鸿蒙系统

前言 随着智能设备的普及和物联网的发展&#xff0c;对操作系统的需求也越来越多样化。鸿蒙操作系统作为一款面向全场景的分布式操作系统&#xff0c;其适用范围非常广泛&#xff0c;从智能手机到家用电器&#xff0c;再到工业设备&#xff0c;都能找到应用场景。特别是在智能…

【含开题报告+文档+PPT+源码】基于SSM的景行天下旅游网站的设计与实现

开题报告 随着互联网的快速发展&#xff0c;旅游业也逐渐进入了数字化时代。作为一个旅游目的地&#xff0c;云浮市意识到了互联网在促进旅游业发展方面的巨大潜力。为了更好地推广云浮的旅游资源&#xff0c;提高旅游服务质量&#xff0c;云浮市决定开发一个专门的旅游网站。…