开发者学堂课程【全面讲解Spring Cloud Alibaba技术栈(知识精讲+项目实战)第五阶段:配置共享】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/687/detail/11920
配置共享
内容介绍:
一、同一个微服务的不同环境之间共享配置
二、不同微服务中间共享配置
当配置越来越多的时候,就发现有很多配置是重复的,这时候可以考虑将公共配置文件提取出来,然后实现共享。
一、同一个微服务的不同环境之间共享配置
如果想在同一个微服务的不同环境之间实现配置共享,其实很简单。
只需要提取一个以 spring.application.name 命名的配置文件,然后将其所有环境的公共配置放在里面即可。
新建一个名为 service-product.yaml 配置存放商品微服务的公共配置
实例操作:
首先提取一个配置,在编辑配置中的配置内容里,全部把它复制粘贴到新建配置的配置内容中,配置格式改成 yaml,将配置内容里的 config 及其内容删除,新建配置的 Data ID 为 service-product.yaml,group:DEFAULF_GROUP
描述:商品微服务的公共配置
点击发布,配置成功
将公共配置提取出去以后,只需要编辑单独的部分。
在配置列表中,service-product-dev.yaml 的操作中,点击编辑,将描述改成商品微服务(dev 环境)的配置,把配置内容中公共部分删掉,加上 env:dev,之后确认发布。
在配置列表中添加,创建新建配置
Data ID:service-product-test.yaml
Group:DEFAULT_GROUP
描述:商品微服务( test 环境)配置
配置格式:test
配置内容:config:
appName:product
env:test
点击发布
以上三个配置分别为 service-product-dev.yaml 开发配置、service-product.yaml 公共配置、service-product-test.yaml 测试配置,达到了配置环境之间的配置共享。
运行测试
在 NacosConfigController 中,将
@RequestMapping ( "/ test-config2"")publig sxing testConfig2(){
return appName; }
复制粘贴到下一行,将
@value ( "$ { config. appNane } ")private string appName ;
复制粘贴到下一行,并将复制粘贴的三个 appName 改成 env,test-Config 2中的2改为3,最后导出,没有出错,并运行成功。
将 bootstrap.yaml 中的 env 改成 text 并运行,也运行成功。
二、不同微服务中间共享配置
不同微服务之间实现配置共享的原理类似于文件引入,就是定义一个公共配置,然后在当前配置中引入。
把 service-product.yaml 这个配置删除,bootstrap.yaml 因缺少配置无法运行。
在 nacos 中定义一个 DatalD 为 all-service.yaml 的配置,用于所有微服务共享
spring:
datasource:
driver-class-name: com.mysq1.jdbc. Driver
ur1: jdbc:mysq1:/ //shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
username: root
password: root
jpa:
properties :
hibernate:
hbm2dd1 :
auto: update
dialect: org.hibernate.dialect.MySQL 5InnoDBDialect
cloud:
nacos :
discovery:
server -addr : 127.0.0.1:8848
在nacos的中修改service-product.yaml中为下面内容
server :
port: 8081
config:
appName: product
修改bootstrap.yaml
spring:
application:
name: service-product
cloud :
nacos :
config:
server-addr: 127.0.0.1:8848 #nacos中心地址
file-extensionf yam1 #配置文件格式
shared-dataids: a71-service.yaml #配置要引入的配器
refreshable-dataids: a11-service.yam1 #配置要实现动态配置刷新的配器
profiles :
active: dev #环境标识
启动商品微服务进行测试,成功运行。