欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring-cloud 配置中心(以oracle数据库作为配置信息仓库)

程序员文章站 2022-07-15 09:56:47
...

一、 Spring Cloud Config简介

微服务要实现集中管理微服务配置、不同环境不同配置、运行期间也可动态调整、配置修改后可以自动更新的需求,Spring Cloud Config同时满足了以上要求。Spring Cloud Config 分为Config Server和Config Client两部分,是一个可以横向扩展,集中式的配置服务器, 默认使用Git存储配置内容,这里我使用的是oracle数据库来实现配置中心管理

Spring Cloud Config 原理图如图所示:
spring-cloud 配置中心(以oracle数据库作为配置信息仓库)

二、 建立配置数据

1、建立oracle数据库与管理配置的对应表,我这里使用表名sys_config
spring-cloud 配置中心(以oracle数据库作为配置信息仓库)
建表语句这里我就不写了上面是建立配置表的对应字段
这里说一下字段的含义
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
spring-cloud 配置中心(以oracle数据库作为配置信息仓库)

三、编写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配置文件如下:
spring-cloud 配置中心(以oracle数据库作为配置信息仓库)
注意:
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配置成功
spring-cloud 配置中心(以oracle数据库作为配置信息仓库)

四、编写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