分布式配置中心:Spring Cloud Config

2019-06-09  本文已影响0人  neko_11

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>
上一篇下一篇

猜你喜欢

热点阅读