SpringCloud Config分布式配置中心

SpringCloud  Config

   

 

 

1、简介

微服务意味着要将单体应用中的业务拆分成一个个的子服务,因此系统中存在大量的服务,每个服务都有一个配置文件,所以一套集中式、动态的配置管理设施是必不可少的。

SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持。

Springcloud Config 分为服务端和客户端两部分:

服务端也成为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器,并为客户端提供获取配置信息,加密、解密信息访问。

客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心加载配置信息,配置服务器默认采用git来存储配置信息,方便版本控制。

 

能干嘛?

1:集中管理配置文件。

2:不同环境不同配置,动态化配置更新,分环境部署比如dev、test、prod、release。

3:运行期间动态调整配置,服务不需要重启即可利用修改后的配置。

4、将信息以rest接口的形式暴露

 

使用:

1:config-server服务端的使用:

1.1、添加maven 依赖:

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

1.2、SpringBoot启动类注解:@EnableConfigServer

1.3、修改yml:

server:
  port: 3344

spring:
  application:
    name: cloud-config-center
  cloud:
    config:
      server:
        git:
           # git仓库地址
          uri: git@github.com:dengwei-java/springCloud2020-config.git
           #搜索目录
          search-paths:
            - springCloud2020-config
        # 读取分支
      label: master

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka

 

config-dev.yml添加一个测试信息:

config:
  info: "master branch , springCloud2020-config/config-dev.yml version = 3.0"

 

测试通过Config微服务是否可以从GitHub上获取配置内容:

启动3344服务:

访问任意一个yml文件:Http://yourIp:3344/master/config-dev.yml ; 如果能获取到配置文件的内容说明成功了。

http访问形式?(上面用到的第三种方式)

 

 说明:

 label: 分支

 application: 服务名(eg: config)

 profile: 环境(dev/test/prod)

 

SpringCloud Config 客户端的使用:

maven依赖:

<!--spring-cloud-starter-config 客户端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

Application.yml: 是用户级别的资源配置项。

Bootstrap.yml: 是系统级别的优先级更高。

Bootstrap.yml属性有高优先级,默认情况下,他们不会被本地配置覆盖,要将Client模块下的application.yml文件修改成bootstrap.yml,这是很关键的,因为bootstrap.yml是比application.yml先加载,优先级高于application.yml.

所以新建bootstrap.yml文件:

 

server:
  port: 3355

spring:
  application:
    name: cloud-config-client-3355
  cloud:
  # Config 客户端的配置
    config:
      label: master  # 分支名字
      name: config # 配置文件名称
      profile: dev # 读取后缀名称 上述综合:master 分支上config-dev.yml的配置文件被读取
#      uri: http://localhost:3344  # 配置中心地址
      discovery:
        enabled: true
        service-id: cloud-config-center  #配置中心地址(微服务名字)

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka

# 暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

 

 

 

 

问题:github上更新配置文件后,config服务端加载变了,但是client端没有改变,需要重启client  3355才能解决,怎么动态刷新呢?

1:添加pom:

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

2: 暴露端点:yml中添加:

# 暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

3:接口上添加@RefreshScope

 

4: 运维人员修改git上的配置后需要主动刷新3355配置客户端:

使用postman发送post请求到:  http://localhost:3355/actuator/refresh  刷新一下即可。

 

posted @ 2020-04-12 18:32  邓维-java  阅读(211)  评论(0编辑  收藏  举报