`

SpringCloud分布式微服务云架构 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)

阅读更多

Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。

 

一、准备工作

本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置 spring-cloud-starter-bus-amqp ;了解springcloud架构可以加求求:三五三六二四七二五九,这就是说我们需要装rabbitMq,点击rabbitmq下载。至于怎么使用 rabbitmq,搜索引擎下。

 

二、改造config-client

在pom文件加上起步依赖spring-cloud-starter-bus-amqp,完整的配置文件如下:

<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>



 在配置文件application.properties中加上RabbitMq的配置,包括RabbitMq的地址、端口,用户名、密码。并需要加上spring.cloud.bus的三个配置,具体如下:

 

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

spring.cloud.bus.enabled=true
spring.cloud.bus.trace.enabled=true
management.endpoints.web.exposure.include=bus-refresh



 ConfigClientApplication启动类代码如下:

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@RestController
@RefreshScope
public class ConfigClientApplication {

	/**
	 * http://localhost:8881/actuator/bus-refresh
	 */

	public static void main(String[] args) {
		SpringApplication.run(ConfigClientApplication.class, args);
	}

	@Value("${foo}")
	String foo;

	@RequestMapping(value = "/hi")
	public String hi(){
		return foo;
	}
}



 依次启动eureka-server、confg-cserver,启动两个config-client,端口为:8881、8882。

 

访问http://localhost:8881/hi 或者http://localhost:8882/hi 浏览器显示:

 

foo version 3

 

这时我们去代码仓库将foo的值改为“foo version 4”,即改变配置文件foo的值。如果是传统的做法,需要重启服务,才能达到配置文件的更新。此时,我们只需要发送post请求:http://localhost:8881/actuator/bus-refresh,你会发现config-client会重新读取配置文件

 

在这里插入图片描述

重新读取配置文件:

在这里插入图片描述

这时我们再访问http://localhost:8881/hi 或者http://localhost:8882/hi 浏览器显示:

 

foo version 4

 

另外,/actuator/bus-refresh接口可以指定服务,即使用"destination"参数,比如 “/actuator/bus-refresh?destination=customers:**” 即刷新服务名为customers的所有服务。

 

三、分析

此时的架构图:

 

在这里插入图片描述

当git文件更改的时候,通过pc端用post 向端口为8882的config-client发送请求/bus/refresh/;此时8882端口会发送一个消息,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。

 

 

分享到:
评论

相关推荐

    基于Spring Cloud(Finchley版本)架构体系

    Spring Cloud Finchley是Spring Cloud的一个重要版本,它提供了一套微服务开发的工具集,用于构建分布式系统,如服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式...

    SpringCloud分布式系统开发.docx

    - **功能**:用于传播集群状态变化的消息总线,通过轻量级消息代理连接分布式系统中的各个节点,实现服务配置的动态刷新等功能。 4. **Spring Cloud Consul** - **功能**:基于 Hashicorp Consul 的服务发现和...

    Spring Cloud Finchley.SR1-Spring Cloud 手册-Spring Cloud 文档

    Spring Cloud是一个基于Spring Boot的工具集,用于构建分布式系统的常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)。Spring Cloud...

    SpringCloudLearning_forezp.tar.gz

    史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本) 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本) 史上最简单的SpringCloud教程 | 第十...

    Spring Cloud Finchley.RELEASE 官方中文文档.rar

    Spring Cloud是基于Spring Boot进行快速构建云应用的工具集,它涵盖了配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等多种功能。Finchley.RELEASE...

    springcloud微服务框架实例

    SpringCloud是一个基于SpringBoot实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作...

    Spring Cloud Greenwich SR2 官方文档

    Spring Cloud是基于Spring Boot构建的,旨在简化开发分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)的服务。以下是对Spring Cloud ...

    springcloud 微服务,Sring cloud Greenwich-xmfcn-spring-cloud.zip

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)中...

    微服务springcloud搭建以及组件介绍.docx

    Spring Cloud包含多个版本,如Edgware、Finchley等,每个版本又包含一系列子模块,如Spring Cloud AWS用于简化Amazon Web Service的集成,Spring Cloud Bus用于实现消息总线功能等。 3. Spring Cloud的实施步骤 ...

    spring cloud

    Spring Cloud提供了一系列工具,用于快速构建分布式系统中的一些常见模式(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)。其主要目标是为...

    SpringCloud 70道面试题和答案.docx

    - **还有许多其他组件**,如服务跟踪(Sleuth)、消息总线(Bus)、熔断监控(HystrixDashboard)等。 **Spring Cloud的优缺点** 优点: 1. **低耦合**:每个微服务可以独立开发和部署,互不影响。 2. **开发效率**...

    Spring Cloud微服务教程-西安汇杰-最新版1

    - **Spring Cloud子项目**:包括Eureka(服务注册与发现)、Zuul(API网关)、Hystrix(断路器)、Spring Cloud Config(配置管理)、Spring Cloud Bus(事件、消息总线)等,这些子项目为构建微服务提供了强大的...

    springboot2.0和springcloud Finchley版项目搭建(包含eureka,gateWay,Freign,Hystrix)

    在搭建Spring Boot 2.0和Spring Cloud Finchley版项目时,通常还需要配置Spring Cloud Config(配置中心)、Spring Cloud Bus(事件总线)以及Spring Cloud Sleuth(分布式追踪)等组件,以实现更完善的微服务架构。...

    springcloud-Finchley-example

    在Java微服务领域,SpringCloud Finchley是SpringCloud生态中的一个重要版本,它为开发者提供了构建分布式系统所需的各种模式、工具和服务。本篇将深入探讨SpringCloud Finchley的核心概念、关键组件以及如何通过...

    十次方微服务开发v1.1--第7章1

    6. 消息总线:Spring Cloud Bus用来在微服务间传递消息,可以用于广播配置更新或者事件传播。 【Spring Cloud与Dubbo的对比】 Spring Cloud与Dubbo相比,覆盖了更多的微服务领域,Dubbo主要关注服务治理,而Spring...

    十次方微服务开发v1.0--第7章1

    在本节中,我们将深入探讨Spring Cloud,这是一个用于构建微服务架构的强大工具集。Spring Cloud是一系列框架的集成,旨在简化分布式系统开发,包括服务发现、配置管理、负载均衡、断路器、监控等多个关键领域。它...

    spring-cloud-finchley-demo

    Spring Cloud Finchley 是 Spring Cloud 的一个版本,它包含了一系列微服务相关的工具和框架,旨在简化构建分布式系统的过程。这个演示项目将引导我们了解如何利用 Spring Cloud Finchley 构建一套完整的微服务架构...

Global site tag (gtag.js) - Google Analytics