Alibaba Nacos快速入门(四)
# 前言
回顾一下之前所讲Nacos概述,其中一个功能就是动态配置服务,本节主要就介绍Nacos配置中心,实现配置的动态变更,以及Nacos管理界面基本操作。
# 1、启动Nacos Server
startup.cmd -m standalone
# 2、创建项目nacos-config
依赖:
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
<spring-alibaba.version>2.2.6.RELEASE</spring-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 3、Nacos配置管理相关参数
在bootstrap.properties中添加如下配置
#spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.file-extension=yml
spring.cloud.nacos.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=DEFAULT_GROUP
#不配置默认取的是spring.application.name
#spring.cloud.nacos.config.prefix=nacos-config
2
3
4
5
6
file-extension :文件后缀
server-addr:nacos服务地址
group: 分组,默认分组可不配置
prefix:文件名前缀,默认为spring.application.name
dataId格式:
${prefix}-${spring.profiles.active}.${file-extension}
# 4、配置获取类
通过 Spring Cloud 原生注解 @RefreshScope实现配置自动更新
@RestController
@RefreshScope
public class ConigTestController {
@Value("${custom.name:fire}")
private String name;
@Value("${custom.pwd:fire123}")
private String pwd;
@GetMapping("/test-config")
public String testConfig(){
return String.format("自定义属性:name=%s,pwd=%s",name,pwd);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 5、测试效果
访问http://localhost:8083/test-config
nacos后台添加配置
再次调用测试接口
扩展:通过调用 API 向 Nacos Server 发布配置:dataId 为nacos-config.yml
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=custom.name=lisi"
2
3
# 6、创建命名空间
主要用来区分不同环境配置,服务管理,ID不填写则默认生成
# 7、环境切换
通过后缀的方式切换环境,动态修改配置,bootstrap中添加配置
#激活test环境配置
spring.profiles.active=test
#对应Nacos命名空间ID
spring.cloud.nacos.config.namespace=fd70562a-dd6e-4498-883a-657eab78d50c
2
3
4
# 8、克隆
克隆一份配置,dataId按照规则添加后缀test,命名空间勾选创建好的test,修改内容,发布
测试效果
# 9、灰度发布
灰度配置指的是指定部分客户端IP进行新配置的下发,其余客户端配置保持不变,用以验证新配置对客户端的影响,保证配置的平稳发布。灰度配置是生产环境中一个比较重要的功能,对于保证生产环境的稳定性非常重要。Nacos 支持了以IP为粒度的灰度配置,具体使用步骤如下:
编辑配置->勾选Beta版本发布,选择发布的客户端IP,发布Beta即可,想取消则停止Beta
# 10、版本问题
最初使用版本为:
SpringBoot:2.6.1+SpringCloud:2021.0.0+Cloud Alibaba:2021.1
测试配置刷新无效果,检查配置没有问题
解决方案:降低版本
最终使用版本:
SpringBoot:2.3.2.RELEASE+SpringCloud:Spring Cloud Hoxton.SR9+Cloud Alibaba:2.2.6.RELEASE
# 总结
Nacos支持与Spring,SpringBoot等整合实现服务配置动态变更,本文主要讲Nacos与Spring Cloud的集成,如何实现配置中心,统一管理服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
源码:https://gitee.com/firegitspace/springcloud_demo (opens new window)
版本:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明 (opens new window)
Nacos:https://nacos.io/zh-cn/docs/what-is-nacos.html (opens new window)