以下为 Nacos 快速入门指南,结合官方文档与实践经验整理(2025年6月),按模块分步详解:
🔧 一、Nacos 安装
单机模式(开发测试)
安装包下载地址:https://nacos.io/download/nacos-server/
# 下载 wget https://github.com/alibaba/nacos/releases/download/2.3.2/nacos-server-2.3.2.zip unzip nacos-server-2.3.2.zip cd nacos/bin # 启动(默认账号 nacos/nacos) ./startup.sh -m standalone # Linux/Mac startup.cmd -m standalone # Windows
- 控制台地址:
http://localhost:8848/nacos
- 安全提示:生产环境需启用鉴权(修改
conf/application.properties
):nacos.core.auth.enabled=true # 开启访问控制
- 控制台地址:
集群模式(生产)
- 修改
conf/cluster.conf
添加节点 IP(至少3台) - 切换内置数据库为 MySQL(防数据丢失) :
spring.datasource.platform=mysql db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?useUnicode=true
- 修改
📡 二、服务注册
1. 配置 Nacos 地址
# bootstrap.yml(优先级高于 application.yml)
spring:
application:
name: order-service # 服务名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # Nacos 地址
ephemeral: true # 是否临时实例(默认 true,宕机自动剔除)
2. 启动微服务
在启动类添加注解(可选,Spring Cloud 2020+ 可省略):
@SpringBootApplication
@EnableDiscoveryClient // 启用服务发现
public class OrderApplication { ... }
启动后可在 Nacos 控制台 服务管理 → 服务列表 查看注册实例 。
🔍 三、服务发现与调用
1. 调用方式
① RestTemplate + 负载均衡
@Bean
@LoadBalanced // 开启负载均衡
public RestTemplate restTemplate() {
return new RestTemplate();
}
// 调用示例
String result = restTemplate.getForObject(
"http://user-service/getUser", // 直接使用服务名
String.class
);
② LoadBalancerClient(灵活控制)
@Autowired
private LoadBalancerClient loadBalancerClient;
ServiceInstance instance = loadBalancerClient.choose("user-service");
String url = "http://" + instance.getHost() + ":" + instance.getPort() + "/getUser";
③ DiscoveryClient API(原生查询)
@Autowired
private DiscoveryClient discoveryClient;
List<ServiceInstance> instances = discoveryClient.getInstances("user-service");
⚙️ 四、配置中心集成
1. 导入远程配置
# bootstrap.yml
spring:
config:
import: nacos:service-order.properties # 导入配置
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml # 配置格式(支持 properties/yaml)
namespace: dev # 环境隔离(非必填)
group: DEFAULT_GROUP # 分组(默认 DEFAULT_GROUP)
2. 动态刷新配置
① @RefreshScope
注解
@RefreshScope // 配置变更时刷新此Bean
@RestController
public class ConfigController {
@Value("${app.max.retry:3}")
private int maxRetry;
}
② @ConfigurationProperties
绑定
@Component
@ConfigurationProperties(prefix = "app") // 自动绑定 app.* 配置
@Data // Lombok 生成 getter/setter
public class AppConfig {
private int maxRetry;
private String env;
}
3. 配置隔离三要素
维度 | 作用 | 配置示例 |
---|---|---|
Namespace | 隔离环境(dev/test/prod) | namespace: dev |
Data ID | 配置文件唯一标识 | service-order.yaml |
Group | 业务分组(默认 DEFAULT_GROUP ) |
group: ORDER_GROUP |
通过
NacosConfigManager
可主动监听配置变化:configManager.getConfigService().addListener("dataId", "group", listener);
💎 最佳实践
- 健康检查:临时实例 15 秒无心跳标记异常,30 秒自动剔除 。
- 安全加固:生产环境开启鉴权并配置 MySQL 持久化 。
- 配置规范:
Data ID
格式:${spring.application.name}.${file-extension}
- 敏感配置使用 Jasypt 加密 。