Spring Cloud Alibaba 系列之 Nacos 配置中心
1.1 简介
1.1.1 概述
Nacos 除了通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现以外,还可以通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。Nacos 作为配置中心时是可以动态变更的,不像 Spring Cloud Config 需要配合 Spring Cloud Bus 实现半自动。☞ 官方文档
1.1.2 相关依赖
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 如果需要使用 Spring Cloud Hoxton 版本,请在 dependencyManagement 中添加如下内容锁定版本 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<!-- Spring Cloud Alibaba 与 Spring Cloud 版本对应关系参考下表 -->
<version>2.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Spring Cloud Version | Spring Cloud Alibaba Version | Spring Boot Version |
---|---|---|
Spring Cloud Hoxton.SR8 | 2.2.3.RELEASE | 2.3.2.RELEASE |
Spring Cloud Greenwich.SR6 | 2.1.3.RELEASE | 2.1.13.RELEASE |
Spring Cloud Hoxton.SR3 | 2.2.1.RELEASE | 2.2.5.RELEASE |
Spring Cloud Hoxton.RELEASE | 2.2.0.RELEASE | 2.2.X.RELEASE |
Spring Cloud Greenwich | 2.1.2.RELEASE | 2.1.X.RELEASE |
Spring Cloud Finchley | 2.0.3.RELEASE | 2.0.X.RELEASE |
Spring Cloud Edgware | 1.5.1.RELEASE(停止维护,建议升级) | 1.5.X.RELEASE |
1.2 简单使用
1.2.1 配置文件
# bootstrap.yml
server:
port: 8081
spring:
application:
name: nacos-producer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
# appliaction.yml
spring:
profiles:
# 又多个配置文件使用逗号分隔
active: dev
在 Nacos Spring Cloud 中,Data ID 的完整格式为: ${prefix}-${spring.profiles.active}.${file-extension}
其中 prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置;spring.profiles.active 即为当前环境对应的 profile, 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,Data ID 的拼接格式变成 ${prefix}.${file-extension}
,不推荐为空;file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。需要注意的是 Data ID 命名的后缀要与配置中的书写保持一致,Nacos 不能识别 yaml 与 yml 为同种格式。
1.2.2 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
1.2.3 获取配置
@RestController
@RefreshScope // 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新
@RequestMapping("/provider")
public class ProviderController {
@Value("${config.info}")
private String info;
@GetMapping("/find")
public Object find() {
return "我获取的配置信息为:" + info;
}
}
1.2.4 添加配置文件
1.2.5 测试
请求服务成功获取到配置信息,我们修改配置中心文件 version=2 发布后再次请求发现获取到了新的配置。这就表明 Nacos 作为配置中心时时动态的配置,而不是 Spring Cloud Config 那种需要手动去刷新的。需要注意的是 Nacos 虽然是动态的配置中心,但是如果修改了数据库相关要么重启要么写一个单独读取配置文件创建数据源的工具类否则配置更新了,数据源没有更新。
1.3 配置文件的区分
1.3.1 概述
命名空间 NameSpace、分组 Group、文件名 DataID 三者任意一个不同都代表不是同一个配置文件,类似于包、类、方法,这三者组合起来任意一个不同找到的方法就不同。
1.3.2 Data ID
这个不用多说 Data ID 就是文件名,文件名不同配置文件肯定不同。
1.3.3 Group
新增配置文件时我们可以发现 Nacos 默认 Group 是 DEFAULT_GROUP。Group 会把不同的微服务划分到同一个分组里面去,Group 可以方便我们的管理。我们在配置文件中新增 spring.cloud.nacos.config.group
指定组名就可以指定从那个分组里面获取配置文件。
1.3.4 NameSpace
最大的是 Namespace(命名空间),Nacos 默认的命名空间是 public,Namespace 主要用来实现隔离。比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个 Namespace,不同的 Namespace 之间是隔离的。我们可以在左侧菜单中找到命名空间来创建新的命名空间,新增可以自定义或者自动帮我们生成一个命名空间 id,新增完毕后我们可以发现在配置列表中多个一个选项卡,我们可以在此切换命名空间。需要注意的是 public 保留空间不可删除。我们在配置文件中新增 spring.cloud.nacos.config.namespace
指定命名空间 id 就可以指定从那个命名空间里面获取配置文件。
还没有评论,来说两句吧...