IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 软件架构-分布式集中配置中心Spring Cloud Config详解(下) -> 正文阅读

[Java知识库]软件架构-分布式集中配置中心Spring Cloud Config详解(下)

上次咱们主要说下,如果制作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 rabbitmq
docker 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配置中心的高可用

  1. config server未注册到eureka上的情况,通过负载均衡器来实现
  2. config server注册到eureka上的情况,client端也注册到eureka上,则已经实现高可用

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 07:54:27  更:2022-05-08 07:58:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:07:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码