news 2026/6/15 2:05:56

Nacos服务注册与配置中心实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nacos服务注册与配置中心实战指南

本文详解Nacos的部署配置与实战应用,实现微服务的服务发现和统一配置管理。

前言

微服务架构的两大核心问题:

  • 服务发现:服务实例动态变化,如何找到对方?
  • 配置管理:配置分散各处,如何统一管理?

Nacos是阿里开源的服务发现和配置管理平台:

  • 支持服务注册与发现
  • 支持动态配置管理
  • 支持DNS和HTTP服务发现
  • 支持多环境配置隔离

一、Nacos简介

1.1 核心功能

┌─────────────────────────────────────────────────────────┐ │ Nacos │ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 服务注册与发现 │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ │ │Service A│ │Service B│ │Service C│ │ │ │ │ │ 实例1 │ │ 实例1 │ │ 实例1 │ │ │ │ │ │ 实例2 │ │ 实例2 │ │ 实例2 │ │ │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 配置管理中心 │ │ │ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ │ │ │ │ dev配置 │ │ test配置 │ │ prod配置 │ │ │ │ │ └───────────┘ └───────────┘ └───────────┘ │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘

1.2 与其他组件对比

功能NacosEurekaConsulZookeeper
服务发现
配置管理
一致性协议AP/CPAPCPCP
健康检查TCP/HTTP心跳TCP/HTTP心跳
管理界面

1.3 数据模型

Namespace(命名空间) └── Group(分组) └── Service(服务) └── Cluster(集群) └── Instance(实例) 配置: Namespace → Group → DataId

二、安装部署

2.1 单机部署(Docker)

# 启动Nacosdocker run -d --name nacos\-eMODE=standalone\-eNACOS_AUTH_ENABLE=true\-eNACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789\-eNACOS_AUTH_IDENTITY_KEY=nacos\-eNACOS_AUTH_IDENTITY_VALUE=nacos\-p8848:8848\-p9848:9848\-p9849:9849\nacos/nacos-server:v2.3.0# 访问控制台# http://localhost:8848/nacos# 用户名/密码:nacos/nacos

2.2 Docker Compose部署

# docker-compose.ymlversion:'3.8'services:nacos:image:nacos/nacos-server:v2.3.0container_name:nacosenvironment:-MODE=standalone-SPRING_DATASOURCE_PLATFORM=mysql-MYSQL_SERVICE_HOST=mysql-MYSQL_SERVICE_PORT=3306-MYSQL_SERVICE_DB_NAME=nacos-MYSQL_SERVICE_USER=nacos-MYSQL_SERVICE_PASSWORD=nacos123-NACOS_AUTH_ENABLE=true-NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789-NACOS_AUTH_IDENTITY_KEY=nacos-NACOS_AUTH_IDENTITY_VALUE=nacosports:-"8848:8848"-"9848:9848"-"9849:9849"depends_on:-mysqlrestart:unless-stoppedmysql:image:mysql:8.0container_name:nacos-mysqlenvironment:-MYSQL_ROOT_PASSWORD=root123-MYSQL_DATABASE=nacos-MYSQL_USER=nacos-MYSQL_PASSWORD=nacos123volumes:-mysql_data:/var/lib/mysql-./mysql-schema.sql:/docker-entrypoint-initdb.d/mysql-schema.sqlports:-"3306:3306"restart:unless-stoppedvolumes:mysql_data:
# 下载初始化SQLwgethttps://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql# 启动docker compose up -d

2.3 集群部署

# docker-compose-cluster.ymlversion:'3.8'services:nacos1:image:nacos/nacos-server:v2.3.0hostname:nacos1environment:-MODE=cluster-NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848-SPRING_DATASOURCE_PLATFORM=mysql-MYSQL_SERVICE_HOST=mysql-MYSQL_SERVICE_DB_NAME=nacos-MYSQL_SERVICE_USER=nacos-MYSQL_SERVICE_PASSWORD=nacos123-NACOS_AUTH_ENABLE=true-NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789ports:-"8848:8848"nacos2:image:nacos/nacos-server:v2.3.0hostname:nacos2environment:-MODE=cluster-NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848-SPRING_DATASOURCE_PLATFORM=mysql-MYSQL_SERVICE_HOST=mysql-MYSQL_SERVICE_DB_NAME=nacos-MYSQL_SERVICE_USER=nacos-MYSQL_SERVICE_PASSWORD=nacos123-NACOS_AUTH_ENABLE=true-NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789ports:-"8849:8848"nacos3:image:nacos/nacos-server:v2.3.0hostname:nacos3environment:-MODE=cluster-NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848-SPRING_DATASOURCE_PLATFORM=mysql-MYSQL_SERVICE_HOST=mysql-MYSQL_SERVICE_DB_NAME=nacos-MYSQL_SERVICE_USER=nacos-MYSQL_SERVICE_PASSWORD=nacos123-NACOS_AUTH_ENABLE=true-NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789ports:-"8850:8848"

三、服务注册与发现

3.1 Spring Cloud集成

添加依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2022.0.0.0</version></dependency>

配置:

# application.ymlspring:application:name:user-servicecloud:nacos:discovery:server-addr:127.0.0.1:8848namespace:publicgroup:DEFAULT_GROUPusername:nacospassword:nacos

启用服务发现:

@SpringBootApplication@EnableDiscoveryClientpublicclassUserServiceApplication{publicstaticvoidmain(String[]args){SpringApplication.run(UserServiceApplication.class,args);}}

3.2 服务调用

// 使用LoadBalancer@ConfigurationpublicclassRestTemplateConfig{@Bean@LoadBalancedpublicRestTemplaterestTemplate(){returnnewRestTemplate();}}// 调用服务@ServicepublicclassOrderService{@AutowiredprivateRestTemplaterestTemplate;publicUsergetUser(LonguserId){// 直接使用服务名returnrestTemplate.getForObject("http://user-service/users/"+userId,User.class);}}

3.3 OpenFeign调用

@FeignClient(name="user-service")publicinterfaceUserClient{@GetMapping("/users/{id}")UsergetUser(@PathVariable("id")Longid);}

四、配置管理

4.1 集成配置中心

添加依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2022.0.0.0</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>

配置:

# bootstrap.ymlspring:application:name:user-serviceprofiles:active:devcloud:nacos:config:server-addr:127.0.0.1:8848file-extension:yamlnamespace:publicgroup:DEFAULT_GROUPusername:nacospassword:nacos

4.2 在Nacos创建配置

Data ID: user-service-dev.yaml Group: DEFAULT_GROUP 配置格式: YAML 配置内容: server: port: 8080 app: name: 用户服务 version: 1.0.0 database: url: jdbc:mysql://localhost:3306/users username: root password: 123456

4.3 读取配置

@RestController@RefreshScope// 支持动态刷新publicclassConfigController{@Value("${app.name}")privateStringappName;@Value("${app.version}")privateStringappVersion;@GetMapping("/config")publicMap<String,String>getConfig(){Map<String,String>config=newHashMap<>();config.put("appName",appName);config.put("appVersion",appVersion);returnconfig;}}

4.4 配置监听

@ComponentpublicclassConfigListenerimplementsApplicationListener<NacosConfigReceivedEvent>{@OverridepublicvoidonApplicationEvent(NacosConfigReceivedEventevent){System.out.println("配置变更: "+event.getDataId());// 处理配置变更逻辑}}

五、多环境配置

5.1 命名空间隔离

命名空间规划: ├── dev(开发环境) │ └── user-service-dev.yaml ├── test(测试环境) │ └── user-service-test.yaml └── prod(生产环境) └── user-service-prod.yaml
# bootstrap-dev.ymlspring:cloud:nacos:config:namespace:dev-namespace-id# bootstrap-prod.ymlspring:cloud:nacos:config:namespace:prod-namespace-id

5.2 分组隔离

# 不同项目使用不同Groupspring:cloud:nacos:config:group:PROJECT_A

5.3 共享配置

spring:cloud:nacos:config:shared-configs:-data-id:common.yamlgroup:DEFAULT_GROUPrefresh:trueextension-configs:-data-id:database.yamlgroup:DEFAULT_GROUPrefresh:true

六、多站点部署

6.1 场景

企业多机房部署: - 总部机房:Nacos集群 + 服务A、B、C - 分部机房:Nacos集群 + 服务D、E、F - 需要跨机房服务调用

6.2 组网方案

使用组网软件(如星空组网)打通多机房网络:

┌───────────────────────────────────────────────────────────┐ │ 组网虚拟局域网 │ │ │ │ ┌────────────────────┐ ┌────────────────────┐ │ │ │ 总部机房 │ │ 分部机房 │ │ │ │ │ │ │ │ │ │ Nacos: 10.10.0.1 │ │ Nacos: 10.10.0.10│ │ │ │ ServiceA:10.10.0.2│ │ ServiceD:10.10.0.11│ │ │ │ ServiceB:10.10.0.3│ │ ServiceE:10.10.0.12│ │ │ │ │ │ │ │ │ └────────────────────┘ └────────────────────┘ │ │ ↑ ↑ │ │ └─────────┬───────────────┘ │ │ │ │ │ 跨机房服务调用 │ └───────────────────────────────────────────────────────────┘

配置方式:

# 总部服务配置spring:cloud:nacos:discovery:server-addr:10.10.0.1:8848# 组网IPconfig:server-addr:10.10.0.1:8848# 分部服务配置spring:cloud:nacos:discovery:server-addr:10.10.0.10:8848# 组网IPconfig:server-addr:10.10.0.10:8848

6.3 Nacos集群同步

# 配置两个Nacos集群数据同步# 使用Nacos的集群同步功能或配置复制

效果:

  • 各机房服务正常注册发现
  • 跨机房服务可相互调用
  • 配置统一管理
  • 网络安全加密

七、运维管理

7.1 健康检查

# API健康检查curlhttp://localhost:8848/nacos/v1/console/health/readiness# 集群状态curlhttp://localhost:8848/nacos/v1/core/cluster/nodes

7.2 监控指标

# prometheus配置scrape_configs:-job_name:'nacos'metrics_path:'/nacos/actuator/prometheus'static_configs:-targets:['nacos:8848']

7.3 数据备份

# 导出配置curl-X GET"http://localhost:8848/nacos/v1/cs/configs?export=true&tenant=&group=DEFAULT_GROUP"\-H"Authorization: Bearer token"\-o nacos_config_backup.zip# 导入配置curl-X POST"http://localhost:8848/nacos/v1/cs/configs?import=true"\-H"Authorization: Bearer token"\-F"file=@nacos_config_backup.zip"

7.4 常见问题

服务注册失败:

# 检查网络连通性telnet nacos-server8848telnet nacos-server9848# gRPC端口# 检查认证配置

配置不生效:

// 确保添加@RefreshScope@RefreshScope@RestControllerpublicclassConfigController{// ...}

八、总结

Nacos使用要点:

  1. 部署方式:生产环境使用集群+MySQL
  2. 服务发现:Spring Cloud Alibaba集成
  3. 配置管理:多环境命名空间隔离
  4. 动态刷新:@RefreshScope注解
  5. 多机房:组网打通后统一注册
  6. 安全:启用认证,配置鉴权

最佳实践:

☑ 生产环境集群部署(至少3节点) ☑ 使用MySQL持久化 ☑ 启用认证鉴权 ☑ 命名空间环境隔离 ☑ 配置定期备份 ☑ 监控告警配置

参考资料

  1. Nacos官方文档:https://nacos.io/docs/latest/
  2. Nacos GitHub:https://github.com/alibaba/nacos
  3. Spring Cloud Alibaba:https://sca.aliyun.com/docs/2023/

💡建议:先在开发环境单机部署熟悉,生产环境务必集群+MySQL持久化。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 13:20:16

Hugging Face官方出免费AI Agent教程!

2024年被称为是AI Agent的元年&#xff0c;经过了一年的酝酿&#xff0c;各类AI Agent的产品方案层出不穷&#xff0c;比如Dify、扣子等等。在未来&#xff0c;AI Agent无疑也会是AI的一块核心领域。&#x1f917;Hugging Face说&#xff0c;现在就是学AI Agent的最好时机&…

作者头像 李华
网站建设 2026/6/15 13:19:06

数智时代,为什么算力成了“新石油”?

当“新石油”这个词第一次被用来形容算力时&#xff0c;很多人并没有真正理解它的分量。但到了 2024—2025 年&#xff0c;这个比喻正在被反复验证。从大模型竞赛、AIGC 应用爆发&#xff0c;到企业全面推进数智化转型&#xff0c;算力&#xff0c;已经从 IT 资源升级为决定产业…

作者头像 李华
网站建设 2026/6/10 15:30:08

Netty的心跳机制怎么实现的?

大家好&#xff0c;我是锋哥。今天分享关于【Netty的心跳机制怎么实现的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Netty的心跳机制怎么实现的&#xff1f; 超硬核AI学习资料&#xff0c;现在永久免费了&#xff01; Netty 的心跳机制是通过 IdleStateHandler 心…

作者头像 李华
网站建设 2026/6/15 16:45:39

MAF快速入门(3)聊天记录持久化到数据库

准备工作在今天的这个案例中&#xff0c;我们创建了一个.NET控制台应用程序&#xff0c;安装了以下NuGet包&#xff1a;Microsoft.EntityFrameworkCore.SqliteMicrosoft.Agents.AI.OpenAIMicrosoft.Extensions.AI.OpenAI我们的配置文件中定义了LLM API的信息&#xff1a;复制代…

作者头像 李华
网站建设 2026/6/14 19:17:24

MobilePerf安卓性能测试工具:从入门到精通的终极指南

MobilePerf安卓性能测试工具&#xff1a;从入门到精通的终极指南 【免费下载链接】mobileperf Android performance test 项目地址: https://gitcode.com/gh_mirrors/mob/mobileperf 想要快速掌握安卓应用性能测试的核心技能却无从下手&#xff1f;MobilePerf作为一款轻…

作者头像 李华
网站建设 2026/6/14 17:24:22

基于VUE的贫困地区人口普查系统[VUE]-计算机毕业设计源码+LW文档

摘要&#xff1a;贫困地区人口普查对于制定精准扶贫政策、合理分配资源至关重要。本文介绍了一种基于VUE框架开发的贫困地区人口普查系统&#xff0c;详细阐述了系统的需求分析、技术选型、架构设计、功能模块设计及实现过程。该系统涵盖系统用户管理、人口信息管理、统计区域管…

作者头像 李华