一、什么是Spring Cloud Alibaba Nacos?
-
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用
-
Spring Cloud Alibaba Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
二、它有哪些特性?
-
服务发现和服务健康监测
支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。
-
动态配置服务
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
-
动态 DNS 服务
动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
-
服务及其元数据管理
支持从微服务平台建设的视角管理数据中心的所有服务及元数据。
三、下载和使用
-
下载
下载地址
:https://github.com/alibaba/nacos/releases -
解压目录介绍
# bin目录 -存放脚本文件 # conf目录 -存放配置文件 # target目录 -存放依赖文件 # data目录 -存放数据文件 # logs目录 -存放日志文件
-
启动服务
# 解压后进入bin目录 # 单节点启动 ./startup.cmd -m standalone ./startup.sh -m standalone # 多节点启动 ./startup.cmd ./startup.sh
-
测试
访问地址
: http://localhost:8848/nacos(用户密码默认都是nacos)
四、作为注册中心使用
-
添加依赖
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
-
添加配置
server: port: 8081 spring: application: name: nacos-service cloud: nacos: discovery: server-addr: localhost:8848 service: ${spring.application.name} management: endpoints: web: exposure: include: '*'
-
测试
启动服务后访问地址
:http://localhost:8848/nacos
五、作为配置中心使用
-
添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
-
添加配置
-
项目配置
server: port: 9000 spring: application: name: nacos-config profiles: active: dev cloud: nacos: discovery: # 注册中心地址 server-addr: localhost:8848 # 注册中心服务名 service: ${spring.application.name} config: # 配置中心地址 server-addr: localhost:8848 # 配置文件所在空间 namespace: 命名空间ID # 配置文件所在组 group: 组名 # 配置文件扩展名 file-extension: yaml
-
Nacos配置
# 文件命名规则:应用名称-配置环境-配置文件扩展名 ${application.name}-${profiles.active}.${config.file-extension}
-
namespace
用于标识某个空间(默认:public)
-
group
用于标识某个分组(默认:DEFAULT_GROUP)
-
dataid
用于标识某个具体的文件
-
-
-
编写控制器类
@RestController @RefreshScope public class ConfigController { @Value("${name}") private String name; @GetMapping("/configInfo") public String getConfigInfo() { return name; } }
-
测试
访问地址
:http://localhost:9000/configInfo打印字符串:zhangsan
修改Nacos配置,再次访问地址:http://localhost:9000/configInfo,发现配置自动进行了刷新
打印字符串:lisi
【源码地址】:GitHub