前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >springcloud之Config和Bus

springcloud之Config和Bus

作者头像
冬天vs不冷
发布2025-01-20 22:07:52
发布2025-01-20 22:07:52
10400
代码可运行
举报
文章被收录于专栏:springbootspringboot
运行总次数:0
代码可运行

一、Config分布式配置中心

1、概述简介

SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供一个中心化的外部配置。

  • SpringCloud Config分为服务端和客户端两部分。
  • 服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息
1.1、功能
  • 集中管理配置文件(公共部分,如数据库连接)
  • 不同环境不同配置,动态化的配置更新
  • 运行期间动态调整配置
  • 当配置发送变动时,服务不需要重启就可以应用到新配置
  • 将配置信息以REST接口的形式暴露

2、Config服务端配置

项目结构

启动类

代码语言:javascript
代码运行次数:0
复制
@SpringBootApplication
@EnableConfigServer
public class MainAppConfigCenter3344 {
    public static void main(String[] args) {
        SpringApplication.run(MainAppConfigCenter3344.class,args);
    }
}

yml配置文件

代码语言:javascript
代码运行次数:0
复制
server:
  port: 3344

spring:
  application:
    name: cloud-config-center
  cloud:
    config:
      server:
        git:
          #uri: git@github.com:EiletXie/config-repo.git #Github上的git仓库名字
          # github仓库的地址,把地址栏复制粘贴即可
          uri: https://gitee.com/xu-chang354/cloud2020.git
          #搜索目录.这个目录指的是github上的目录
          search-paths:
            - cloud2020
      # 分支,对应github仓库的分支,可查看本文章第一张图片上的Branch
      label: master
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka

gitee上的配置文件

config-dev.yml内容

方式一yml格式:

方式二json格式:

3、Config客户配置

  • application.yml是用户级的资源管理项
  • bootstrap.yml是系统级的,优先级更高

启动类

代码语言:javascript
代码运行次数:0
复制
@SpringBootApplication
@EnableEurekaClient
public class ConfigClientMain3355 {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientMain3355.class,args);
    }
}

yml文件

代码语言:javascript
代码运行次数:0
复制
server:
  port: 3355

spring:
  application:
    name: config-client
  cloud:
    config:
      label: master #分支名称
      name: config #配置文件名称
      profile: dev #读取后缀名称
      uri: http://localhost:3344 #配置中心地址



eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka

controller业务层

代码语言:javascript
代码运行次数:0
复制
@RestController
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String getConfigInfo(){
        return configInfo;
    }

}

4、Config动态刷新之手动版

问题描述:

修改gitee上config-dev.yml配置文件,version=1 ===> version=2;

config服务端

config客户端

gitee修改配置文件,config客户端不会同步

业务层

yml文件

属性客户端配置

此时gitee、config服务端、config客户端获取到的配置文件参数一致

二、Bus消息总线

1、概述简介

  • Spring Cloud Bus 配合 Spring Cloud Config使用实现配置的动态刷新。
  • Bus支持的两种消息代理:RabbitMQ和Kafka。

消息总线

使用消息代理构建一个共用的消息主题,并让系统中所有微服务实例都连接上。由于该主题中产生的消息会被所有实例监听和消费,所有称为为消息总线。

实现原理

ConfigClient实例都监听MQ中同一个topic(默认是springCloudBus)。当一个服务刷新数据时候,它会把这个信息放到Topic中,其他监听同一Topic的服务就能得到通知,然后去更新自身的配置

2、动态刷新全局广播

一个服务端,二个客户端

服务端yml

客户端yml

MQ主题默认

刷新config服务端

1、只需要刷新一次,所有绑定的客户端配置文件都会刷新; 2、此时gitee、coinfig服务端,两个config客户端获取到配置文件信息都是一致的

3、动态刷新定点通知

只通知3355微服务客户端修改配置文件,其他客户端不修改

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Config分布式配置中心
    • 1、概述简介
      • 1.1、功能
    • 2、Config服务端配置
    • 3、Config客户配置
    • 4、Config动态刷新之手动版
  • 二、Bus消息总线
    • 1、概述简介
    • 2、动态刷新全局广播
    • 3、动态刷新定点通知
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档