Nacos快速入门:从安装到实战

发布于:2025-06-12 ⋅ 阅读:(19) ⋅ 点赞:(0)

以下为 Nacos 快速入门指南,结合官方文档与实践经验整理(2025年6月),按模块分步详解:


🔧 一、Nacos 安装

  1. 单机模式(开发测试)
    安装包下载地址: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)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/53e8f47aea8d4e628a82aef99d63a6b7.png#pic_center)
    
    ./startup.sh -m standalone  # Linux/Mac
    startup.cmd -m standalone   # Windows 
    
    • 控制台地址:http://localhost:8848/nacos
    • 安全提示:生产环境需启用鉴权(修改 conf/application.properties):
      nacos.core.auth.enabled=true  # 开启访问控制 
      
  2. 集群模式(生产)

    • 修改 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); 

💎 最佳实践

  1. 健康检查:临时实例 15 秒无心跳标记异常,30 秒自动剔除 。
  2. 安全加固:生产环境开启鉴权并配置 MySQL 持久化 。
  3. 配置规范
    • Data ID 格式:${spring.application.name}.${file-extension}
    • 敏感配置使用 Jasypt 加密 。