Nacos配置(配置中心)
Nacos配置(配置中心)
Nacos服务配置中心之基础配置
新建模块
新建:cloudalibaba-config-nacos-client3377
,引入依赖:
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
配置bootstrap.yml
Nacos和Spring Cloud config一样,在项目初始化的时候,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。
另外,SpringBoot中配置文件的加载,bootstrap.yml优先于application.yml。
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client # 构成 Nacos 配置管理 dataId字段的一部分
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
配置之后,3377服务将从localhost:8848上读取后缀名为yaml的配置文件。
配置application.yml
spring:
profiles:
active: dev #表示开发环境
主启动类
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigClientMain3377.class, args);
}
}
服务接口
@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController {
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
dataId的完整格式及新建配置
在 Nacos Spring Cloud 中,dataId
的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
-
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。 -
spring.profiles.active
即为当前环境对应的 profile,参考 Spring Boot文档。注意:当
spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
-
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
综上所述,按照我们的配置,最后的dataId结果应该为:
nacos-config-client-dev.yaml
我们选中配置列表,选择新建配置,DataID就是我们刚刚得到的nacos-config-client-dev.yaml
。
新建配置完成之后是这样:
测试
运行3377服务,调用接口http://localhost:3377/config/info
测试配置读取是否成功。
另外,它支持动态刷新,当我们修改手动修改配置中心数据时,修改的配置会被动态刷新,自动读取。
Nacos服务配置中心之分类配置
命名空间、DataId和Group的关系
Namespace默认为空串,公共命名空间(public),分组默认是DEFAULT_GROUP。
Nacos的数据模型如下:
namespace用于区分部署环境【开发、测试、生产】,创建三个不同的namespace相互隔离。
Group可以把不同的微服务划分到同一个分组中。
Service可以包含多个Cluster集群,Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。
Instance是微服务的实例。
三种方案的加载配置
Data Id的方案
保证命名空间相同,分组相同,只有Data Id不同
指定spring.profile.active
和配置文件的DataId
来使不同环境下读取不同的配置。为了演示这个效果,我们总共新建以下两个配置,保证它们命名空间相同,分组相同,只有Data Id不同:
nacos-config-client-dev.yaml
nacos-config-client-test.yaml
通过spring.profile.active
属性就能进行多环境下配置文件的读取,刚刚已经测试过dev环境,我们测试以下test环境,是否能够读取到:nacos-config-client-test.yaml
的配置呢,答案是肯定的,可以访问:http://localhost:3377/config/info
测试一下。
spring:
profles:
active: test #表示测试环境
Group方案
保证命名空间相同,Data Id相同,只有分组不同
注意,这里我们需要在application.yml中指定profile为info,在bootstrap.yml指定group。
## bootstrap.yml
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: DEV_GROUP
## application.yml
spring:
profiles:
active: info
测试方法不用多说,在TEST_GROUP和DEV_GROUP之间切换,再访问接口即可。
namespace方案
保证命名空间不同
新建两个命名空间:dev和test。
如果需要指定命名空间,则指定yml中的namespace属性即可。
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: TEST_GROUP
namespace: b09923bb-b822-4d4c-b75d-c5085b22bbe8
spring:
profiles:
active: dev #表示开发环境
将会从命名空间ID为b09923bb-b822-4d4c-b75d-c5085b22bbe8
的TEST_GROUP
组中,读取nacos-config-client-dev
的配置文件。
posted on 2021-12-09 22:07 Chase_Hanky 阅读(2226) 评论(0) 编辑 收藏 举报