zoukankan      html  css  js  c++  java
  • springCloud Config分布式配置中心

    springCloud  Config

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

    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  刷新一下即可。

  • 相关阅读:
    js 进阶笔记
    Move Zeroes
    笔记
    前端笔记
    PAI-AutoLearning 图像分类使用教程
    Redis Key过期通知
    Ubuntu 安装配置 JDK+Tomcat+Nginx
    Linux常用指令总结
    使用Openssl创建证书
    Python 操作Excel
  • 原文地址:https://www.cnblogs.com/dw3306/p/12686816.html
Copyright © 2011-2022 走看看