zoukankan      html  css  js  c++  java
  • Spring Cloud:Bus基础知识

    背景

    Bus具有分布式刷新配置功能。
    Spring Cloud Bus配合Sping Cloud Config使用可以实现配置的动态刷新。
    Bus支持两种RabbitMQ和Kafka。
    Spring Cloud Bus能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改,时间推送等,也可以当作微服务间的通信通道。
    什么是总线?在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有的微服务实例都连接上来,由于该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线。在总线的各个实例,都可以方便地广播一些需要让其他连接在该主题上地实例都知道的消息。
    基本原理:ConfigClient实例都监听MQ中同一个topic(默认是springCloudBus)。当一个服务刷新数据的时候,他会把这个信息放入到Topic中,这样其他监听同一Topic的服务就能得到通知,然后去更新自身配置。
    Bus的两种设计思想:
    第一种:Bus通知Config客户端

    第二种:Bus通知Config服务端

    第二种显然更加适合。

    Bus动态刷新全局广播配置实现

    安装RabbitMQ,这里不再赘述。
    服务端、客户端pom增加新的依赖

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

    服务端yml配置rabbitmq,暴露bus刷新配置的端点

    spring:
      rabbitmq:
        host: 192.168.10.132
        port: 5672
        username: guest
        password: guest 
    #暴露bus刷新配置的端点
    management:
      endpoints:
        web:
          exposure:
            include: 'bus-refresh'
    ``
    客户端yml配置
    ```yml
    spring:
      rabbitmq:
        host: 192.168.10.132
        port: 5672
        username: guest
        password: guest
    management:
      endpoints:
        web:
          exposure:
            include: "*"
    

    配置完成后,先后启动config服务端和客户端,然后修改git配置,然后执行如下命令:

    curl -X POST "http://localhost:3344/actuator/bus-refresh"
    

    现在只需要手动刷新config服务端,然后config客户端的配置就都刷新了。
    一次修改,广播通知,处处生效。

    Bus动态刷新定点通知

    当我只想指定通知某一个Config客户端,其他的客户端我不想通知它们。
    公式:

    http://localhost:配置中心端口号/actuator/bus-refresh/{destination}
    

    现在/bus/refresh请求不再发送到具体服务实例上,而是发给config server并通过destination参数指定需要更新配置的服务或实例。
    例如,我只想通知3355

    curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"
    

    总结

  • 相关阅读:
    如何构建微服务架构
    JVM内幕:Java虚拟机详解
    JVM 调优系列之图解垃圾回收
    干货:JVM 堆内存和非堆内存
    JavaWeb项目架构之NFS文件服务器
    SSH框架之-hibernate 三种状态的转换
    随笔聊架构
    如果不从事编程,我可以做什么?
    JAVA几种缓存技术介绍说明
    Java反射机制应用实践
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/13624367.html
Copyright © 2011-2022 走看看