# Spring Cloud Config 的替代品:Alibaba Nacos
Nacos 是 Alibaba 开发的是用于微服务管理的平台,其核心功能是服务注册与发现、集中配置管理。
Nacos 作为服务注册发现组件,可以替换 Spring Cloud 应用中传统的服务注册于发现组件,如:Eureka、Consul 等,支持服务的健康检查。
Nacos 作为服务配置中心,可以替换 Spring Cloud Config、Apollo 等。
说明
为什么叫 Nacos?Naming 与 Configuration 的前两个字母的组合,最后的 s 代表 service 。从其命名也能看出其核心功能。
Nacos 作为配置管理中心,实现的核心功能就是配置的统一管理。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
# 1. 连接和使用配置中心
新建配置文件 bootstrap.yml ,新增 spring.cloud.nacos.config 段配置,将服务指向正确的 nacos 服务端。该配置文件中只保留 nacos 相关的配置即可,其他的配置放到 nacos 中统一管理。
注意
和 Spring Cloud Config 一样,连接配置中心的配置『必须』写在 bootstrap 配置文件中,而不是 application 配置文件中。
spring:
application:
name: xxx-service
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: yaml # nacos 配置文件后缀。注意是 yaml,不是 yml
group: ${spring.cloud.nacos.discovery.group} # 配置分组。未配置时,默认分组是 DEFAULT_GROUP
通过配置列表右侧的 +
按钮添加配置文件:
点击 +
按钮之后,页面内容如下:
Data ID
是该配置文件在 Nacos 系统内的唯一标识。
在 Nacos Spring Cloud 中,dataId 的完整格式语法如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix 的值默认与
spring.application.name
的值相同。也可以通过配置项 spring.cloud.nacos.config.prefix 来手动配置,指定一个与 spring.application.name 不一样的值,不过一般不会动它。spring.profile.active 即为当前环境对应的 profile ,如:
xxx-service-dev.yml
中的dev
就是指开发环境。**注意:**当 spring.profile.active 为空时,对应的环境定义字符部分将不存在,即为 xxx-service.yml,而不是 xxx-service-.yml 。
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。注意,yaml 文件的后缀是 yaml ,不是 yml ,这里不能简写。
Group
的值同 spring.cloud.nacos.config.group 的配置,界面填写的内容与项目中的配置二者『一定要统一』,否则无法正确读取配置,Group 起到配置『隔离』的作用。
配置内容
,略。
例如:
# 2. 验证和动态刷新
执行以下代码进行验证:
@Value("${xxx.yyy.zzz.username}")
private String username;
@Value("${xxx.yyy.zzz.password}")
private String password;
@RequestMapping("/demo")
public String demo() {
return username + ", " + password;
}
如果想要实现动态刷新功能,那么在 @Value 所在的 @Component(@Controller、@Service、@Repository)上加上 @RefreshScope 即可实现动态刷新。
# 3. Nacos 的数据存储
Nacos 的数据是存储在它自带的内嵌 derby 数据库中的,数据文件就在 Nacos 的解压目录下的 data
文件夹中。
你也可以通过修改配置,让 Nacos 将它的数据存储在你指定的 mysql 数据库中。
Nacos 在它的 conf
目录下已经为你准备好了建表脚本:nacos-mysql.sql
。不过脚本中有建表语句,但是没有建库语句!为了后续配置简单起见,建议创建的库命名为 nacos 。
create database nacos
DEFAULT CHARACTER SET utf8mb4 -- 乱码问题
DEFAULT COLLATE utf8mb4_bin -- 英文大小写不敏感问题
;
执行完 nacos-mysql.sql
中的建表 SQL 之后,修改同在 conf 文件夹下的 application.properties
配置文件。从 31 行开始的一段配置就是数据库连接相关配置。
修改完 application.properties
配置文件之后,重启 Nacos,你会发现 Nacos 重新编程了一个『干净』的环境。