Aeizzz / aeizzz

0 stars 2 forks source link

Spring Cloud 之 配置中心 #4

Open Aeizzz opened 6 years ago

Aeizzz commented 6 years ago

Spring Cloud Config

介绍

Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置。它实现了对服务端和客户端对Spring Environment和PropertySource抽象的映射,所以它除了适用于Spring构建的应用程序,也可以在任何其他语言运行的应用程序中使用。作为一个应用可以通过部署管道来进行测试或者投入生产,我们可以分别为这些环境创建配置,并且在需要迁移环境的时候获取对应环境的配置来运行。

配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。当然他也提供本地化文件系统的存储方式,下面从这两方面介绍如何使用分布式配置来存储微服务应用多环境的配置内容。

构建Spring Cloud Config

新建一个新的spring boot项目,增加以来

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

在主程序中增加注解@EnableConfigServer 来开启Config Server 如下

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

yml文件中配置

server:
  port: 4001
spring:
  application:
    name: config
  profiles:
    active: native  #使用本地配置
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/config/

这个配置文件是配置的本地文件,当然也可以配置git服务器
更改 cloud为

  cloud:
    config:
      server:
        git:
          uri: https://www.****.com/config.git     #配置存放git地址
          username: ****        #git账号
          password: ****        #git密码

关于config中配置文件的读取规则如下

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

客户端的使用

增加依赖

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

改造配置文件,将配置文件改名为bootstrap.yml

spring:
  application:
    name: admin #服务名称
  profiles:
    active: dev
  cloud:
    config:
      fail-fast: true
      discovery:
        service-id: config  #配置中心的ID
        enabled: true           #是否开启
      profile: ${spring.profiles.active}   #当前激活的环境
      label: ${spring.profiles.active}   #当前激活的标签,对应git里的分支

这里需要格外注意:上面这些属性必须配置在bootstrap.yml中,config部分内容才能被正确加载。因为config的相关配置会先于application.yml,而bootstrap.yml的加载也是先于application.yml。


更多使用查看文档Spring Cloud Config