Spring Cloud Config + Bus服务配置 本地化

使用config配置全局统一的属性配置文件
Spring Cloud Config分为Config Server和Config Client两部分,为分布式系统外部化配置提供了支持。 Spring Cloud Config非常适合Spring应用程序,也能与其他编程语言编写的应用组合使用
微服务在启动时,通过Config Client请求Config Server以获取配置内容,同时会缓存这些内容。
Config的服务特性:
1: HTTP为外部的配置提供资源的API(键值对的形式)
2:属性值加密和解密(对称加密和非对称加密)
3:通过使用@EnableConfigServer在Springboot上镶嵌的比较容易(注解的形式)
4:绑定Config并使用远程的属性源初始化spring环境
一、Config Server
创建一个子项目pom文件里加入configServer服务端的插件,再启动类的上加入注解@EnableConfgServer(开启configServer的功能注解)和@EnableAutoConfiguration两个注解
@EnableAutoConfiguration --自动载入应用程序所需的所有的bean内部实现的关键点在于
1)ImportSelector 该接口的方法的返回值都会被纳入到spring容器管理中
2)SpringFactoriesLoader 该类可以从classpath中搜索META-INF/spring.factories配置文件,并读取配置
作用:从classpath中搜索所有META-INF/spring.factories配置文件然后,将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器
只有spring.boot.enableautoconfiguration为true(默认为true)的时候,才启用自动配置 。
创建的步骤
Application.yml

spring:
  application:
    name: config-server
  profiles:
    active: native(表示本地)
  cloud:
    config:
      server:
        native:
          search-locations: D:/config(磁盘路径)

在需要配置的模块里首先引入pom

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

然后创建一个bootstrap.yml文件(作用:此文件比application.yml先扫描进行配置spring cloud内部机制)

spring:
  application:
    name: model-order(服务名称)
  cloud:
    config:
      name: client-dev(引用的对应文件的文件名)
      url: http://localhost:8888(config服务的url)
      profile: dev(可分生产,开发,测试环境)
      label: master

搭建完成后需要再配置springcloud-bus 用于广播配置文件的更改或者服务的监控管理。
一个关键的思想就是,消息总线可以为微服务做监控,也可以时间应用程序之间的相互通信,Bus可选的消息代理组件包括RabbitMQ,AMQP和Kafka等 在此我们选用RabbitMQ作为消息组件去刷新更改微服务的配置文件。
首先了解下为什么用Bus去刷新配置
如果有几十个微服务,而每一个服务又是多实例,当更改配置时,需要重新启动多个微服务实例,相当的麻烦。Bus的一个功能就让这个过程变得简单,当远程或者放在本地的配置文件更改后,只需要向某一个微服务实例发送一个post请求,通过消息组件通知其他微服务实例重新拉取配置文件,通过消息组件,通知其他微服务实例,更新配置文件。
首先在服务端和客户端引入相应的pom文件

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

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

然后在config-server的yml中添加

rabbitmq:
      host: 192.168.1.125(rabbitMQ的路径)
      post: 5672(默认接口)
      username: admin(默认guest)
      password: admin
management:
  endpoints:
    web:
      exposure:
        include: "bus-refresh"(刷新服务的监控设置)

然后在client上的yml添加如下配置

spring:
  rabbitmq:
    host: 192.168.1.125
    post: 5672
    username: admin
    password: admin
  cloud:
    bus:
      ack:
        enabled: true(bus服务)

再其接口上添加注解,只有加上了该注解,才会在不重启服务的情况下更新配置

@RefreshScope

当修改完配置后只需要访问下localhost:(configServer的端口号)/actuator/bus-refresh

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值