spring cloud config bus搞起

一、什么是spring cloud 

官网的说法:Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring EnvironmentPropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。可以轻松添加替代实现,并使用Spring配置将其插入

自己总结一句话:将分布式各个系统的配置文件(生产、测试)集中管理,统一配置,最终实现动态刷新

二、spring cloud config bus 实现架构图


流程介绍:

整个架构图主要有四部分组成:git(webhook,config-repo),config-server,客户端(clientABC),线程总线(spring cloud bus)

1、webhook:git的钩子功能,当git代码又变更时可post调用你配置的webhook地址,详情可百度

2、configServer:是我们本地写的配置中心服务,webhook配置的通知地址就是这个服务的,如:http://localhost:8888/bus/refresh  注意/bus/refresh这个访问节点只有配置了mq(线程总线)之后才会有

3、config-repo:这个是我们在git上新建的项目,里边主要集中存放我们的配置文件

4、clientABC:是我们的微服务系统

5、spring cloud bus:就是我们说的线程总线,主要是git有变更时config-server发送消息给各个客户端,客户端做下一步操作

概要流程

1、将各个微服务系统(ClientABC)里边的配置文件提取到git上的config-repo项目里结构如图,建议用yml文件


2、新建config-server项目,具体代码后面给出,webhook配置通知地址

3、当config-repo配置文件代码改动时出发webhook里配置的地址(config-server),confg-server收到通知后发送消息到消息总线,各个客户端订阅消息,各个客户端按需要通过configserver拉取git上改动点到本地,实现自动刷新

三、具体实现

1、config-server引用pom

    (1)

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

    (2)、application启动主类加注解

@EnableDiscoveryClient//支持eureka
@EnableConfigServer//支持config

    (3)、新增bootstrap.yml文件

        

server:
  port: 8888
spring:
  application:
    name: spring-cloud-config-server
  cloud:
    config:
      server:
        git:
          # 配置git仓库的地址
          uri: 
          # git仓库地址下的相对地址,可以配置多个,用,分割。
          search-paths: config
          username: #用户名
          password: #密码
  rabbitmq:
    host: #mq配置
    port: 5672
    username: admin
    password: admin
eureka:
  instance:
    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${server.port}
    hostname: ${spring.cloud.client.ipAddress}
    prefer-ip-address: true
  client:
    serviceUrl:
      defaultZone: http://localhost:9999/eureka/

encrypt:
  key: key#自定义,密码加密用可删除

到此为止config-server可以启动了(前提:mq启动、eureka启动)

2、clientABC修改点:

    (1)、新增pom

        

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

    (2)、删除之前的配置文件并新增bootstarp.yml文件,并在config-repo对应的配置文件里加入mq配置

        

spring:
  cloud:
    config:
      profile: dev   #多环境配置
      name: config    #config-repo对应的文件名前缀如config-dev.yml
      label: master   #git分支名
      uri: http://localhost:8888/  #config-server地址

    到此为止客户端配置完毕,启动后看看日志有没有把git上的配置文件下载到本地

   3、检验

        尝试修改git上的配置文件,此时注意你的日志,当然如果你在内网git无法回调你的config-server那么你可以自己调用,post请求http://localhost:8888/bus/refresh看看有什么变化

也可以直接@Value("配置文件属性")看看拿到的值对不对,改没改

spring-cloud-config中文文档

猜你喜欢

转载自blog.csdn.net/qq_26418435/article/details/80914820