返回 导航

SpringBoot / Cloud

hangge.com

分布式配置中心Spring Cloud Config使用详解7(使用MySQL数据库存储配置)

作者:hangge | 2020-08-17 08:10
    我们知道 Spring Cloud Server 默认是使用 Git 来存储配置,而 Spring Cloud Config Edgware 版本开始又新增了一种配置方式:采用数据库存储配置信息。下面通过样例演示如何将配置存放在 MySQL 数据库中(当然使用其他数据库也是可以的)。

七、使用 MySQL 数据库存储配置

1,初始化数据库

(1)首先创建一个用于存放配置数据的表,建表语句如下:
CREATE TABLE `properties` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `key` varchar(50) NOT NULL,
  `value` varchar(500) NOT NULL,
  `application` varchar(50) NOT NULL,
  `profile` varchar(50) NOT NULL,
  `label` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(2)接着执行如下 SQL 插入一些测试数据:
INSERT INTO properties VALUES(1, 'from', 'mysql-default-1.0', 'hangge-client', 'default', 'master');
INSERT INTO properties VALUES(2, 'from', 'mysql-dev-1.0', 'hangge-client', 'dev', 'master');
INSERT INTO properties VALUES(3, 'from', 'mysql-prod-1.0', 'hangge-client', 'prod', 'master');

2,服务端配置 

(1)编辑服务端 Config-server pom.xml 文件,引入 MySQL 数据库驱动、以及 JDBC 的依赖:
<!-- spring-jdbc -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- 数据库驱动依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<!-- 数据库连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>

(2)接着在 application.properties 中配置数据库连接信息,并将配置中心的存储实现切换到 jdbc 的方式:
#将配置中心的存储实现切换到jdbc的方式
spring.profiles.active=jdbc

#查询数据库的sql语句
spring.cloud.config.server.jdbc.sql=SELECT `KEY`, `VALUE` from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?

#数据库连接信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/hangge
spring.datasource.username=root
spring.datasource.password=hangge1234

3,运行测试

    经过上面配置修改,Config Server 就可以使用 SVN 作为仓库来存储配置文件了。而对客户端来说,这个过程是透明的不需要做任何变动。
    访问客户端提供的 http://localhost:7002/test 服务接口,可以看到页面成功根据配置内容输出对应环境的 from 内容了。
评论

全部评论(0)

回到顶部