提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、依赖

二、config

1.server端

2.client端

三、cloud bus实现配置自动更新

加入依赖

更新配置文件



前言

当项目运行需要多个微服务集群时,就需要大量的重复配置,config优化了这一点,将微服务集群中的重复配置放到gitee之类的版本管理工具上,微服务通过config server获取gitee上的重复配置,以及消息总线bus实现的配置自动更新。

文中只实现了简单的案例来学习功能实现

  • 建议使用spring initializr创建服务
  • 文中springboot版本为2.4.6

一、依赖

config server依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--spring cloud config依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--spring cloud bus依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

config client 端,实际环境中不存在特定的client端,所有需要配置管理的的都是client

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.0</version></dependency><!-- spring cloud bus依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><!-- 语法糖,偷懒用依赖 --><!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.25</version></dependency><!-- 语法糖,偷懒用依赖 --><!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

二、config

1.server端

启动类加入@EnableConfigServer注解

yml配置

server:port: 8800
spring:application:name: congfigServercloud:consul:host: localhostport: 8500config:server:git:uri: https://gitee.com/lkf3250/config.git    #git克隆地址default-label: master    #所在分支

此时,如果git上有配置文件,就已经可以再网页上看到配置项了

访问地址  http://localhost:端口号/文件名-环境.yml,无环境时默认xxxx

2.client端

yml文件

client端启动时,会按yml配置启动,由于配置缺失,启动会报错

解决:cloud为了功能执行提供了相应的解决方法,把application.yml更名为bootstrap.yml即可

详细见https://blog.csdn.net/youanyyou/article/details/81178311


spring:application:name: congfigclientcloud:consul:host: localhostport: 8500config:discovery:service-id: congfigServer #服务名#开启根据服务名获取enabled: truelabel: master #分支name: defaultConfig #文件名profile: dev  #环境
management:endpoints:web:exposure:include: "*"

由于在实际环境中server端也可能是集群部署,可以通过服务名找到server,再通过server获取配置

git上创建两个配置文件

测试配置

默认配置

client端会获取 defaultConfig.yml和defaultConfig-dev.yml的合并配置

写一个方法获取并返回配置中的name值

@Slf4j
@RestController
@RefreshScope //再不重启服务器的情况下获取最新的配置信息
//@EnableAutoConfiguration
public class textcontroller {@Value("${name}")private String name;@Value("${name1}")private String name1;@RequestMapping(value = "/t" )public String textc(){log.info("client linked");return "client linked"+name+"/"+name1;}
}

访问http://localhost:8801/t 获取到name和name1的值

都这里client已经通过server获取到git上的配置,git上有配置更新时,可以手动通过post请求http://127.0.0.1:8801/actuator/refresh更新配置,但是实际情况中client不只有一个端口,这里就需要一个组件去通知复数个client去请求配置更新。

三、cloud bus实现配置自动更新

bus组件需要消息中间件来实现,bus依赖中自带rabbitmq依赖,所以文中选用rabbitmq

加入依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency>

由于有bus做广播,我们向server端发送post请求通过bus广播给复数个client,向通过server请求配置。

bus需要rabbitmq做异步处理所以cerver和client端需要做rabbitmq的连接配置,多个client端的mq配置相同所以可以放在git的公共配置里

更新配置文件

server端yml

server:port: 8800
spring:application:name: congfigServercloud:consul:host: localhostport: 8500config:server:git:uri: https://gitee.com/lkf3250/config.gitdefault-label: masterrabbitmq:host: localhostport: 5672username: password:
management:endpoints:web:exposure:include: "*"

client端yml

server:port: 8801 #由于要建集群,把端口号放回本地配置
spring:application:name: congfigclientcloud:consul:host: localhostport: 8500config:fail-fast: truediscovery:service-id: congfigServer #服务名#开启根据服务名获取enabled: truelabel: master #分支name: defaultConfig #文件名profile: dev  #环境
#rabbit配置放在git的公共配置里
#  rabbitmq:
#    host: 172.0.0.1
#    port: 5672
#    username: guest
#    password: hhgz3250
management:endpoints:web:exposure:include: "*"

此时就可以实现自动配置了,更新配置后,从server端口请求 http://127.0.0.1:8800/actuator/busrefresh

若要对指定集群更新配置,可以请求http://127.0.0.1:8800/actuator/busrefresh/服务名

结束!

spring cloud 2020.0.3 学习记录(四)配置中心config以及bus实现自动配置更新相关推荐

  1. Spring Cloud 2020.0.0 正式发布,对开发者来说意味着什么?

    作者 | YourBatman 在线教育领域资深架构师,Spring Framework 开源贡献者 冷冷 云集架构师.开源项目 pig 负责人.Spring Cloud Alibaba Commit ...

  2. 极客日报第 37 期:苹果官网出现价格 Bug;大众 CEO点评“苹果造车”;Spring Cloud 2020.0 正式发布

    文章目录 一.互联网快讯 二.程序员专属 三.Github 每日精选 四.CSDN 社区优质博文精选 一.互联网快讯 1.阿里云量子模拟平台"太章 2.0"正式开源 阿里巴巴发布阿 ...

  3. Spring Cloud 2020.0.4 发布!

    作者 | 冷冷 来源 | https://mp.weixin.qq.com/s/ugyP_6s8XJxLk_2L9e_8PA Spring Cloud 2020.0.4 正式发布,这是错误修正版本.兼 ...

  4. Spring Cloud 2020.0.5 发布

    来源 | 公众号「Java架构日记」 Spring Cloud 2020.0.5 正式发布,这是错误修正版本.兼容 Spring Boot 2.4.x and 2.5.x, 不支持 2.6.x (请使 ...

  5. Spring Cloud 2020.0.3 发布!

    2021年5月28日,Spring Cloud发布2020.0.3版本.该版本已经可以在Maven Central中找到. 版本内容 该版本是一个Bug修复和依赖升级版本.其中主要更新的内容如下: S ...

  6. 【方向盘】Spring Cloud 2021.0.0正式发布,FeignClient调用结果可一键缓存

    盛年不重来,一日难再晨. 本文已被https://yourbatman.cn收录:女娲Knife-Initializr工程可公开访问啦:程序员专用网盘https://wangpan.yourbatma ...

  7. spring cloud 2020 改变了版本的命名规则

    前言 一直对spring cloud 的版本命名规则很诟病,之前的spring cloud 版本名是根据伦敦地铁站名称的英文名称并按照字母a-z进行排序.虽然知道了规则感觉还行,但是这种对非英语语言环 ...

  8. Spring Cloud 2020 年路线图:二季度Spring Boot 2.3、四季度Spring Cloud Ilford

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 局长 来源 | oschina.net/new ...

  9. Spring Cloud 2021.0.1 发布

    来源:JAVA架构日记 Spring Cloud 2021.0.1 正式发布,这是 Spring Cloud 2021 的第一个错误修正版本. 支持 2021.0.0 平稳升级 目前已经可以从中央仓库 ...

最新文章

  1. 解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid
  2. 网站如何接入微信支付功能?微信支付详细教程它来了(建议收藏)
  3. 预定义的类型“System.Object”未定义或未导入
  4. 云生态战略首次曝光,牵手精诚中国和神州光大共建云生态
  5. 专题:数据自治开放(下)
  6. wpf 绘制矩形_WPF制作倒影效果
  7. 高三计算机专业vb试题二答案,高三计算机专业VB试题(二)
  8. Log4j.properties配置详解
  9. hive —— 分区表
  10. hdu5745 La Vie en rose(暴力)
  11. mate40怎么用鸿蒙系统,怎么使用鸿蒙系统?
  12. 世界杯开赛在即,告诉你5个用区块链玩转球赛的秘密 | 内附独家资源
  13. WebDAV之葫芦儿·派盘+人升
  14. pynq 环境搭建_PYNQ系列学习(一)——Pynq开发环境配置
  15. dg怎么了(最近dg怎么了)
  16. Redis入门指南之复制
  17. 用友CDM货位间商品移库(一步)增加冲红功能
  18. 对话农民丰收节交易会-万祥军:龙头企业谋定社会责任
  19. 拉格朗日小传及其代数思想理论、应用
  20. Spark报错:Error:scalac: Scala compiler JARs not found (module ‘Spark_two‘): C:\Users\沫小新\.m2\repo

热门文章

  1. Xilinx Kintex-7 XC7K325T-2FFG676I嵌入式核心板简介
  2. 202-基于TI DSP TMS320C6678、Xilinx K7 FPGA XC7K325T的高速数据处理核心板
  3. C#/Unity不允许发送UDP到255.255.255.255的解决方法
  4. 在linux下怎么打包直接运行的node-webkit桌面应用
  5. 网站更换域名和服务器不收录,更换域名就是一个坑,没事千万不要轻易入坑
  6. csch和acsch--双曲余割和反双曲余割函数
  7. 什么是随机对照双盲实验
  8. jquery照片流_使用自定义图像集创建Ajaxy照片库(jQuery)
  9. 数据输出延迟时长测试方案
  10. OpenCL的多GPU开发(顺便提一下OpenGL的多GPU开发)