nacos是阿里开源的分布式服务治理工具,集成了Eureka和分布式配置中心的功能,包括注册中心,配置中心等
nacos下载地址
windows使用cmd直接运行便可,mac使用sh,进入bin目录下,执行(standalone代表着单机模式运行,非集群模式)
sh startup.sh -m standalone
nacos默认地址
这里使用的是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
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
命名空间可以用来区分不同的配置文件,也可以用来区分不同的服务,类似创建了一个文件夹
这里需要按照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
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,但是不影响其作为注册中心的功能,大部分的问题出现在作为配置中心的时候