微服务架构学习-进阶篇--10,消息总线bus

第一节,bus解决了什么问题?

在这里插入图片描述
微服务架构学习-进阶篇--10,消息总线bus_第1张图片
上图为客户端的刷新。当git远程仓库有变动的时候,如果我们是去刷新客户端即微服务,那么刷新之后,服务A会获取配置信息,并且发送消息给Ribbit MQ,然后由RibbitMQ发消息通知其他的微服务,然后这些微服务再去本地仓库获取配置信息。

微服务架构学习-进阶篇--10,消息总线bus_第2张图片
上图为服务端的刷新。当git仓库发生变动之后,如果是在服务端刷新,那么服务端会直接通知RibbitMQ,由RibbitMQ去通知其他所有的微服务,然后这些微服务再自行去config-server种获取配置信息,而config-server再去git远程仓库拉取最新配置。

第二节,采用bus实现自动刷新配置信息-client刷新

(1)在config模块下新建两个maven项目,分别命名为config-client-bus,config-client-bus2,拷贝config-client-refresh的文件和部分代码到这两个新建的项目。
(2)修改配置文件。
|-修改端口;
|-添加rabbitMQ的配置:

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=twf
spring.rabbitmq.password=123456
spring.rabbitmq.virtualHost=/

(3)修改pom文件。
添加如下bus的依赖:


	org.springframework.cloud
	spring-cloud-starter-bus-amqp

(4)启动config-server,config-client-bus,config-client-bus2。
(5)访问git,查看config-client-dev.properties的内容:
微服务架构学习-进阶篇--10,消息总线bus_第3张图片
(6)浏览器分别访问http://localhost:8124/test,http://localhost:8125/test,结果如下:
微服务架构学习-进阶篇--10,消息总线bus_第4张图片
微服务架构学习-进阶篇--10,消息总线bus_第5张图片
和git上的内容是一致的。
(7)此时我们将git上的配置文件改为“book.config=dev6.0”,然后保存。
(8)然后我们通过HttpClientUtil.java发送bus刷新请求。
微服务架构学习-进阶篇--10,消息总线bus_第6张图片
然后我们可以在后台看到,服务开始自动刷新,然后看到刷新成功标志:
微服务架构学习-进阶篇--10,消息总线bus_第7张图片
微服务架构学习-进阶篇--10,消息总线bus_第8张图片
(9)此时我们再在浏览器访问http://localhost:8124/test,http://localhost:8125/test,结果如下:
微服务架构学习-进阶篇--10,消息总线bus_第9张图片
微服务架构学习-进阶篇--10,消息总线bus_第10张图片
可见采用bus在客户端实现自动刷新成功。

第三节,采用bus实现自动刷新配置信息-server刷新

(1)在config模块下新建maven项目,命名为config-server-bus,拷贝config-server的文件和部分代码到新项目。
(2)修改pom文件。
加入bus的依赖包:


	org.springframework.cloud
	spring-cloud-starter-bus-amqp

(3)修改配置文件。
|-修改端口;
|-添加rabbitMQ的配置:

#springboot 默认开启了权限拦截 会导致 /refresh出现401,拒绝访问
management.security.enabled=false

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=twf
spring.rabbitmq.password=123456
spring.rabbitmq.virtualHost=/

(4)启动该项目及config-client-bus,config-client-bus2。
(5)浏览器访问http://localhost:8124/test,http://localhost:8125/test,结果都是“dev6.0”,该值是git上的config-client-dev.properties的内容。
(6)修改git上的config-client-dev.properties的内容为“dev7.0”。
(7)然后通过HttpClientUtil.java发送bus刷新请求。
微服务架构学习-进阶篇--10,消息总线bus_第11张图片
此时两个客户端服务开始自动刷新配置。等刷新完成,浏览器访问http://localhost:8124/test,http://localhost:8125/test,结果都为“dev7.0”。

(8)如果要局部刷新怎么办?比如现在有很多服务,但是我只想刷新其中一个,此时该如何处理呢?
在git上将配置修改为“dev8.0”,然后发送下图所示请求。
微服务架构学习-进阶篇--10,消息总线bus_第12张图片
从后台日志可以看到只有config-client-bus自动刷新了。
浏览器访问http://localhost:8124/test,http://localhost:8125/test,端口为8124的结果为dev8.0,端口为8125的结果依然为dev7.0。
(8)如果想刷新某个服务的集群,又应该怎么做呢?服务的集群,就是应用名相同的服务。
在git上将配置改为“dev9.0”,然后发送下图所示请求:
微服务架构学习-进阶篇--10,消息总线bus_第13张图片
从后台日志可以看到config-client-bus和config-client-bus2都自动刷新了,因为它们的应用名都是config-client。
(9)源码点这里。

你可能感兴趣的:(微服务,SpringCloud学习系列)