Nacos 0 基础入门及应用范例
Nacos 是阿里巴巴开源的一款“一站式”解决方案,旨在简化微服务架构中的核心难题。它的核心定位非常明确:服务注册中心 + 动态配置中心。
对于初学者来说,可以把它想象成微服务世界的“总机”和“公告板”:
- 总机(服务注册中心):所有服务启动后都来这里登记自己的地址(IP和端口)。当A服务需要调用B服务时,直接问Nacos要B的地址即可,无需硬编码。
- 公告板(动态配置中心):所有服务的配置文件都集中存放在这里。修改配置后,Nacos会实时通知所有相关服务,实现“配置热更新”,无需重启应用。
下面,我们将从零开始,带你完成 Nacos 的入门与实战。
🚀 第一步:5分钟快速启动 Nacos
Nacos 的启动非常简单,适合本地快速体验。
-
下载与解压
从 Nacos 的 GitHub Releases 页面下载最新稳定版(如 2.3.0)的压缩包(zip 或 tar.gz)。 -
单机模式启动
解压后,进入nacos/bin目录,根据你的操作系统执行启动命令。-m standalone参数表示以单机模式启动,适合开发和测试环境。- Windows:
startup.cmd -m standalone - Linux/Mac:
sh startup.sh -m standalone
- Windows:
-
访问控制台
启动成功后,在浏览器中访问http://localhost:8848/nacos。- 默认账号/密码:
nacos/nacos
- 默认账号/密码:
🛠️ 第二步:实战应用一 —— 动态配置中心
这是 Nacos 最常用、最能体现价值的功能。我们将创建一个 Spring Boot 应用,并从 Nacos 动态获取配置。
-
引入依赖
在你的 Spring Boot 项目的pom.xml中添加 Nacos Config 的依赖。<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2022.0.0.0</version> <!-- 请根据你的Spring Boot版本选择适配的版本 --> </dependency> <!-- Spring Boot 2.4+ 版本需要额外添加此依赖,否则bootstrap.yml不生效 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> -
配置
bootstrap.yml
在src/main/resources目录下创建bootstrap.yml文件。它的加载优先级高于application.yml,确保应用启动时能先从 Nacos 拉取配置。spring: application: name: nacos-config-demo # 服务名,将作为Nacos中Data ID的一部分 cloud: nacos: config: server-addr: 127.0.0.1:8848 # Nacos服务地址 file-extension: yaml # 配置文件的格式 -
在 Nacos 控制台创建配置
- 登录 Nacos 控制台,进入“配置管理” -> “配置列表”。
- 点击“+”号新建配置。
- Data ID:
nacos-config-demo.yaml(格式为:${spring.application.name}.${file-extension}) - Group:
DEFAULT_GROUP(保持默认即可) - 配置格式:
YAML - 配置内容:
user: name: Nacos-User age: 26 - 点击“发布”。
-
在代码中读取并动态刷新
创建一个 Controller,使用@Value注解读取配置,并通过@RefreshScope注解开启动态刷新功能。import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RefreshScope // 关键注解:开启配置动态刷新 public class ConfigController { @Value("${user.name}") private String name; @Value("${user.age}") private Integer age; @GetMapping("/user") public String getUser() { return "Name: " + name + ", Age: " + age; } } -
验证
- 启动你的 Spring Boot 应用。
- 访问
http://localhost:8080/user,你会看到返回Name: Nacos-User, Age: 26。 - 回到 Nacos 控制台,修改配置内容(例如将
age改为30),再次点击“发布”。 - 无需重启应用,直接刷新浏览器,你会发现返回的内容已经实时更新为
Name: Nacos-User, Age: 30。
🔗 第三步:实战应用二 —— 服务注册与发现
接下来,我们让服务自动注册到 Nacos,并实现服务间的调用。
-
引入依赖
在pom.xml中添加 Nacos Discovery 的依赖。<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2022.0.0.0</version> </dependency> -
配置
application.yml
在application.yml中指定 Nacos 服务器地址。spring: application: name: user-service # 服务名称 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 -
开启服务发现
在你的 Spring Boot 启动类上添加@EnableDiscoveryClient注解。import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient // 开启服务发现 public class UserServiceApplication { public static void main(String[] args) { SpringApplication.run(UserServiceApplication.class, args); } } -
验证注册
启动应用后,回到 Nacos 控制台的“服务管理” -> “服务列表”,你就能看到user-service已经成功注册,并且状态为“健康”。 -
服务间调用
假设还有一个order-service需要调用user-service。我们可以使用 OpenFeign 来简化调用。- 在
order-service中引入spring-cloud-starter-openfeign依赖。 - 在启动类上添加
@EnableFeignClients注解。 - 创建一个 Feign 客户端接口:
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @FeignClient(name = "user-service") // 直接写服务名 public interface UserFeignClient { @GetMapping("/user/info") // 对应user-service的接口路径 String getUserInfo(); } - 在
order-service的 Controller 中直接注入并使用UserFeignClient即可,Nacos 会自动完成服务名的解析和负载均衡。
- 在
📊 核心概念与生产建议
- 命名空间 (Namespace):用于隔离不同的环境,如开发(dev)、测试(test)、生产(prod)。
- 分组 (Group):用于对配置或服务进行分组,默认为
DEFAULT_GROUP。 - Data ID:配置的唯一标识,通常由服务名和文件扩展名组成。
生产环境建议:
- 集群部署:生产环境必须部署 Nacos 集群(至少3个节点)以保证高可用性。
- 数据持久化:必须配置外置的 MySQL 数据库来持久化配置和服务信息,替换默认的嵌入式数据库。
- AP/CP 模式:Nacos 默认使用 AP 模式(高可用),适用于服务发现。对于配置中心,它内部使用 CP 模式(强一致性)来保证配置的准确性。
更多推荐




所有评论(0)