- 浏览: 265354 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (298)
- 工作感悟 (6)
- java基础 (23)
- 计算机硬件知识 (1)
- 计算机网络知识 (2)
- Struts (3)
- Srping (4)
- hibernate (0)
- ibatis (0)
- webservice (4)
- Thread (22)
- maven (5)
- ubuntu/linux/centos/redhat (46)
- SSO (1)
- ESB (0)
- 工作流 (0)
- oracle (15)
- 云计算 (1)
- hadoop (1)
- nosql (0)
- mysql (3)
- sqlserver (0)
- jquery (0)
- 分布式 (3)
- 集群 (0)
- 设计模式 (2)
- EJB (0)
- map (0)
- cache (5)
- Niginx+varnish+squid+Ats (14)
- Apache (0)
- 工作/职业规划 (0)
- Scala & Groovy (1)
- English (4)
- 数据结构/算法 (6)
- 开发工具 (5)
- 测试 (2)
- Exception (0)
- 定时器 (3)
- j2ee (2)
- 部署 (1)
- Openssl (1)
- 操作系统 (3)
- kvm (13)
- libvirt (5)
- PostgreSql (5)
- 虚拟化 (3)
- 概念理解 (1)
- virt-manager (1)
- RESTful (3)
- 其它 (4)
- ssh2 (14)
- windows (1)
- 房产 (2)
- svn (1)
- 手机 (1)
- ant (1)
- flume (2)
- sqoop (1)
- fastdfs (5)
- log4j (1)
- SPDY (1)
- mongodb (2)
- MQ (2)
- Mina (1)
- dubbo (4)
- PMP (1)
- Webshpere (2)
- jvm (1)
- Btrace (1)
- zookeeper (7)
- UML (1)
- spring cloud (6)
- spring boot (5)
- storm (0)
- 软件管理 (1)
- elasticsearch (1)
- 协议 (2)
- docker (1)
- 性能 (2)
- 安全 (1)
- 代码规范 (1)
- mqtt (1)
- lombok (1)
- 车联网 (1)
- kafka (1)
最新评论
转自 http://blog.csdn.net/forezp/article/details/70148235
本文出自方志朋的博客
spring Cloud Bus 将分布式的节点和轻量的消息代理连接起来。这可以用于广播配置文件的更改或者其他的管理工作。一个关键的思想就是,消息总线可以为微服务做监控,也可以作为应用程序之间相互通讯。本文要讲述的是用AMQP实现通知微服务架构的配置文件的更改。
一、准备工作
本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置 spring-cloud-starter-bus-amqp ;这就是说我们需要装rabbitMq,点击rabbitmq下载。至于怎么使用 rabbitmq,搜索引擎下。
在配置文件中加入:
如果rabbitmq有用户名密码,输入即可。
依次启动eureka-server、confg-cserver,启动两个config-client,端口为:8881、8882。
访问http://localhost:8881/hi 或者http://localhost:8882/hi 浏览器显示:
这时我们去代码仓库将foo的值改为“foo version 4”,即改变配置文件foo的值。如果是传统的做法,可以需要重启服务,才能达到配置文件的更新。此时,我们只需要用post请求:http://localhost:8881/bus/refresh:
重新读取配置文件:
这时我们再访问http://localhost:8881/hi 或者http://localhost:8882/hi 浏览器显示:
另外,/bus/refresh接口可以指定服务,即使用”destination”参数,比如 “/bus/refresh?destination=customers:**” 即刷新服务名为customers的所有服务,不管ip。
三、分析
此时的架构图:
当Git文件更改的时候,通过pc端用post 向端口为8882的config-client发送请求/bus/refresh/;此时8882端口会发送一个消息,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。
四、其他
可以用作自定义的Message Broker,只需要spring-cloud-starter-bus-amqp, 然后再配置文件写上配置即可,同上。
Tracing Bus Events:
需要设置:spring.cloud.bus.trace.enabled=true,如果那样做的话,那么Spring Boot TraceRepository(如果存在)将显示每个服务实例发送的所有事件和所有的ack,比如:(来自官网)
本文源码下载:
[url]
https://github.com/forezp/SpringCloudLearning/tree/master/chapter8
[/url]
五、参考资料
spring_cloud_bus
本文出自方志朋的博客
spring Cloud Bus 将分布式的节点和轻量的消息代理连接起来。这可以用于广播配置文件的更改或者其他的管理工作。一个关键的思想就是,消息总线可以为微服务做监控,也可以作为应用程序之间相互通讯。本文要讲述的是用AMQP实现通知微服务架构的配置文件的更改。
一、准备工作
本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置 spring-cloud-starter-bus-amqp ;这就是说我们需要装rabbitMq,点击rabbitmq下载。至于怎么使用 rabbitmq,搜索引擎下。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.forezp</groupId> <artifactId>config-client</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>config-client</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</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-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </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> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
在配置文件中加入:
spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 # spring.rabbitmq.username= # spring.rabbitmq.password=
如果rabbitmq有用户名密码,输入即可。
依次启动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/bus/refresh:

重新读取配置文件:

这时我们再访问http://localhost:8881/hi 或者http://localhost:8882/hi 浏览器显示:
foo version 4
另外,/bus/refresh接口可以指定服务,即使用”destination”参数,比如 “/bus/refresh?destination=customers:**” 即刷新服务名为customers的所有服务,不管ip。
三、分析
此时的架构图:

当Git文件更改的时候,通过pc端用post 向端口为8882的config-client发送请求/bus/refresh/;此时8882端口会发送一个消息,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。
四、其他
可以用作自定义的Message Broker,只需要spring-cloud-starter-bus-amqp, 然后再配置文件写上配置即可,同上。
Tracing Bus Events:
需要设置:spring.cloud.bus.trace.enabled=true,如果那样做的话,那么Spring Boot TraceRepository(如果存在)将显示每个服务实例发送的所有事件和所有的ack,比如:(来自官网)
{ "timestamp": "2015-11-26T10:24:44.411+0000", "info": { "signal": "spring.cloud.bus.ack", "type": "RefreshRemoteApplicationEvent", "id": "c4d374b7-58ea-4928-a312-31984def293b", "origin": "stores:8081", "destination": "*:**" } }, { "timestamp": "2015-11-26T10:24:41.864+0000", "info": { "signal": "spring.cloud.bus.sent", "type": "RefreshRemoteApplicationEvent", "id": "c4d374b7-58ea-4928-a312-31984def293b", "origin": "customers:9000", "destination": "*:**" } }, { "timestamp": "2015-11-26T10:24:41.862+0000", "info": { "signal": "spring.cloud.bus.ack", "type": "RefreshRemoteApplicationEvent", "id": "c4d374b7-58ea-4928-a312-31984def293b", "origin": "customers:9000", "destination": "*:**" } }
本文源码下载:
[url]
https://github.com/forezp/SpringCloudLearning/tree/master/chapter8
[/url]
五、参考资料
spring_cloud_bus
发表评论
-
spring cloud Feign 配置http连接池
2018-08-21 20:07 2411Feign在默认情况下使用的是JDK原生的URLConnect ... -
HystrixCommandProperties的熔断参数配置
2017-08-03 17:21 1894下面是HystrixCommandProperties的熔断参 ... -
服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka
2017-07-25 15:34 1244这里就平时经常用到的 ... -
spring cloud config-client怎么同时读取多个文件
2017-07-21 10:29 1179spring.application.name=confi ... -
使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务
2017-06-30 15:48 1905在spring Cloud Netflix栈中 ...
相关推荐
Spring Cloud Bus正是这样一种工具,它利用轻量级的消息代理来连接分布式系统中的节点,实现了配置更改的广播功能以及服务之间的通信。本文详细介绍了Spring Cloud Bus的架构原理和使用方法。 首先,Spring Cloud ...
Spring Cloud Bus 是一个重要的组件,它在微服务架构中起到了消息总线的作用,允许服务间的通信和状态更新的广播。消息总线的概念是基于轻量级的消息代理,如 RabbitMQ 或 Kafka,它允许将消息从一个服务传递到所有...
在微服务架构中,Spring Cloud Bus 是一个非常重要的组件,它起到了消息总线的作用,能够有效地连接各个微服务节点,并且结合轻量级的消息代理,如 RabbitMQ 或 Kafka,实现跨服务的通信和同步更新。下面我们将深入...
第八课: 消息总线(Spring Cloud Bus) 第九课: 服务链路追踪(Spring Cloud Sleuth) 第十课: 高可用的服务注册中心 第十一课:docker部署spring cloud项目 第十二课: 断路器监控(Hystrix Dashboard) 第十三课: ...
在 Spring Cloud Config/Bus 中,Bus 是一个事件总线,负责传输配置事件。在 Bus 中,事件是通过 AMQP 协议传输的。Bus 事件可以是配置文件的变化、添加或删除等。 五、结论 本文对 Spring Cloud Config/Bus 的...
SpringCloud Bus 消息总线 SpringCloud Stream 消息驱动 SpringCloud Sleuth 分布式请求链路跟踪 SpringCloud Alibaba入门简介 SpringCloud Alibaba Nacos 服务注册和配置中心 SpringCloud Alibaba Sentinel ...
Spring Cloud Bus 消息总线实例代码详解 本文主要介绍了 Spring Cloud Bus 消息总线实例代码,着重于讲解 Spring Cloud Bus 在微服务架构中的应用以及与 RabbitMQ 的集成。 一、简介 在微服务架构的系统中,我们...
6. **Spring Cloud Bus**: 控制总线,用于广播事件到所有的服务实例,例如配置更新。它通常与 Spring Cloud Config 结合使用,实现在运行时的配置更新。 7. **Ribbon**: Ribbon 是一个客户端负载均衡器,它提供了...
5. **消息总线**:通过Spring Cloud Bus实现消息的广播机制,可以用于实时更新配置。 6. **API Gateway**:通过Zuul实现服务路由。 7. **分布式跟踪**:通过Sleuth和Zipkin实现请求的追踪和监控。 ### Spring Cloud...
Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具包,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...
史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本) 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本) 史上最简单的SpringCloud教程 | 第十...
7. **Spring Cloud Bus**:Bus作为一个事件、消息的总线,可以用来广播配置变化或者进行集群状态的更新。 8. **Spring Cloud Gateway**:Spring Cloud的新一代API网关,基于Spring Framework 5、Project Reactor 和...
Spring Cloud 是一个基于Spring Boot实现的云应用开发工具集,为开发人员提供了一套快速构建分布式系统中一些常见模式的工具,包括服务发现、配置管理、消息总线、负载均衡、断路器、网关等。它所依赖的基础是Spring...
7. **Spring Cloud Bus**:用于在集群中传播事件,比如更新配置信息,可以通过消息总线实时推送到各个微服务实例。 在学习SpringCloud的过程中,你需要理解这些组件的作用,以及它们如何协同工作。配合SpringCloud....
3. **总线(Bus)**:Spring Cloud Bus就是这个消息传递的通道,它将各个独立运行的微服务连接在一起,形成一个可以互相通信的网络。 **二、工作原理** 1. **配置变更**:Spring Cloud Config Server作为集中式的...
7. **Spring Cloud Bus事件总线**:Bus可以用来传递事件,例如配置更新时,通过消息总线通知各个服务实例进行刷新。 8. **Spring Cloud Sleuth链路追踪**:Sleuth提供了一种分布式追踪解决方案,它可以与Zipkin、...
7. **Spring Cloud Bus**:消息总线 Spring Cloud Bus可以将配置中心的变更广播到所有服务,实现配置的动态刷新,同时也可用于服务间的消息传递。 8. ** Sleuth + Zipkin**:分布式追踪 Sleuth是Spring Cloud的...
6. **Spring Cloud Bus**:Bus是一个事件、消息总线,常用于配置更改的广播,可以与Config结合,实现配置的实时刷新。 7. **Spring Cloud Gateway**:Spring Cloud的最新版本中,Zuul已被Gateway取代,Gateway提供...
- [springcloud(九):配置中心和消息总线(配置中心终结版)](http://www.ityouknow.com/springcloud/2017/05/26/springcloud-config-eureka-bus.html) - [springcloud(十):服务网关zuul]...
9. Spring Cloud Bus: 消息总线模块,用于传播分布式系统中的配置更新。 9.1. QuickStart: 快速开始指南。 9.2. BusEndpoints: 消息总线端点的配置。 9.3. AddressinganInstance: 如何定位并发送消息到具体的...