一. 简介
nacos是阿里开源的分布式服务治理工具,集成了Eureka和分布式配置中心的功能,包括注册中心,配置中心等
二. 使用
1. 下载并启动nacos
①. 从github上下载nacos
②. 环境要求
- JDK 1.8+
- Maven 3.2.x+
③. 运行nacos
windows使用cmd直接运行便可,mac使用sh,进入bin目录下,执行(standalone代表着单机模式运行,非集群模式)
sh startup.sh -m standalone
④. 进入nacos可视化界面
默认账号密码都是 nacos
2. 注册中心
①. 创建一个SpringBoot工程
②. 引入maven依赖
这里使用的是SpringCloud对应的依赖,官网也也提供了SpringBoot对应的依赖
目前建议nacos使用2.2.5.RELEASE为最新版本,SpringBoot使用2.3.2.RELEASE版本
如果SpringBoot使用最新的2.5.0会产生很多的版本依赖问题,因为SpringCloudAlibaba目前还没有适配2.5.0这个版本,具体版本对照参考官网
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
③.编写配置文件
spring:
application:
# 设置服务名称
name: nacos-demo
cloud:
nacos:
discovery:
# nacos注册中心地址
server-addr: 127.0.0.1:8848
server:
#端口号
port: 9999
④. 启动项目
可以看到服务已经被成功注册了
3. 配置中心
①. 引入maven依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
②. 在nacos创建命名空间和配置文件
- 创建命名空间
命名空间可以用来区分不同的配置文件,也可以用来区分不同的服务,类似创建了一个文件夹
- 创建配置文件
②.编写配置文件
这里需要按照nacos config的官方要求,创建bootstrap.propertie作为其配置文件(bootstrap.properties会优先于application.properties和application.yml被读取)
# nacos config地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 命名空间
spring.cloud.nacos.config.namespace=3a3923af-f8e1-4e2e-bd49-bd8c9ec8273e
③.编写demo测试
package com.xx.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author aqi
* DateTime: 2021/6/10 3:52 下午
* Description: No Description
*/
@RestController
public class DemoController {
@Value("${nacos.username}")
private String username;
@GetMapping("/demo")
public void demo() {
System.out.println(username);
}
}
成功获取到了配置文件中的信息
④. 动态刷新
新版的naocs默认开启了动态刷新,只要修改在nacos上修改了配置文件,代码层也是会实时生效的,但是我这里经常修改失败,就不演示了,直接删了,重新建一个也是可以生效的
三. 配置详解
nacos config提供了各种配置,包括:自定义配置文件,多配置文件,命名空间,分组,动态刷新等等,更多的配置可以查看官网的参数介绍
# nacos config地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 命名空间
spring.cloud.nacos.config.namespace=3a3923af-f8e1-4e2e-bd49-bd8c9ec8273e
# 动态刷新,默认为true,开启
spring.cloud.nacos.config.refresh-enabled=true
#文件后缀名(默认为properties,默认读取nacos-demo.properties如果修改为yml则读取nacos-demo.yml)
#spring.cloud.nacos.config.file-extension=yml
# 自定义配置文件(前提是nacos中没有nacos-demo.properties配置文件,否则依旧会有限读取nacos-demo.properties中的数据)
#spring.cloud.nacos.config.shared-configs=username.yml
# 定义多个配置文件,可以用于区分mysql.yml,oss.yml,或者其他第三方的配置信息
#spring.cloud.nacos.config.shared-configs[0]=usernamee.yml
#spring.cloud.nacos.config.shared-configs[1]=age.yml
# 也可以通过这种方式来定义多个配置文件,使用group来区分不同的环境,如dev或者prod
#spring.cloud.nacos.config.shared-configs[0].data-id=username.yml
#spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
#spring.cloud.nacos.config.shared-configs[0].refresh=false
四. 总结
由于Eureka闭源,nacos成了非常不错的选择,但是选型的时候最好选择稳定的版本,因为我目前使用的2.0.1偶尔会出现各种bug,但是不影响其作为注册中心的功能,大部分的问题出现在作为配置中心的时候