Springcloud config 分布式配置中心SpringCloud Bus 消息总线

12.1 config 是什么

Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持

微服务面临问题?

微服务把单一服务拆成一个一个的子服务,每个服务粒度相对较小。在系统种会出现大量的服务。由于每个服务都需要必要的配置文件。

一套集中式。 动态配置的设施。

成百上千。。。。

Springcloud config 为微服务架构种的微服务提供集中化的外部配置支持。 配置服务器为各个不同的微服务应用的所有环境提供了一个中心化的配置。

12.2 config 能干什么

​ 集中管理配置文件

​ 在不同的环境配置。 动态的配置更新。 分环境 dev test prod

​ 在运行期间动态调整配置。 动态调整tomcat 线程池

当配置文件发生了改变的时候。 服务不需要重新启动

将配置信息以rest接口进行暴漏 动态访问刷新机制

12.3 config 怎么玩

读取配置规则:

mater config-dev.yml

/{lable}/{application}-{profile}.yml 最多

/{application}-{profile}.yml

/{application}/{profile}/{lable}

label : 分支 branch

name 服务名字

profile: 环境 dev test prod

动态刷新:

  1. 以config服务端请求配置文件

    http://localhost:3344/master/config-dev.yml

server:
  port: 3344


spring:
  application:
    name: cloud-config-server #注册到eureka
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/wubojin/springcloud-config.git
          # 搜索目录
          search-paths:
            - springcloud-config
      label: master
    rabbitmq:
      port: 5672
      username: guest
      password: guest
      host: localhost

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/

#暴露监控的端点
management:
  endpoints:
    web:
      exposure:
        include: "bus-refresh"
  1. pom 引入 actruator 监控

      <dependency>
     	<groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
    
  2. 修改yml 暴露监控端口

#暴露监控的端点
management:
 endpoints:
   web:
     exposure:
       include: "*"
  1. @RefreshScope 添加注解请求端
@RefreshScope
@RestController
@Slf4j
public class ConfigController {


    @Value("${config.info}")
    private String configInfo;



    @GetMapping("configInfo")
    public String getConfig(){

        return configInfo;
    }




}
  1. 手动的刷新 post 请求cmd
    crul -X POST http://localhost:3355/actuator/refresh

弊端:

加入说 有很多微服务 都要刷新 比如说有 3355 3366 3377 3388 等等。。。

每个微服务都要手动刷新嘛

可不可以一次广播处处生效刷新

我们就像要大范围率先你。 自动刷新功能。。

十三、SpringCloud Bus 消息总线

13.1是什么

Spring Cloud Bus将分布式系统的节点与轻量级消息代理链接。这可以用于广播状态更改(例如配置更改)或其他管理指令。一个关键的想法是,Bus就像一个扩展的Spring Boot应用程序的分布式执行器,但也可以用作应用程序之间的通信渠道。当前唯一的实现是使用AMQP代理作为传输,但是相同的基本功能集(还有一些取决于传输)在其他传输的路线图上。

Springcloud bus 配合 Spring Cloud config 使用 可以实现配置的动态刷新。

Spring cloud bus 目前只支持Rabbitmq 和 Kafka 。

13.2能干什么

Spring cloud bus 能管理和传播分布式系统的消息。 就像一个执行器 广播状态 事件推送等 。也可以当作微服务 的通信通道 .

什么是总线?

在微服务架构种。 通常会使用轻量级消息代理来构建一个共用消息主题。

系统种的所有微服务实例都链接上来。 由于该主题产生的消息会被素有的实例监听和消费,所以被称为消息总线。

原理。

13.3怎么玩

  1. 利用消息总线出一个一个客户端 /bus/refresh 从而刷新
  2. 利用消息总先触发一个服务端configserver 的/bus/refresh 端点。 从而刷新客户端配置

哪一个刚加合适?

第二种。

因为第一种打破了为微服务的职责单一性。 微服务本身是一个业务模块。 它本不应该承担刷新配置的职责

打破微服务各个节点的对等性

又一定的局限性。 在网络迁移时 网络地址会发生变化。 此时如果像自动刷新就会增加更多配置。

13.3.1创建 cloud-config-client3366
13.3.2 pom.xml 引入ampq 配置文件
<!--添加消息总线RabbitMQ支持-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
13.3.3 配置yml
rabbitmq:
  port: 5672
  username: guest
  password: guest
  host: localhost
13.3.4 暴露端点
#暴露监控的端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

localhost:3344/actuator/bus-refresh

13.3.2 Spring cloud Bus 动态刷新定点通知

不想全部通知 只想通知 3355 不想通知3366

一句话

看公式

localhost:3344/actuator/bus-refresh/{destination}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值