问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

软件架构-分布式集中配置中心Spring Cloud Config详解(下)

发布网友 发布时间:2024-10-02 02:49

我来回答

1个回答

热心网友 时间:2024-11-29 16:02

上次咱们主要说下,如果制作server,client端如何获取,而且还说了加密和解密。这次咱们说说动态刷新配置,消息队列如何配置分布式系统统一配置和高可用。

配置信息手动刷新(一)

很多场景下,需要在运行期间动态调整配置。如果配置发生了修改,微服务要如何实现配置的刷新呢?重点都是开关值这块,一开始认为开关可以走的,后来发现流量太大了,必须把开关关闭。动态的改内存中的值。

① 源码

10-ms-config-client-refresh

② 添加依赖

其中spring-boot-starter-actuator提供了/refresh端点,用于配置的刷新

<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.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

③ 在Controller上添加注解@RefreshScope,添加这个注解的类会在配置更改时得到特殊的处理

④ 演示功能

启动10-ms-config-server项目

启动10-ms-config-client-refresh

1.启动项目(启动两个,一个端口8081,一个端口8082), 访问地址:http://localhost:8081/profile, 得到结果: dev-1.0, ?访问地址:http://localhost:8082/profile, 得到结果: dev-1.0

2.修改git仓库里的配置文件ms-config-dev.properties的内容为: profile=dev?-1.0-?change

3.再次访问地址:http://localhost:8081/profile,得到结果还是 dev-1.0,说明配置尚未刷新

4.发送post请求:http://localhost:8081/refresh,返回结果:"profile",表 示profile这个配置属性已被刷新

5.再次访问 http://localhost:8081/profile,得到结果: dev-1.0-change,说明属性已刷新

6.再次访问 http://localhost:8082/profile,得到结果: dev-1.0,说明8082的服务 并没有刷新,还需再次手动刷新才能更新配置

配置信息自动刷新(二)

使用/refresh端点手动刷新配置,但如果所有微服务节点的配置都需要手动去刷新,工作量可想而知。不仅如此,随着系统的不断扩张,会越来越难以维护。因此,实现配置的自动刷新是很有必要的,Spring Cloud Bus就可以实现配置的自动刷新。Spring Cloud Bus使用轻量级的消息代理(例如 RabbitMQ、 Kafka等)连接分布式系统的节点,这样就可以广播传播状态的更改(例如配置的更新)或者其他的管理指令。可将Spring Cloud Bus想象成一个分布式Spring Boot Actuator。

① 源码

10-ms-config-server-refresh-cloud-bus 10-ms-config-client-refresh-cloud-bus

② 服务端 10-ms-config-server-refresh-cloud-bus 添加依赖

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

③ 服务端 10-ms-config-server-refresh-cloud-bus 配置文件增加rabbitmq

④ 客户端 10-ms-config-client-refresh-cloud-bus 添加依赖

<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.boot</groupId>????<artifactId>spring-boot-starter-actuator</artifactId>??</dependency>??<dependency>????<groupId>org.springframework.cloud</groupId>????<artifactId>spring-cloud-starter-bus-amqp</artifactId>??</dependency>

⑤ ?客户端 10-ms-config-client-refresh-cloud-bus 配置文件增加rabbitmq

⑥ ?rabbitmq docker的方式安装

docker?run?-d?-p?5672:5672?-p15672:15672?--name?myrabbitmq?rabbitmqdocker?ps

运行项目(运行一个config server和两个config client),修改git仓库里的配置文件,然后用post方式请求地址:http://localhost:8080/bus/refresh,如果返回成功,则config的所有客户端的配置都会动态刷新。【里面关于rabbitmq的地址配置根据实际情况配置吧】

一个config server

两个config client

修改git仓库里的配置文件

post方式请求地址:http://localhost:8080/bus/refresh,如果返回成功

客户端动态刷新后

通过mq的方式动态的管理分布式的所有系统刷新配置文件,是不是很爽。

config的安全认证(三)

① 源码

10-ms-config-server-authenticating 10-ms-config-client-authenticating

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAV5GGnw-1635300314501)(https://upload-images.jianshu.io/upload_images/11223715-de21ec6818f2e3e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

② 10-ms-config-server-authenticating 添加依赖

??<dependency>????<groupId>org.springframework.cloud</groupId>????<artifactId>spring-cloud-config-server</artifactId>??</dependency>??<dependency>????<groupId>org.springframework.boot</groupId>????<artifactId>spring-boot-starter-security</artifactId>??</dependency>

③ 10-ms-config-server-authenticating application.yml配置

④ 10-ms-config-client-authenticating 添加依赖

<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>

⑤ ?10-ms-config-client-authenticating application.yml配置

首先服务端启动安全机制,用户名,密码。客户端连接的时候通过用户名和密码。

config与eureka配合使用(四)

10-ms-config-server-eureka,10-ms-config-client-eureka,08-ms-eureka-server config配置中心的高可用

config server未注册到eureka上的情况,通过负载均衡器来实现

config server注册到eureka上的情况,client端也注册到eureka上,则已经实现高可用

PS:基本上springcloudconfig的配置已经讲完了,这次的比上次更加实用,高可用,高性能。已经凌晨2点了有点太累了,不总结了,希望各位老铁可以get到。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
立秋后钓鱼什么风向好-立秋钓鱼风向怎么选 赱乂砉込儬 怎么读 "赱"读什么? 解决电脑无法搜索到iPhone热点的问题如何修复iPhone热点无法在电脑上显... 电脑搜不到iphone12热点 iphone开热点给电脑搜不到 国企的地产有哪些 国企下设公司是什么意思? 红加蓝加绿是什么色. 梦幻西游75级开三倍抓鬼一轮有多少经验 springboot+kafka如何利用kafkatemple批量发送消息? 一起来学kafka之整合SpringBoot深入使用(一) SpringBoot 整合 Kafka 实现千万级数据异步处理,实战介绍! 农业保险保费收入是什么? 【SpringBoot系列】SpringBoot整合Kafka(含源码) 农业保险保费收入指什么 托福考试费用是多少 怎么修改WIFI密码???急急急,求专业人员在线指导我,我就改个WIFI密码... 酷我音乐点歌是不是要用耳机 酷我音乐耳机h1在QQ音乐里没有适配,用哪一款耳机替代适配听低音比较好... 宠物狗中小型笼子大概多大 酷我音乐下载的流畅品质和超高品质有区别吗?平常听能听不来吗? 在酷我音乐下载到一些20多mb的音乐,请问要用什么耳机才可以听到... 宠物笼子在什么地方卖啊 宠物笼子怎么拆? 宠物笼子怎么开? excelVBA按字母表顺序对工作表进行排序 ai中怎么把图片颜色换成pt色ai怎么将图片换色 ...中的钢笔工具画出了一个图形,我怎么用渐变给这个图形添加颜色... 怎么修改ai里面的png文件的颜色? ai可以给图片换颜色吗? 上古世纪天鹰游侠加点(上古世纪天鹰游侠是什么介绍_上古世纪天鹰游侠加 ... 在公司干了5年,辞职了,5年公司承担的养老保险部分都没有了吗?全部要... 之前在一家公司有交养老保险,当时辞职的时候没转社保,现在已到异地工作... 上海私立高中 最好是徐汇和闵行 金鱼应激的症状及应对方法 圣堂加点(上古世纪圣堂骑士加点介绍_圣堂加点(上古世纪圣堂骑士加点是... ...帮忙看看这是什么病,最好能给出治疗方案,谢谢各位了 ...是不是有病了还是咋了?要是有病的话是什么病啊?怎么办?自己... 两个多媒体教室,既可以各自独立使用,又能像在一教室里面学习上课,怎样... ...需要在办公室利用一种设备直接将我的声音传到教室,请问应该用什么设 ... 7万元能买到什么样的合资电动车? 中国人民健康保险怎么查询理赔进度 CnE的鞋子怎么样 我女儿是2014年农历二月初二凌晨两点三十分体重六斤六两,五行缺... 电脑屏幕分辨率选择标准是什么? 电脑分辨率多少才是适合电脑的电脑分辨率多少合适 如何确定最适合电脑硬件的分辨率? gear内存是什么意思? 如何解决打印机没有水印? 佳能g15是单反吗