前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《SpringCloud篇:04.2Config - 动态配置概述》

《SpringCloud篇:04.2Config - 动态配置概述》

作者头像
发布2020-11-13 10:16:06
3860
发布2020-11-13 10:16:06
举报
文章被收录于专栏:后端JavaEE后端JavaEE后端JavaEE

一、概念

  • 为什么学习Config
    • 分布式系统中,项目比较多,配置文件没有统一管理的方式
    • 配置文件分散在不同项目中,修改起来比较麻烦
    • 配置文件存在安全性问题
    • 配置文件修改后的动态刷新,无法实现的
  • Config介绍:
    • 将配置文件编写在Git仓库中。
    • 通过ConfigServer拉取Git仓库中的配置信息。
    • 其他服务作为ConfigClient与ConfigServer进行交互,拉取到相应的配置信息

二、搭建ConfigServer

  • 准备Git仓库,并编写配置文件,命名规则:服务名-环境名.yml
  • 创建SpringBoot项目
  • 导入依赖:spring-cloud-config-server,spring-cloud-starter-netflix-eureka- client,spring-boot-starter-web
<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>
  • 启动类添加注解:@EnableConfigServer
@SpringBootApplication
@EnableConfigServer
public class ConfigServerStarterApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerStarterApp.class,args);
    }
}
  • 编写配置文件:
# 其他配置略…………
spring:
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/qianfeng_laozheng/configserver.git  #指定Git仓库地址
在这里插入图片描述
在这里插入图片描述

三、搭建ConfigClient

  • ConfigClient要通过与ConfigServer交互获取到Git上的配置文件信息
  • 创建SpringBoot项目
  • 导入依赖:spring-cloud-starter-config,spring-cloud-starter-netflix-eureka-client,spring-boot-starter-web
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
  • 创建配置文件,命名为:bootstrap.yml
# eureka在哪
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka


# configserver在哪
spring:
  application:
    name: configclient
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIGSERVER
      label: master
      profile: dev



# 加载ConfigServer中的配置,会通过  /${label}/${spring.application.name}-${profile}.yml
#                      http://localhost:8888/master/configclient-dev.yml
  • 编写bootstrap.yml文件:
    • EurekaServer所在的地址
    • 开启ConfigServer并且指定ConfigServer在Eureka中的名称
    • 指定当前服务名称
    • 指定使用的配置文件的分支以及环境
    • 通过上述配置,可以获取如下内容:http://configserver的地址/分支/服务名称-环境.yml
  • 后续在git上添加配置文件时,推荐先在项目中编写,再复制过去。。。。。。。

四、实现手动配置刷新(可以配置)

  • Gitlab中的配置文件被修改之后,手动的发送一个请求给任意一个有bus组件的服务。
  • 将ConfigServer作为通知的服务:
    • 导入依赖:spring-cloud-starter-bus-amqp,spring-boot-starter-actuator
    • 编写配置文件:
      • 连接上RabbitMQ服务的ip,port,username………… 配置actuator的配置:
management:
  endpoints:
    web:
      exposure:
        include: "*"
  • 启动ConfigServer,再RabbitMQ的监控界面中,查看到SpringCloudBus的队列被 创建了

修改ConfigClient服务:

  • 导入依赖:spring-cloud-starter-bus-amqp
  • 编写配置文件:连接上RabbitMQ服务的ip,port,username…………(放在git上)
  • 创建Controller类,并且再类上添加@RefreshScope:
@RestController
@RefreshScope
public class TestController {
    @Value("${version}")
    public String version;

    @GetMapping("/version")
    public String version(){
        return version;
    }
}

测试功能:

  • 访问configclient中的/version路径 — v1.0.0
  • 修改Git仓库中的配置,将v1.0.0修改为v2.0.0
  • 手动发送请求给ConfigServer:http://configserver路径/actuator/bus-refresh,发送POST请求
  • 再次访问configclient中的/version路径 — v2.0.0

五、实现自动刷新配置(可以配置)

  • 让Git远程仓库可以通过ip和port找到你当前ConfigServer所在的位置
    • 下载并安装natapp软件
    • 打开:http://natapp.cn
    • 注册账号,登录,购买免费的隧道,设置当前隧道映射的端口地址
    • 下载natapp程序,并复制一份config.ini,并添加authtoken的隧道密钥
    • 双击运行natapp.exe文件
  • 再Git仓库中配置WebHooks
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概念
  • 二、搭建ConfigServer
  • 三、搭建ConfigClient
  • 四、实现手动配置刷新(可以配置)
  • 五、实现自动刷新配置(可以配置)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档