精华内容
下载资源
问答
  • 什么是SpringCloud Bus

    2020-09-10 14:42:50
    SpringCloud Bus是将分布式的节点用轻量的消息代理连接起来,用它可以用来广播配置文件的更新和服务的直接通讯,还有用于监控,如果配置文件一更新,只需要发送一次,就可以让客户端重新去读取配置文件 步骤: 1、...

    SpringCloud Bus是将分布式的节点用轻量的消息代理连接起来,用它可以用来广播配置文件的更新和服务的直接通讯,还有用于监控,如果配置文件一更新,只需要发送一次,就可以让客户端重新去读取配置文件

    步骤:
    1、添加依赖;
    2、搭建RabbitMQ;

    展开全文
  • 什么是SpringCloudBus?如何使用SpringCloudBus实现自动更新配置功能? 】 大家好,我是IT修真院郑州分院第11期的学员何爽,一枚正直纯洁善良的后端程序员,今天给大家分享一下,修真院官网java(职业)任务10,...

    这里是修真院后端小课堂,每篇分享文从

    【什么是SpringCloudBus?如何使用SpringCloudBus实现自动更新配置功能? 】

    大家好,我是IT修真院郑州分院第11期的学员何爽,一枚正直纯洁善良的后端程序员,今天给大家分享一下,修真院官网java(职业)任务10,深度思考中的知识点——什么是SpringCloudBus?如何使用SpringCloudBus实现自动更新配置功能?

    1.背景介绍

    一、简介

    在微服务架构的系统中,我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统中所有微服务实例都连接上来,

    由于该主题中产生的消息会被所有实例监听和消费,所以我们称它为消息总线。Spring Cloud Bus就像一个分布式执行器,

    用于扩展的Spring Boot应用程序,但也可以用作应用程序之间的通信通道。那么这里就涉及到了消息代理,目前流行的消息代理中间件有不少,

    Spring Cloud Bus支持RabbitMQ和Kafka,本文我们主要来看看RabbitMQ的基本使用。

    二、消息代理

    消息代理(Message Broker)是一种消息验证、传输、路由的架构模式。它在应用程序之间起到通信调度并最小化应用之间的依赖的作用,

    使得应用程序可以高效地解耦通信过程。消息代理是一个中间件产品,它的核心是一个消息的路由程序,用来实现接收和分发消息,

    并根据设定好的消息处理流来转发给正确的应用。

    它包括独立的通信和消息传递协议,能够实现组织内部和组织间的网络通信

    设计代理的目的就是为了能够从应用程序中传入消息,并执行一些特别的操作,下面这些是在企业应用中,我们经常需要使用消息代理的场景:

    将消息路由到一个或多个目的地。

    消息转化为其他的表现方式。

    执行消息的聚集、消息的分解,并将结果发送到它们的目的地,然后重新组合响应返回给消息用户。

    调用Web服务来检索数据。

    响应事件或错误。

    使用发布-订阅模式来提供内容或基千主题的消息路由。

    2.知识剖析

    RabbitMQ的基础知识和使用方法

    1、简介

    MQ(Message Queue)消息队列,用于应用系统解耦、消息异步分发。 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。其优点如下:

          1)Reliability-可靠性高。
    

    2)Flexible Routing-路由灵活。

    3)Clustering-支持集群。

    4)Federation-支持互联。

    5)Tracing-便于追踪。

    2、安装

    RabbitMQ是用Erlang语言编写的,因此安装RabbitMQ之前我们要先安装Erlang环境,首先去http://www.erlang.org/downloads地址下载erlang,

    下载到的是一个exe文件,直接双击安装即可,然后去http://www.rabbitmq.com/downl…地址下载RabbitMQ,下载成功之后,也是一个exe,双击安装即可

    RabbitMQ安装成功之后,默认会创建系统服务,将和Windows系统一起启动。所以安装成功之后,打开系统服务,我们如果看到如下结果表示安装成功了:

    安装成功之后,我们可以使用web来管理我们的RabbitMQ,管理之前需要我们先开启web管理功能,开启方式:进入到安装目录的sbin目录下,

    然后执行 .rabbitmq-plugins enable rabbitmq_management命令,如下:

    执行成功之后,打开浏览器,输入http://localhost:15672进入到web管理页面,需要先登录,默认用户名密码都是guest,页面如下:

    进入里面之后我们可以新建一个用户,用户的级别分别为:management、none、policymaker、monitoring和administrator,不同取值所对应的权限区别如下:

    none:不能访问 management plugin

    management:用户可以通过AMQP做的任何事外加:

    1.列出自己可以通过AMQP登入的virtual hosts

    2.查看自己的virtual hosts中的queues, exchanges 和 bindings

    3.查看和关闭自己的channels 和 connections

    4.查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动

    policymaker:management可以做的任何事外加:查看、创建和删除自己的virtual hosts所属的policies和parameters

    monitoring:management可以做的任何事外加:

    1.列出所有virtual hosts,包括他们不能登录的virtual hosts

    2.查看其他用户的connections和channels

    3.查看节点级别的数据如clustering和memory使用情况

    4.查看真正的关于所有virtual hosts的全局的统计信息

    administrator:policymaker和monitoring可以做的任何事外加:

    1.创建和删除virtual hosts

    2.查看、创建和删除users

    3.查看创建和删除permissions

    4.关闭其他用户的connections

    这里我创建一个root用户,创建好之后,给用户设置virtual hosts,否则一会使用这个用户的时候会报错。设置如下:

    OK,配置完成后,接下来我们来看一个Spring Boot和RabbitMQ整合的案例,来对RabbitMQ做进一步的了解,具体的见编码实战。

    3.常见问题

    什么时候用cloud bus

    4.解决方案

    spring cloud bus在整个后端服务中起到联通的作用,联通后端的多台服务器。我们为什么需要他做联通呢?

    后端服务器一般都做了集群化,很多台服务器,而且在大促活动期经常发生服务的扩容、缩容、上线、下线。这样,后端服务器的数量、IP就会变来变去,如果我们想进行一些线上的管理和维护工作,就需要维护服务器的IP。

    比如我们需要更新配置、比如我们需要同时失效所有服务器上的某个缓存,都需要向所有的相关服务器发送命令,也就是调用一个接口。

    你可能会说,我们一般会采用zookeeper的方式,统一存储服务器的ip地址,需要的时候,向对应服务器发送命令。这是一个方案,但是他的解耦性、灵活性、实时性相比消息总线都差那么一点。

    总的来说,就是在我们需要把一个操作散发到所有后端相关服务器的时候,就可以选择使用cloud bus了。

    5.编码实战

    6.扩展思考

    利用Spring Cloud Bus做配置更新:

    这时Spring Cloud Bus做配置更新步骤如下:

    1、提交代码触发post请求给bus/refresh

    2、server端接收到请求并发送给Spring Cloud Bus

    3、Spring Cloud bus接到消息并通知给其它客户端

    4、其它客户端接收到通知,请求Server端获取最新配置

    5、全部客户端均获取到最新的配置

    具体的实现过程和步骤可参考下面的网址:

    https://www.cnblogs.com/ityouknow/p/6931958.html

    7.参考文献

    https://www.cnblogs.com/ityouknow/p/6931958.html

    https://www.jb51.net/article/137875.htm

    https://segmentfault.com/a/1190000011827203

    8.更多讨论

    Q1:提问人wyq:

    Eureka开启自我保护的提示

    A1:回答人(h):

    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

    Q2:提问人:zhh

    Eureka注册服务慢的问题如何解决?

    A2:回答人(h):

    eureka.instance.leaseRenewalIntervalInSeconds

    参考文档:

    http://cloud.spring.io/spring-cloud-static/Camden.SR1/#_why_is_it_so_slow_to_register_a_service

    Q3:提问人:zyq

    如何解决Eureka Server不踢出已关停的节点的问题?

    A3:回答人(h):

    server端:

    eureka.server.enable-self-preservation (设为false,关闭自我保护主要)

    eureka.server.eviction-interval-timer-in-ms 清理间隔(单位毫秒,默认是60*1000)

    client端:

    eureka.client.healthcheck.enabled = true 开启健康检查(需要spring-boot-starter-actuator依赖)

    eureka.instance.lease-renewal-interval-in-seconds =10 租期更新时间间隔(默认30秒)

    eureka.instance.lease-expiration-duration-in-seconds =30 租期到期时间(默认90秒)

    9.鸣谢

    此教程是自我查找资料的基础上完善而成。

    10.结束语

    今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

    展开全文
  • 考虑以下情况:我们有多个应用程序使用 Spring Cloud Config 读取属性,而Spring Cloud Config 从 GIT 读取这些属性。下面的例子中多个员工生产者模块从 Employee Config Module 获取 Eureka 注册的财产。 如果假设...

    考虑以下情况:我们有多个应用程序使用 Spring Cloud Config 读取属性,而Spring Cloud Config 从 GIT 读取这些属性。下面的例子中多个员工生产者模块从 Employee Config Module 获取 Eureka 注册的财产。
    在这里插入图片描述
    如果假设 GIT 中的 Eureka 注册属性更改为指向另一台 Eureka 服务器,会发生什么情况。在这种情况下,我们将不得不重新启动服务以获取更新的属性。还有另一种使用执行器端点/刷新的方式。但是我们将不得不为每个模块单独调用这个 url。例如,如果 Employee Producer1 部署在端口 8080 上,则调用 http:// localhost:8080 / refresh。同样对于 Employee Producer2 http://localhost:8081 / refresh 等等。这又很麻烦。这就是 Spring Cloud Bus 发挥作用的地方。
    在这里插入图片描述
    Spring Cloud Bus 提供了跨多个实例刷新配置的功能。因此,在上面的示例中,如果我们刷新 Employee Producer1,则会自动刷新所有其他必需的模块。如果我们有多个微服务启动并运行,这特别有用。这是通过将所有微服务连接到单个消息代理来实现的。无论何时刷新实例,此事件都会订阅到侦听此代理的所有微服务,并且它们也会刷新。可以通过使用端点/总线/刷新来实现对任何单个实例的刷新。

    在这里插入图片描述

    展开全文
  • 主要介绍了SpringCloud之消息总线Spring Cloud Bus实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 一)什么是SpringCloudBus Spring云总线使用轻量级消息代理链接分布式系统的节点。然后可以用它广播状态更改(例如配置更改)或其他管理指令。目前唯一的实现是使用AMQP代理作为传输,但是相同的基本功能集(以及更多...

    一)什么是SpringCloudBus

    Spring云总线使用轻量级消息代理链接分布式系统的节点。然后可以用它广播状态更改(例如配置更改)或其他管理指令。目前唯一的实现是使用AMQP代理作为传输,但是相同的基本功能集(以及更多依赖于传输的功能)取决于其他传输的路线图。
    SpringCloudBus集成了市面上大部分的消息代理
    在这里插入图片描述

    主要解决的问题就是数据同步、数据的变更

    二)使用Bus配置文件的更新

    我们在使用Config成功进行了在不重启客户端的情况下刷新配置信息,但是这种刷新的方式有个致命的缺点,就是不支持集群,假如此时的客户端是个集群的时候,在进行访问服务刷新的时候就是极其繁琐的事情,需要对每个服务都要进行配置文件的刷新。
    而上面介绍到Bus是一个的消息总线的代理,我们可以利用Bus的广播机制进行配置文件广播通知

    下面是两张关于Bus实现广播通知的模型图。
    1.第一种方式
    这张图的执行实现流程是,当程序员对Server-A请求刷新的时候,先去GIT仓库获取最新的配置信息,然后获取到信息之后,将配置信息更新的消息通知给RibbitMQ,由RibbitMQ将请求的消息通知给集群中的其他服务,去GIT仓库获取最新的信息。

    在这里插入图片描述

    2.第二种方式
    下面的这个的图的流程,如果Git仓库的信息发生了改变,就将刷新的通知,告知给RibbitMQ,让RibbitMQ的信息发送个给服务器集群中内的信息,告知他们的去GIT获取最新的配置文件。
    相对于第一种,第二种的逻辑思维更加清晰科学。

    在这里插入图片描述

    三)使用客户端刷新的方式实现配置文件的同步

    1.创建项目

    在这里插入图片描述

    2.pom文件

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.8.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.sxt</groupId>
        <artifactId>8-springcloud-ribbit</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>8-springcloud-ribbit</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
            <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
        </properties>
    
        <dependencies>
            <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-config</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!--此坐标是整bus消息总线和RabbitMQ的坐标是必须的包-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bus-amqp</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</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>
    </project>
    

    3.修改全局配置文件信息,

    1.添加RabbitMQ主机地址
    2.添加连接的Git信息

    server.port=7070
    spring.application.name=8-springcloud-ribbit
    eureka.client.service-url.defaultZone=http://peer1:8081/eureka/,http://peer2:8082/eureka/,http://peer3:8083/eureka/
    #配置数据连接RabbitMQ的信息
    spring.rabbitmq.host=192.168.177.140
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=oldlu
    spring.rabbitmq.password=123456
    spring.rabbitmq.virtual-host=/
    #debug=true
    #配置连接注册中心
    spring.cloud.config.discovery.enabled=true
    #对应 eureka 中的配置中心 serviceId,默认是 configserver
    spring.cloud.config.discovery.serviceId=3-springCloud-config-server
    #指定环境
    spring.cloud.config.profile=dev
    #git 标签
    spring.cloud.config.label=master
    #设置刷新请求
    spring.aop.proxy-target-class=false
    #开放/actuator下的全部端口
    management.endpoints.web.exposure.include=*
    

    4.测试信息

    编写控制器

    
    /**
     * @project_name:ideaProject
     * @date:2019/9/10:09:12
     * @author:shinelon
     * @Describe:
     */
    @RestController
    @RefreshScope
    public class HelloController
    {
        @Value("${o-book}")
        private String msg;
    
        @GetMapping(value = "/hello")
        public String hello(){
            return this.msg;
        }
    }
    

    测试值的获取,能够获取到值

    在这里插入图片描述

    在配置文件如果和开放了Autuator下的端口的话会在此处有显示,如果没有发送的刷新请求是不会被人可的。
    在这里插入图片描述

    修改值

    在这里插入图片描述

    刷新发送请求

    public static void main(String[] args) {
        String url ="http://localhost:7070/actuator/bus-refresh";
        String info = HttpClientUtil.doPost(url);
        System.out.println(info);
    }
    

    完成使用BUS消息总线进行配置文件的刷新。

    在这里插入图片描述

    总结:
    1.注意导入的amqp的坐标是BUS下的
    2.注意谁在的actuator需要开放下面的消息端口
    3.连接的RabbitMQ
    4.BUS可以实现对集群的消息通知

    缺点:
    1.和客户端的耦合度高
    2.逻辑繁琐,流程走的很多
    以上是基于Client刷新的配置信息

    展开全文
  • SpringCloud之八 消息总线SpringCloudBus.pdf,微服务中消息总线的使用处理
  • Spring Cloud Bus-用法和意义

    千次阅读 2020-07-13 11:17:17
    Spring Cloud Bus用轻量级消息代理连接分布式系统的节点。然后可以使用此代理广播状态更改(如配置更改)或其他管理指令。一个关键的想法是,总线就像一个扩展的Spring引导应用程序的分布式执行器。不过,它也可以用作...
  • Spring Cloud Bus的使用

    千次阅读 2019-08-16 19:37:44
    微服务项目中,使用到Spring Cloud Config来托管各模块的配置文件后,会有一个尴尬的问题 : Config服务端并不能动态的感知Git上... 我们可以使用 Spring Cloud Bus来完成 。那么对项目改造如下: 1) 修改Config...
  • spring cloud bus 1、广播,例如:配置统一管理 2、监控 spring cloud stream spring cloud stream介绍: http://www.jianshu.com/p/fb7d11c7f798 Spring Cloud Stream is a framework for building message...
  • springcloudConfig 手动刷新的问题: 假如有多个客户端3344、3366、3377...SpringCloud Bus 配合 SpringCloud Config可以实现配置的动态刷新 1、SpringCloud Bus 消息总线 1.1 基本概念 Bus支持两种消息代理:Rabbit...
  • springcloud bus rabbitmq 分布式队列 http://knight-black-bob.iteye.com/blog/2356839
  • 所以,基于消息方式的Spring Cloud Bus就有用了。  我们再看一下,之前的配置服务器和配置客户端通信模式为:  现在由于配置客户端(1,2...n)非常多,则基于消息中线的方式通信模型为:  项目...
  • 1. spring cloud bus介绍 Spring cloud bus使用轻量级消息代理将分布式系统的节点连接起来,可以使用此代理,广播状态更改(例如配置更改)或其他管理指令。它可以用作应用程序之间的通信通道。该项目提供了两种消息...
  • Spring Cloud Bus配合Spring Cloud Config使用可以实现配置的动态刷新 spring cloud bus能管理和传播分布式系统间的消息,就像分布式执行器,可用于广播状态更改、时间推送等,也可以当做微服务间的通信通道 spring ...
  • spring cloud bus介绍与源码分析

    千次阅读 2019-04-18 17:21:12
    根据官方文档,spring cloud bus为分布式的轻量级消息代理服务,可以用来状态改变的时候进行广播,比如配置值发生变换,目前支持AMQP协议的代理服务。也就是说目前spring cloud bus只支持rabbitmq 以及kafkamq,...
  • spring cloud bus - 自定义事件 基于 cloud bus 3.x 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> &...
  •  前面提到spring cloud config 做服务配置中心(https://blog.csdn.net/lileLife/article/details/84871773),当远程git提交代码时候,客户端需要使用RefreshScope刷新获取最新配置,和在git中使用webhock来通知...
  • http://www.ityouknow.com/springcloud/2017/05/26/springcloud-config-eureka-bus.html   demo代码地址: https://download.csdn.net/download/qq_33333654/12014918 Spring cloud bus通过轻量消息代理...
  • Spring Cloud Bus 是用来将分布式系统的节点与轻量级消息系统链接起来的框架,整合了java的事件处理机制和消息中间件功能。 目前支持RabbitMQ和Kafka两种消息代理。 能管理和传播分布式系统间的消息,就像是一个...
  • Spring Cloud Bus整合RabbitMQ

    万次阅读 2017-11-16 10:16:30
    本文我们来看看Spring Cloud Bus和RabbitMQ的整合,看看如何更简单的实现配置刷新。 本文是Spring Cloud系列的第二十七篇文章,了解前二十六篇文章内容有助于更好的理解本文: 1.使用Spring Cloud搭建服务注册中心 ...
  • https://cloud.spring.io/spring-cloud-bus/2.2.x/reference/html/ https://www.springcloud.cc/spring-cloud-bus.html
  • 干货|Spring Cloud Bus 消息总线介绍

    万次阅读 2019-04-15 12:07:08
    继上一篇干货|Spring Cloud Stream 体系及原理介绍之后,本期我们来了解下 Spring Cloud 体系中的另外一个组件 Spring Cloud Bus (建议先熟悉 Spring Cloud Stream,不然无法理解 Spring Cloud Bus 内部的代码)。...
  • Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播状态更改(例如配置中心配置更改)或其他管理指令,本文将对其用法进行详细...
  • 转自:... Spring Cloud构建微服务架构(七)消息总线(续:Kafka):http://blog.didispace.com/springcloud7-2/ spring cloud bus整合kafka问题:https://bbs.csdn.net/topics/3921...
  • spring cloud bus 配置不能同步刷新

    千次阅读 2019-03-27 14:13:57
    在用spring cloud config做动态刷新,用spring cloud bus +kafka 做总线, config 配置服务项目 config-client 同步配置项目 问题: 修改配置,然后在 config 主机调用接口...
  • SpringCloud Bus消息总线,整合Kafka

    千次阅读 2018-12-20 19:27:24
    上一篇我们讲到,我们如果要去更新所有微服务的配置,在不重启的情况下去更新配置,只能依靠spring cloud config了,但是,是我们要一个服务一个服务的发送post请求, 我们能受的了吗?这比之前的没配置中心好多了...
  •  为了解决配置中心更新的问题,我们使用Spring Cloud Bus来解决。 二、环境准备  需要下载erlang,rabbitmq,启动rabbitmq服务。 三、在Config Client中增加一个依赖包spring-cloud-start-bu-amqp org.spring...
  • spring cloud bus将分布式节点用轻量级消息连接起来,他可以用于服务间通讯,例如:配置文件的更改。可以用kafka、rabbitmq等 代码: 基于springboot2.0首先基于上一篇的代码(搭建eureka、conf...
  • <groupId>com.springcloudbus</groupId> <artifactId>bus-demo <version>0.0.1-SNAPSHOT <name>bus-demo <description>Demo project for Spring Boot <java.version>1.8 <spring-cloud.version>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,496
精华内容 7,398
关键字:

什么是springcloudbus

spring 订阅