Spring Cloud系列-Spring Cloud Config服务端数据源配置方式(git、数据库、文件系统、组合)

前言

Spring Cloud Config为微服务架构提供了配置管理的功能。通过Spring Cloud Config服务端提供配置中心,在各个微服务应用的客户端读取来自服务端配置中心的配置项。配置中心的数据源可以来自git、svn、数据库、操作系统的本地文件、jar包中的文件、vault、组合

EnvironmentRepository接口

在这里插入图片描述
可以看到上图有对应的类负责存储配置中心的配置数据。而对于接口EnvironmentRepository只提供了一个方法findOne,通过传入application、profile和label来获得配置项。
在这里插入图片描述

EnvironmentRepositoryProperties

在这里插入图片描述
Spring Cloud Config有许多的配置方式,如果想查看有哪些配置参数,可以直接查询相应的接口EnvironmentRepositoryProperties的实现类。

Native

这里可以使用系统的文件路径,也可以使用jar中的配置文件,bootstrap.yml配置如下:

spring:
  profiles: native
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/config/
          # search-locations: file:/config/

如果使用的是classpath,就会使用jar里的配置。如果使用的是file,就会使用操作系统的文件路径。
jar时可以添加下面的application.yml指定所有的配置。client-dev.yml是我的一个微服务应用client的配置文件,dev指的是profile
在这里插入图片描述
这里需要注意的是,native方式只能单独使用,不能组合使用。原因是类NativeRepositoryConfiguration加了限制条件。一旦提供了别的EnvironmentRepository,这个就不生效了
在这里插入图片描述

接着可以访问Spring cloud config的站点,查看配置项
在这里插入图片描述

git

git是比较常见用来存储配置项的方式,数据源可以来自github,也可以使用自己抢建私有的git服务器。在resources目录下,添加bootstrap.yml文件,具体配置如下:

spring:
  profiles: git
  cloud:
    config:
      server:
        git:
          uri: https://github.com/repository/springcloud_demo_config.git
          username: username
          password: password

然后在你的git项目中添加文件application.yml配置文件,填入你的配置项目
在这里插入图片描述

数据库

这里作为存储配置项的数据库,只能使用支持Jdbc的关系型数据库。使用数据之前需要先引入jdbc和数据驱动的包。如果你使用的maven,可以添加下面配置。

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.connector.version}</version>
		</dependency>

添加spring-boot-start-jdbc包的原因是,在JdbcRepositoryConfiguration类中会判断是否存在JdbcTemplate类。如果不引入Jdbcqn,那么配置就不会生效
在这里插入图片描述
同样添加配置文件bootstrap.yml,具体配置如下:

spring:
  profiles: jdbc
  cloud:
    config:
      server:
        jdbc:
          sql: SELECT KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/new_platform?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false

这里需要你的数据库配置,并在数据库中添加一张数据库表。至于数据表的结构,大家可以从配置文件中是sql语句中看出。当配置中心读取配置项时,会传入相应的where条件参数,进行sql查询,返回给客户端。有兴趣的要以看看JdbcEnvironmentRepository类的findOne方法。
在这里插入图片描述
读取你的bootstrap.yml文件的配置,可以参考源码JdbcEnvironmentProperties
在这里插入图片描述

组合

如果你理解了上面的配置方式,下面的组就很简单了。只是多了一个order的配置,用于读取数据源的顺序。

spring:
    active: composite
  cloud:
    config:
      server:
        composite:
        -
          type: jdbc
          sql: SELECT KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?
          order: 0
        -
          type: native
          search-locations: classpath:/config/
          order: 1
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/new_platform?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false

其它

配置方式除了以上几种,还有vault、redis、CredHub,技术上不难,我也没试过,有兴趣的可以查看官方文档。另外,你也可以自己实现Spring Cloud Config自己实现个性化的配置方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值