本文介绍SpringBoot如何使用阿里巴巴Nacos做配置中心。

Nacos简介

Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计。它可以帮助您轻松构建云本机应用程序和微服务平台。

Nacos基本上支持现在所有类型的服务,例如,Dubbo / gRPC服务,Spring Cloud RESTFul服务或Kubernetes服务。

尤其是使用Eureka注册中心的,并且担心Eureka闭源的开发者们,可以将注册中心修改为Nacos,本文主要介绍Nacos配置中心的使用。
nacos官网

Nacos安装

Nacos安装可以采用如下两种方式:

1.官网下载稳定版本解压使用。

2.下载源代码编译使用,目前最新的版本是0.8.0版本。

本文简单介绍一下第二种方式,到Nacos的稳定版本下载地址,下载最新版,本文下的是tag.gz文件,下载后解压即安装完成,然后进入解压目录后的bin目录执行如下命令启动Nacos。

1
sh startup.sh -m standalone

启动可以看到控制台,端口号是8848(好像是因为珠穆朗玛峰的高度),版本等信息。

SpringBoot使用Nacos

1. 项目中加入使用Nacos配置中心的依赖spring-cloud-starter-alibaba-nacos-config,pom文件如代码所示。

1
2
3
4
5
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>

版本对应关系参考:版本说明 Wiki

2. 在bootstrap.properties中配置 Nacos server 的地址和应用名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
### nacos访问地址
spring.cloud.nacos.config.server-addr=
### 配置文件后缀
spring.cloud.nacos.config.file-extension=yaml
### nacos命名空间id
spring.cloud.nacos.config.namespace=
### nacos访问地址的用户名(如果开启了身份认证)
spring.cloud.nacos.config.username=
### nacos访问地址的密码
spring.cloud.nacos.config.password=

### Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。
### Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。
### 如果运行在不可信的网络环境或者有强鉴权诉求,请参考官方简单实现做替换增强。

### springboot项目名
spring.application.name=
### 当前环境对应的 profile
spring.profiles.active=

在 Nacos 中,dataId的完整格式如下:

1
${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. 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:

1
2
3
4
5
6
7
8
9
10
11
12
13
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

@Value("${useLocalCache:false}")
private boolean useLocalCache;

@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
}

4. 登录nacos界面修改发布配置.

(完)