配置共享
- 当配置越来越多的时候,我们就发现有很多配置是重复的,这时候就考虑可不可以将公共配置文件提取出来,然后实现共享呢?当然是可以的。接下来我们就来探讨如何实现这一功能。
同一个微服务的不同环境之间共享配置
- 如果想在同一个微服务的不同环境之间实现配置共享,其实很简单。
- 只需要提取一个
spring.application.name
命名的配置文件,然后将其所有环境的公共配置放在里面即可。
- 1.新建一个名为
service-product.yaml
配置存放商品微服务的公共配置
- 2.新建一个名为
service-product-test.yaml
配置存放测试环境的配置
- 3.添加测试方法
@RestController
@RefreshScope
public class NacosConfigController {
@Value("${config.env}")
private String env;
@RequestMapping("/test-config3")
public String testConfig3(){
return env;
}
}
- 接下来,修改bootstrap.yml中的配置,将active设置成test,再次访问,观察结果
spring:
profiles:
active: test #环境标识
不同微服务中间共享配置
- 不同为服务之间实现配置共享的原理类似于文件引入,就是定义一个公共配置,然后在当前配置中引入。
- 1.在nacos中定义一个DataID为all-service.yaml的配置,用于所有微服务共享
spring:
zipkin:
base-url: http://192.168.110.130:9411/ #zipkin server的请求地址
discovery-client-enabled: false #让nacos把它们当成一个URL,而不要当做服务名
sleuth:
sampler:
probability: 1.0 #采样的百分比
application:
name: service-product
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/shop?serverTimezone=UTC
username: root
password: 123456
jpa:
hibernate:
#更新或者创建数据表结构
ddl-auto: update
#控制台显示SQL
show-sql: false
cloud:
nacos:
discovery:
server-addr: 192.168.110.130:8848
- 2.在nacos中的修改的service-product.yaml中为下面内容
server:
port: 8081
cofig:
appName: product
spring:
application:
name: service-product
cloud:
nacos:
config:
server-addr: 192.168.110.130:8848 #nacos中心地址
file-extension: yaml #配置文件格式
shared-dataids: all-service.yaml #配置文件格式
refreshable-dataids: all-service.yaml #配置要实现动态配置刷新的配置
profiles:
active: test #环境标识
网友评论