什么是 Nacos?
Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
官网:https://nacos.io/zh-cn/index.html
前提条件
您需要先下载 Nacos 并启动 Nacos server,我下载的是目前最新的包nacos-server-1.0.0.zip,解压后直接启动bin目录下startup.cmd,直接访问locahost:8848/nacos/index.html,用户名与密码都是nacos
第二步:新建一个maven项目在pom.xml引入以下包
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
</dependencies>
第三步:新建命名空间
如图我新建了一个dev的命名空间,命名空间为4bbc856e-614c-4b90-af3b-fab9fe566c4e,同时在dev空间下新建了2个DataId
规则参考第四步骤
第四步:bootstrap.properties 接入nacos相关配置
spring.application.name=service-consumer
#nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#propertis 配置方式
#spring.cloud.nacos.config.file-extension=properties
#spring.cloud.nacos.config.group=DEFAULT_GROUP
#yml 配置方式
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=DEV_GROUP
spring.profiles.active=dev
#命名空间ID
spring.cloud.nacos.config.namespace=4bbc856e-614c-4b90-af3b-fab9fe566c4e
spring.cloud.nacos.config.server-addr: localhost:8848
在 Nacos 官网手册介绍 中,dataId
的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profile.active
即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当spring.profile.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。- 通过 Spring Cloud 原生注解
@RefreshScope
实现配置自动更新:
第五步:启动走一波
访问nacos服务此时在服务列表会展示刚刚启动的项目,说明服务注册成功
修改service-consumer-dev.yaml中的配置
查看控制台输出,显示以下信息说明,配置动态更新成功
------------------------------------------------end------------------------------------------------
Nacos vs Spring Cloud
相对于 Spring Cloud Eureka 来说,Nacos 更强大。
Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
更多具体用法和接入可以参考
Nacos 官方文档。