spring-cloud 配置中心(以oracle数据库作为配置信息仓库)
一、 Spring Cloud Config简介
微服务要实现集中管理微服务配置、不同环境不同配置、运行期间也可动态调整、配置修改后可以自动更新的需求,Spring Cloud Config同时满足了以上要求。Spring Cloud Config 分为Config Server和Config Client两部分,是一个可以横向扩展,集中式的配置服务器, 默认使用Git存储配置内容,这里我使用的是oracle数据库来实现配置中心管理
Spring Cloud Config 原理图如图所示:
二、 建立配置数据
1、建立oracle数据库与管理配置的对应表,我这里使用表名sys_config
建表语句这里我就不写了上面是建立配置表的对应字段
这里说一下字段的含义
SERVICE_NAME:服务名—因为是分布式部署,每个项目有不同的配置要求
CONFIG_ENV:配置环境—根据不同的生产环境选择不同的配置如开发、测试等
PROPERTY_NAME:key值,即属性名
PROPERTY_VALUE:value值,即属性值
DEFAULT_VALUE:默认值,value值为空时取默认值
REMARK:配置说明
IS_VALID:是否生效
2、添加config-client(客户端)的配置值
刚刚开始写config-server时可以先配置出数据库连接、端口号等等配置
eureka.client.serviceUrl.defaultZone
server.port
spring.application.name
spring.datasource.driver-class-name
spring.datasource.username
spring.datasource.password
spring.datasource.url
三、编写Config Server
1、新建一个spring boot 项目,除了必要的依赖之外pom.xml中添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
2、启动类上添加@EnableConfigServer注解,表示这个类是一个Config Server
@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
3、配置application.yml文件
config-server配置文件如下:
注意:
sql:
SELECT PROPERTY_NAME , NVL(PROPERTY_VALUE,DEFAULT_VALUE) FROM SYS_CONFIG
WHERE SERVICE_NAME=? AND CONFIG_ENV=? AND IS_VALID=?
配置中心客户端访问服务端获取配置时会根据这个sql来查询它对应的配置
a、查询出来的必须只能是两个字段,前一个是属性名(key),后一个是属性值(value),不能搞混,也不能多出几个字段
b、查询条件至少要有3条
第一个条件对应的参数是客户端配置文件中的spring.cloud.config.name属性一般为服务名。这里我对应的是数据库中是否有效的字段SERVICE_NAME
第二个条件对应的参数是客户端配置文件中的spring.cloud.config.profile属性,dev为开发环境,test为测试环境等等。这里我对应的是数据库中是否有效的字段CONFIG_ENV
第三个条件对应的参数是客户端配置文件中的spring.cloud.config.label属性。因为我使用的是数据库形式保存数据,所以这里我对应的是数据库中是否有效的字段IS_VALID
(可以传入5个参数version、state后两个参数请自行研究)
4、启动Eureka服务器和configserver服务器
访问http://localhost:8888/querystatistics/dev/1 看到如下页面,configserver配置成功
四、编写Config Client
1、新建一个spring boot 项目,除了必要的依赖之外pom.xml中添加如下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2、编写配置文件bootstrap.properties。配置在bootstrap.properties中的属性有更高的优先级,默认情况下不会被本地覆盖。
######配置服务注册中心服务器地址
eureka.client.serviceUrl.defaultZone=(你的注册中心地址)
######高可用配置中心通过服务Id去自动发现config-server服务组
spring.cloud.config.discovery.enabled=true
######指定配置中心服务的serviceId(对应configserver配置文件中的spring.application.name)
spring.cloud.config.discovery.serviceId=configserver
######服务名(第一个条件:对应数据库字段服务名service_name,必须与项目名一致)
spring.cloud.config.name=querystatistics
######配置环境如prod、dev、test等(第二个条件:对应数据库字段服务名config_env)
spring.cloud.config.profile=dev
######有效标志(第三个条件:对应数据库字段服务名is_valid)
spring.cloud.config.label=1
3、编写查询代码,启动项目,查询成功即配置中心完成
注:资源下载链接https://download.csdn.net/download/qq_36174363/10555298
注:部分信息来自https://blog.csdn.net/u012482647/article/details/78481524