SpringCloud Alibaba微服务实战二 - 配置中心管理
目录
SpringCloud Alibaba微服务实战二 - 配置中心管理
重要的概念
为了避免在Console中迷失自我,有必要先阐述几个重要的概念。
namespace、group和service/dataId
NACOS给的最佳实践表明,最外层的namespace是可以用于区分部署环境的,比如dev,test,uat,product等。同时,也有一个商业利用价值:多租户。以namespace为单位,给用户开辟使用空间。
其它两个领域模型不用多解释了,见名知意。其目的也非常明显,就是为了能够逻辑上区分两个目标对象。
默认情况下,namespace=public,group=DEFAULT_GROUP。
明白了这个数据模型后,可以稍微玩转一下Console了。
配置中心集成
在SpringCloud Alibaba体系中是使用Nacos作为配置中心,这样Nacos既可以作为注册中心也可以作为配置中心,相当于SpringCloud中的Eureka + Config。要接入Nacos的配置中心也很简单,只需要如下几步:
引入配置中心组件spring-cloud-starter-alibaba-nacos-config <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
在resource中新建文件bootstrap.yml,配置应用名称和注册中心地址 spring: application: name: account-service cloud: nacos: config: server-addr: 10.0.10.48:8848 file-extension: yml
多环境管理
在Nacos中实现多环境管理很容易,可以通过Profiles, Group, Namespace三个维度实现。
profiles
nacos配置中心的DATA ID就相当于一个配置文件的名称,前面一部分我们DATA ID的默认命名方式为${spring.application.name}.${ spring.cloud.nacos.config.file-extension},比如我们之前的配置文件为cloud-payment-service.yml。
如果我们在服务启动的时候指定了服务的环境名称spring.profiles.active,那么DATA ID的命名方式就变成了${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}。
也就相当于项目名称-环境后缀-文件名后缀
比如上面的application我们在bootstrap.yml中设置了spring.profiles.active=dev,那么服务启动时就会去nacos抓取cloud-payment-service-dev.yml这个配置文件的数据。
利用Nacos命名方式的特性我们可以实现多环境配置管理。
group进行区分:
在nacos中建立多个配置文件,以Group进行区分
建立了一个DEV_GROUP 和TEST_GROUP。
修改配置文件,指定spring.cloud.nacos.config.group的值
spring: cloud: nacos: config: server-addr: 1127.0.0.1:8848 file-extension: yml group: DEV_GROUP
这个时候不需要再给服务指定spring.profiles.active属性
可以新建多个命名空间
namespace顺利创建成功后,会在每个一级页面看到由namespace组成的TAB,可以任意切换namespace,对其下的数据进行操作。
spring: cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yml namespace: 7e8ccc22-6f51-42fa-bcf1-db45f99dbf57
Group Group是DATA ID集合的概念,将同一个环境下的配置文件组成一个Group,在服务启动时通过指定spring.cloud.nacos.config.group属性可以让系统加载不同Group的配置文件。
项目实战操作:
修改bootstrap.yml
server:
port: 8070
spring:
main:
allow-bean-definition-overriding: true
profiles:
active: dev
application:
name: payment-service
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
#namespace: b561281a-fb95-411e-b75b-cf36bfc90854
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: properties
#namespace: b561281a-fb95-411e-b75b-cf36bfc90854
#group: payment
新建配置文件
重启服务测试!
新版本用yaml测试配置一直不生效
后台日志显示:c.a.c.n.c.NacosPropertySourceBuilder : Ignore the empty nacos configuration and get it based on dataId[payment-service.properties] & group[DEFAULT_GROUP]