• SpringCloud Config 分布式配置管理


    配置中心用于统⼀管理配置, 快速切换各个环境的配置。

    常用的配置中心

    Config是一个分布式的配置管理中心,由config server、config client2部分组成,每个要从config server是获取配置的服务节点都是config client。


    使用git仓库存储配置

    config默认使⽤git仓库来存储配置,可以使用公司自己搭建的git服务器,也可以使⽤github、码云上的私人仓库。

    不推荐使用github上的仓库来存储配置,因为在国内使用github访问速度很慢,个人开发者建议使用码云。

    新建私人仓库,名称比如config-mall,不同环境的配置有2种方式

    (1)文件名指定

    配置文件都放在master分支下,比如用户服务的配置:user-service-dev.yml    user-service-test   user-service-prod.yml

    dev是开发环境,test是测试环境,prod是生产环境

    (2)分支指定(推荐)

    新建分支dev、test

    master下放生产环境的配置,dev下放开发环境的配置,test下放测试环境的配置

    文件名都是user-service.yml,不需要在文件名中指名环境

    使用yml、properties文件都可以

    所有eureka client的配置都可以放在git仓库中,比如网关、消费者、提供者,因为要先从eureka server获取config server节点列表,所以要是eureka client


    config server

    要单独写一个服务作为config server

    (1)新建子模块config-server作为服务,创建时只需勾选Spring Cloud Config -> Config Server,Spring Cloud Discovery -> Eureka Discovery Client

    也可以手动加依赖:

       <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>

    如果只有一台config server,挂了系统就不可用,config server肯定要集群,要作为一个服务注册到eureka server上,各服务节点从eureka server上获取config server的节点列表。

    (2)引导类上加 @EnableConfigServer、@EnableEurekaClient

    @EnableEurekaClient可缺省,因为依赖中有eureka client的依赖时会自动加@EnableEurekaClient

    (3)配置文件

    server:
      port: 9100
    
    spring:
      application:
        #服务名称
        name: config-server
      cloud:
        config:
          server:
            git:
              #git仓库地址
              uri: https://gitee.com/chenhongyong/config-mall.git
              #git服务器的账户、密码,我使用的是码云,码云的账号、密码
              username: xxxxxxxxxx
              password: xxxxxxxxx
              #超时时间,单位s,默认5
              timeout: 5
              #默认分⽀,默认master。如果config client未指定使用的git仓库分支,默认使用此处配置的默认分支
              default-label: master
    
    eureka:
      client:
        #注册中心地址
        serviceUrl:
          defaultZone: http://127.0.0.1:8761/eureka/

    eureka的配置、git仓库配置

    启动config server,地址栏输入 127.0.0.1:9100/master/user-service.yml,能看到配置内容说明config server搭建成功。

    地址的写法很多:

    • port后面是分支名,缺省时默认为master   127.0.0.1:9100/user-service.yml
    • 文件后缀使用yml、properties、json均可,会自动转化

    config client

    把eureka client都作为config client,网关、消费者、提供者,只要是eureka server之外的服务都可以是config client

    (1)创建时勾选Spring Cloud Config -> Config Client

    也可以手动添加依赖:

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

    这个依赖是勾选Config Client自动添加的,里面包含了config client、jackson等依赖,可以只添加config client的:

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

    (2)配置文件

    spring:
      application:
        #服务名称
        name: user-service
      cloud:
        config:
          discovery:
            #使用配置中心,默认false
            enabled: true
            #配置中心的服务名
            service-id: config-server
          #指定环境,默认使用master分支
          #profile: dev
          #使用label指定分支
          label: dev
    
    eureka:
      client:
        #注册中心地址
        serviceUrl:
          defaultZone: http://127.0.0.1:8761/eureka/

    配置文件中只需保留erueka、config的配置,其它配置都放到git仓库中

    环境有2种指定方式,对应git仓库2种配置方式:

    • 如果git仓库使用文件名区分,则使用profile指定

    比如服务名是user-service,profile是dev,那就使用分支(默认master)下的user-service-dev.yml

    • 如果git仓库使用分支区分,则使用label指定要使用的分支

    比如服务名是user-service,会使用指定分支下的user-service.yml

    (3)端口问题

    如果我们把端口配置server.port放到git仓库中,应用使用默认的8080就启动了,我们配置的端口无效。有2种解决方式:

    • 就把server.port写在resources下的application.yml中
    • 把server.port放到git仓库中,把resources下的application.yml重命名为bootstrap.yml

    spring、springboot启动时会自动加载资源根目录下的application、bootstrap配置文件,只是加载时机不同

    启动应用时会在控制台打印端口,可以在控制台查看应用使用的端口

    流程:

    应用启动注册Eureka Server -> 从Eureka Server获取Config Server的节点列表 -> 从Config Server获取配置。

  • 相关阅读:
    Django基础(一)
    CSS
    HTML
    python之路_面向对象
    python之路第六篇
    python之路第四篇
    python之路第三篇
    python之路第二篇
    python之路第一篇
    hdu 3551(一般图的匹配)
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12814921.html
Copyright © 2020-2023  润新知