Config分布式配置中心

Config分布式配置中心

Config一般配合bus消息总线一块使用

一、Config介绍:

Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护。

好处:

  • 集中管理配置文件
  • 不同环境不同配置,动态化的配置更新
  • 配置信息改变时,不需要重启即可更新配置信息到服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7429CAzW-1629920086935)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210826015312034.png)]

这个外部配置文件可以是在本地磁盘中,也可以是在云端!

二、Config入门:

config-server模块的搭建:

步骤:

1.使用gitee创建远程仓库,上传配置文件:

在gitee上创建一个仓库,用来存储配置文件的,在本地也建一个目录,里面创建一个config-dev.yml的配置文件,提交同步一下。

gitee地址:https://gitee.com/tianyinetwork/config-tianyi.git

2.搭建 config server 模块

4.编写配置,设置 gitee 远程仓库

  • pom.xml文件中添加依赖
<!-- config-server -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

3.导入 config-server 依赖

  • application.yml

    server:
      port: 9527
      #config的默认端口是8888
    spring:
      application:
        name: config-server
    #  Spring Cloud Config
      cloud:
        config:
          server:
    #        git  的 远程仓库地址
            git:
              uri:  https://gitee.com/tianyinetwork/config-tianyi.git
          label:  master  # 分支配置
    
    
  • 启动类

    @SpringBootApplication
    @EnableConfigServer // 启用config server功能
    public class ConfigServerApp {
    
        public static void main(String[] args) {
            SpringApplication.run(ConfigServerApp.class,args);
        }
    }
    

5.测试访问远程配置文件

访问gitee上的配置文件,访问地址:localhost:9527/master/config-dev.yml

Config-Client服务模块:

1.导入 starter-config 依赖

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

2.配置config server 地址,读取配置文件名称等信息

创建一个bootstrap.yml

# 配置config-server地址
# 配置获得配置文件的名称等信息
spring:
  cloud:
    config:
      # 配置config-server地址
      uri: http://localhost:9527
      # 配置获得配置文件的名称等信息
      name: config # 文件名
      profile: dev # profile指定,  config-dev.yml
      label: master # 分支

注意:复制粘贴的时候,缩进可能会出问题,一定要检查,如果出错,会造成@Value读取不到值,直接导致服务启动不了。

3.获取配置值

@Value("${configName}")
private String configName;

4.启动测试

Config客户端刷新配置:

1.在 config 客户端引入 actuator 依赖

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

2.获取配置信息类上,添加 @RefreshScope 注解(哪里读取了值,哪里就需要刷新,就在类上添加这个注解)

@RefreshScope

3.添加配置(在bootstrap.yml文件中)

# 配置config-server地址
# 配置获得配置文件的名称等信息
spring:
  cloud:
    config:
      # 配置config-server地址
      uri: http://localhost:9527
      # 配置获得配置文件的名称等信息
      name: config # 文件名
      profile: dev # profile指定,  config-dev.yml
      label: master # 分支
management:
  endpoints:
    web:
      exposure:
        include:  '*' #这样是暴露所有,这样不太安全

management.endpoints.web.exposure.include: refresh

此时,还不能够完成刷新,访问localhost:9527/master/config-dev.yml能够刷新

但访问:localhost:8001/goods/findOne/2就不能够刷新

4.使用curl工具发送post请求,这样就能够让单个服务刷新了,这样还是不太方便,实际应用中我们的服务是很多的,不可能一个一个的刷新,所有后面会有bus消息总线的联合使用

curl -X POST http://localhost:8001/actuator/refresh

三、Config继承Eurek:

(1)、先要让config-server模块注册到Eureka配置中心
  1. Eureka-Client依赖

    <!-- eureka-client -->
    <dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
  2. 启动类上最好添加上注解:@EnableEurekaClient

  3. application.yml配置文件中添加

    server:
      port: 9527
      #config的默认端口是8888
    spring:
      application:
        name: config-server
    #  Spring Cloud Config
      cloud:
        config:
          server:
    #        git  的 远程仓库地址
            git:
              uri:  https://gitee.com/tianyinetwork/config-tianyi.git
          label:  master  # 分支配置
    
    #将自己注册到Eureka中
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka
    
  4. 访问eureka的页面:

http://localhost:8761/

查看是否有对应的服务

(2)、config-client端配置:(获取配置信息的客户端)

修改bootstrap.yml文件:(关键在于注释掉原本的uri,配置上discovery)

# 配置config-server地址
# 配置获得配置文件的名称等信息
spring:
  cloud:
    config:
      # 配置config-server地址
#      uri: http://localhost:9527
      # 配置获得配置文件的名称等信息
      name: config # 文件名
      profile: dev # profile指定,  config-dev.yml
      label: master # 分支
#      从注册中心寻找config-server地址
      discovery:
        enabled: true
        service-id: CONFIG-SERVER

management:
  endpoints:
    web:
      exposure:
        include:  '*' #这样是暴露所有,这样不太安全

g-dev.yml
label: master # 分支

从注册中心寻找config-server地址

  discovery:
    enabled: true
    service-id: CONFIG-SERVER

management:
endpoints:
web:
exposure:
include: ‘*’ #这样是暴露所有,这样不太安全


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值