Nacos官网文档:Nacos 融合 Spring Cloud,成为注册配置中心
【1】服务实例
① pom依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
② yml配置
bootstrap.yml:
server:port: 3377spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 # 服务注册中心config:server-addr: localhost:8848 # 服务注册中心file-extension: yaml # 指定yaml格式的配置group: DEFAULT_GROUP
application.yml:
spring:profiles:active: dev # 表示开发环境
③ 服务类
通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:
@RestController
@RefreshScope // 动态刷新
public class ConfigClientController {@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo(){return configInfo;}
}@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigClientMain3377 {public static void main(String[] args) {SpringApplication.run(NacosConfigClientMain3377.class,args);}
}
④ Nacos添加配置
测试如下-http://localhost:3377/config/info:
修改Nacos配置,再次刷新请求会发现获取到的信息已经发生改变。
【2】Nacos的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 类型。
【3】Namespace+Group+Data ID
简单来讲就是三级分类(进行隔离),Namespace > Group >Data ID
,然后精确找到需要的目标文件。如果三者有任何不同,那么将找到不同的文件。
默认情况:Namespace=public,Group=DEFAULT_GROUP, 默认Cluster是DEFAULT
Nacos默认的命名空间是public,Namespace主要用来实现隔离。比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。
Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去
Service就是微服务;一个Service可以包含多个Cluster(集群),Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。
比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,
这时就可以给杭州机房的Service微服务起一个集群名称(HZ),
给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。
最后是Instance,就是微服务的实例。