Nacos 入门指南
2025/9/17大约 3 分钟
Nacos 入门指南
前置知识
在开始本教程之前,建议您具备以下基础知识:
- Java 基础语法
- Spring Boot 基础
- 微服务基本概念
- Maven 构建工具
什么是 Nacos?
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个服务发现和配置管理平台,它提供了:
- 服务发现和服务健康监测:动态注册和发现服务
- 动态配置管理:集中管理应用配置
- 动态 DNS 服务:动态 DNS 解析服务
- 服务及其元数据管理:管理服务元数据和配置
核心功能
mindmap
root((Nacos))
服务管理
服务注册
服务发现
服务健康检查
配置管理
配置存储
配置推送
配置版本管理
DNS服务
权重路由
负载均衡
元数据管理
服务元数据
配置元数据
Nacos 架构
基本架构
graph TB
Client[客户端] --> |服务注册/发现| Server[Nacos服务端]
Client --> |配置获取/监听| Server
Server --> |集群协调| Server2[其他节点]
Server --> DB[(持久化存储)]
核心组件
- Naming Service:服务注册中心
- Config Service:配置服务中心
- Consistency Protocol:一致性协议
- Nacos Client:客户端 SDK
快速开始
1. 下载并启动 Nacos
提示
本教程使用 Nacos 2.x 版本
# 下载 Nacos
wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.zip
# 解压
unzip nacos-server-2.2.0.zip
# 启动(单机模式)
cd nacos/bin
sh startup.sh -m standalone
2. 创建 Spring Boot 项目
在 pom.xml
中添加依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
</parent>
<dependencies>
<!-- Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3. 配置文件
在 application.yml
中添加 Nacos 配置:
spring:
application:
name: nacos-demo
cloud:
nacos:
discovery:
server-addr: localhost:8848
username: nacos # 可选,默认 nacos
password: nacos # 可选,默认 nacos
server:
port: 8080
4. 启动类
package com.example.nacos;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosDemoApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDemoApplication.class, args);
}
}
基础配置说明
服务发现配置
spring:
cloud:
nacos:
discovery:
# 服务器地址
server-addr: localhost:8848
# 命名空间ID
namespace: public
# 服务分组
group: DEFAULT_GROUP
# 集群名称
cluster-name: DEFAULT
# 是否临时实例
ephemeral: true
配置中心配置
spring:
cloud:
nacos:
config:
# 服务器地址
server-addr: localhost:8848
# 配置文件格式
file-extension: yaml
# 配置组
group: DEFAULT_GROUP
# 命名空间
namespace: public
# 共享配置
shared-configs:
- data-id: common.yaml
实战示例
服务注册示例
创建一个简单的服务提供者:
package com.example.nacos;
import lombok.Data;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@GetMapping("/user/info")
public UserInfo getUserInfo() {
return new UserInfo(1L, "nacos", "demo@example.com");
}
}
@Data
class UserInfo {
private Long id;
private String username;
private String email;
public UserInfo(Long id, String username, String email) {
this.id = id;
this.username = username;
this.email = email;
}
}
最佳实践
最佳实践建议
- 命名空间规划:使用命名空间隔离不同环境
- 分组管理:使用分组管理不同应用或业务线
- 配置管理:
- 合理使用配置继承
- 避免频繁变更配置
- 重要配置加密存储
- 服务注册:
- 设置合适的健康检查机制
- 合理配置服务权重
常见问题
1. 服务注册失败
- 检查 Nacos 服务是否正常运行
- 确认配置的服务器地址是否正确
- 查看服务是否有权限访问 Nacos
2. 配置无法更新
- 检查配置的 Data ID 和 Group 是否正确
- 确认是否正确配置了监听器
- 查看是否有配置覆盖的情况
下一步学习
- 了解 Nacos 的服务发现机制
- 学习配置中心的高级特性
- 探索集群部署方案