美文网首页
分布式配置中心:Spring Cloud Config

分布式配置中心:Spring Cloud Config

作者: neko_11 | 来源:发表于2019-06-09 15:34 被阅读0次

    1、application.yml配置

    对于SpringBoot应用,我们可以将配置内容写入application.yml,设置多个profile,也可以用多个application-{profile}.properties文件配置,并在启动时指定spring.profiles.active={profile}来加载不同环境下的配置。
    在Spring Cloud微服务架构中,这种方式未必适用,微服务架构对配置管理有着更高的要求,如:

    • 集中管理:
      成百上千(可能没这么多)个微服务需要集中管理配置,否则维护困难、容易出错;
    • 运行期动态调整:
      某些参数需要在应用运行时动态调整(如连接池大小、熔断阈值等),并且调整时不停止服务;
    • 自动更新配置:
      微服务能够在配置发生变化是自动更新配置。

    以上这些要求,传统方式是无法实现的,所以有必要借助一个通用的配置管理机制,通常使用配置服务器来管理配置。

    2、Sping Cloud Config简介

    Spring Cloud Config分为Config Server和Config Client两部分,为分布式系统外部化配置提供了支持。 Spring Cloud Config非常适合Spring应用程序,也能与其他编程语言编写的应用组合使用。
    微服务在启动时,通过Config Client请求Config Server以获取配置内容,同时会缓存这些内容。

    3、构建Config Server

    创建一个spring-boot项目,引入依赖:

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

    启动类添加注解@EnableConfigServer

    @SpringBootApplication
    @EnableConfigServer
    public class DemoApplication {
        public static void main(String[] args) {
            SpringApplication.run(BootApplication.class, args);
        }
    }
    

    4、构建Config Client

    在客户端的配置文件指定配置中心的地址即可。

    spring:
      cloud:
        config:
          uri: http://localhost:8769
          fail-fast: true
        profiles:
          active: dev
    

    5、Config Server读取本地配置文件

    配置文件指定配置文件路径:

    spring:
      cloud:
        config:
          server:
            native:
              search-locations: classpath:/shared
    # 指定本地方式
      profiles:
       active: native
    

    在工程的resources目录下新建shared文件夹,新建config-client-dev.yml文件,配置写入该文件即可在客户端生效。

    6、Config Server远程读取git仓库配置

    配置文件指定配置文件路径:

    spring:
      cloud:
        config:
          server:
            git:
              # git地址
              uri: xxxxxxxx
              # 搜索远程仓库的文件夹地址
              searchPaths: xxx
              username: xxxx
              password: xxxx
            # 指定分支
            label: master
    

    将上述的配置文件上传到git,即可

    7、高可用的配置中心

    可以将服务注册到eureka,启动类添加注解@EnableEurekaClient

    @SpringBootApplication
    @EnableConfigServer
    @EnableEurekaClient
    public class DemoApplication {
        public static void main(String[] args) {
            SpringApplication.run(BootApplication.class, args);
        }
    }
    

    配置文件指定注册中心的地址:

    eureka:
      client:
        serviceUrl:
          defaultZone: xxxxxxxxxxxxxxx
    

    添加依赖:

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

    相关文章

      网友评论

          本文标题:分布式配置中心:Spring Cloud Config

          本文链接:https://www.haomeiwen.com/subject/xwqnxctx.html