SpringCloud Alibaba-Nacos组件作为配置中心教程
文章目录
- 为什么要使用配置中心?
- 一、引入nacos-config配置中心
- 二、配置bootstrap.properties元数据
- 三、动态获取配置
- 四、在配置中心添加数据集
- 五、配置中心进阶使用
- 1.命名空间
- 2.配置 集/ID/分组
- 3.载多个配置集
Nacos作为配置中心文档地址:https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md
为什么要使用配置中心?
引入配置中心最重要的一点是:可以在系统运行时(runtime)动态调整配置文件!
一、引入nacos-config配置中心
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
二、配置bootstrap.properties元数据
官方文档要求我们创建
bootstrap.properties
配置文件,配置 Nacos Config 元数据。
- 注:使用nacos时,
bootstrap.properties
会优先于application.properties
文件。
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
三、动态获取配置
动态获取配置需要在Controller中加入
@RefreshScope
注解。
@RefreshScope
public class CouponController {
...
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private String age;
}
四、在配置中心添加数据集
Data ID的默认名:
微服务名.properties
之后,只需要在nacos配置中心对配置进行修改发布即可动态修改数据,无需重新为微服务打包发布了。
注意:如果配置中心和项目配置文件中都配置了相同的项,则优先 使用配置中心的配置!
五、配置中心进阶使用
1.命名空间
- 命名空间可以用来做
配置隔离
: 不同的命名空间下, 可以存在相同的 Group 或 Data ID 的
配置。- 命名空间可以
基于环境进行环境隔离
:开发、测试、生产,各自使用不同的命名空间。- 命名空间也可以
基于微服务进行环境隔离
:不同微服务使用各自的命名空间。
可以在bootstrap.properties
中设置使用的命名空间,下图以项目真实上线时为例:
也可以在每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置。
2.配置 集/ID/分组
配置集:一组相关或者不相关的配置项的集合称为配置集。
配置集 ID:类似配置文件名,在nacos中即是Data ID。
配置分组:默认所有的配置及都属于DEFAULT_GROUP
。项目在不同时期可以使用不同的配置分组,例如双11,双12时就可以切换性能更高的配置。
配置分组可以在bootstrap.properties
使用spring.cloud.nacos.config.group=配置分组名
进行配置。
在谷粒商城项目中:
微服务隔离
:每个微服务创建自己的命名空间。环境隔离
:使用配置分组区分环境,区分dev,test,prod环境。
3.载多个配置集
可以将配置拆分成多个,同时加载。
- 任何配置文件都可以放在配置中心中,只需要在
bootstrap.properties
中说明加载配置中心中哪些配置文件即可,并且优先使用配置中心。
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true
spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
还没有评论,来说两句吧...