配置中心需求
- 可视化的配置维护。
- 配置信息可持久化存储。
- 配置变化可以及时感知。
- 高可用的集群方式。
- 信息安全。
Nacos使用配置
安装Nacos
官网按照教程下载启动Nacos: https://nacos.io/zh-cn/docs/quick-start.html
anzhuang.png
项目引入jar包
Spring Cloud 项目为例:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
引入配置
一定要使用 bootstrap.properties/yml 。
spring.application.name=spring-cloud-nacos
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
# Nacos认证信息 默认配置
#spring.cloud.nacos.config.username=nacos
#spring.cloud.nacos.config.password=nacos
#spring.cloud.nacos.config.contextPath=/nacos
# 设置配置中心服务端地址
spring.cloud.nacos.config.server-addr=localhost:8848
# Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
# spring.cloud.nacos.config.namespace=
配置Nacos
新建 Data Id 名称为 spring.application.name 值,这里类型为 properties。
Data Id 可以不加后缀,也可以添加后缀。
注意 spring cloud 默认加载 :
- dataId [spring.application.name] & group[DEFAULT_GROUP]
- dataId [spring.application.name.properties] & group[DEFAULT_GROUP]
比如:dataId : spring-cloud-nacos & group : DEFAULT_GROUP
dataId : spring-cloud-nacos.properties & group : DEFAULT_GROUP
如果为其他 需要在 启动配置文件中指定 后缀 和 group 。
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=Test
peizhiNacos.png
获取配置值
通过@Value 注解 将值引入。通过 @RefreshScope 注解完成对配置修改的动态更新。
@RefreshScope
@Component
@Data
public class NacosConfigConfiguration {
@Value("${switchTest: test}")
private String switchTest;
}
简单使用
直接将配置类引入。通过get属性值方式获取配置值。
@RestController
public class NacosConfigController {
@Resource
private NacosConfigConfiguration nacosConfigConfiguration;
@GetMapping("/testConfig")
public String testConfig(){
return nacosConfigConfiguration.getSwitchTest();
}
}
Nacos 扩展配置
多环境配置
正常情况我们都需要多环境的配置方式。Nacos对于多环境提供了灵活的配置方式。
active方式
Nacos 配置
启动配置文件通过 spring.profiles.active 指定启动环境,在Nacos上新建 Data Id 为 服务名称+active环境+文件后缀 的配置 如: spring-cloud-nacos-test.yaml
duohuanjing.png
这里注意两点:
- 主配置文件为 spring-cloud-nacos.yaml。spring-cloud-nacos-test.yaml 会继承 主配置文件配置。
- spring-cloud-nacos-test.yaml 优先级要大于主配置文件,也就是说相同配置会以 -test 配置文件为主。(子类可以继承父类方法,也可以重写父类方法)
项目配置
spring:
application:
name: spring-cloud-nacos
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
profiles:
active: test
优缺点
优点:不需要在项目中创建 bootstrapt-test.yaml 直接在 bootstrapt.yaml 中配置active 环境后,在Nacos上创建文件即可,且方便继承 主配置。
缺点:所有环境配置放在 同一命名空间,同一小组内,不利于权限控制。所有用户都可直接操作线上环境。没有做到环境的隔离,误操作风险较大。
namespace 方式
nacos 配置
namespace.png
在命名空间新建 NameSpace 区分 Test / Dev / Prod 环境
项目配置
bootstrap.yml
# 应用名称
spring:
application:
name: spring-cloud-nacos
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
profiles:
active: test
bootstrap-test.yml
spring:
cloud:
nacos:
config:
namespace: prod