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

《SpringCloud篇:004Config - 服务的动态配置》

作者头像
发布2020-11-13 14:37:55
3630
发布2020-11-13 14:37:55
举报
文章被收录于专栏:后端JavaEE后端JavaEE

一、概述

  • 配置文件分散在不同的项目中,没有统一的管理,不方便维护。
  • 配置文件的安全问题。
  • 修改完配置文件,无法立即生效,需要它动态刷新。
在这里插入图片描述
在这里插入图片描述

二、搭建ConfigServer

代码语言:javascript
复制
1.将配置文件编写在Git仓库
2.通过ConfigServer拉取Git仓库中的配置信息
3.其他服务作为ConfigClient与ConfigServer进行交互,拉取相应的配置信息

配置ConfigServer的pom依赖

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

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

在启动类添加注解@EnableConfigServer

添加配置文件

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
spring:
  cloud:
    config:
      server:
        git:
          basedir: D:\basedir    # 本地仓库的地址
          username: zjw_2301211@126.com    #  远程仓库用户名
          password: z123123   #   远程仓库密码
          uri: https://gitee.com/zhengdaxian/config-resp.git       # 远程仓库地址

启动项目访问Git上面的配置信息http://localhost:port/{branch}/{application}-{profile}.yml 在ConfigServer无问题后在尝试连接Config-Client

三、搭建Config-Client

代码语言:javascript
复制
ConfigClient要通过ConfigServer交互获取到Git上的配置文件信息
在这里插入图片描述
在这里插入图片描述

创建SpringBoot项目,并配置依赖

代码语言:javascript
复制
//第一个依赖不一定对
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

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

修改为bootstrap.yml配置文件

代码语言:javascript
复制
# 指定Eureka服务地址
eureka:
  client:
    service-url:
      defaultZone: http://root:root@localhost:8761/eureka,http://root:root@localhost:8762/eureka

#指定服务的名称
spring:
  application:
    name: CUSTOMER-${version}
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG
      profile: dev

version: v1


# CONFIG -> CUSTOMER-v1-dev.yml

通过上述配置获取:http://configserver的地址/分支/服务名称/-环境.yml 运行结果

在这里插入图片描述
在这里插入图片描述

小结:后续在Git上添加配置文件时,推荐先在项目中编写,在复制过去(idea中有提示)

四、动态配置

需要广播的加依赖(configServer)

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

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

修改configServer配置文件

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
spring:
  rabbitmq:
    host: 192.168.199.109
    port: 5672
    username: test
    password: test
    virtual-host: /test

management:
  endpoints:
    web:
      exposure:
        include: "*"

其他项目(configClient)也添加依赖和修改配置,让它们也能修改yml文件

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
代码语言:javascript
复制
spring:
  rabbitmq:
    host: 192.168.199.109
    port: 5672
    username: test
    password: test
    virtual-host: /test

为controller类添加注解@RefreshScope,实现动态刷新

测试功能: 1.访问configclient中的/version路径 — v1.0.0 修改Git仓库中的配置,将v1…0.0修改为v2.0.0 手动法发送请求给ConfigServer:http://ip:port/actuator/bus-refresh,不重启项目,CONFIG在Gitee修改之后,configclient是自动拉取最新配置信息的

五、内网穿透https://natapp.cn/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、搭建ConfigServer
  • 三、搭建Config-Client
  • 四、动态配置
  • 五、内网穿透https://natapp.cn/
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档