一文吃透 Nacos 两大核心能力:注册中心 + 分布式配置中心全流程实操

发布时间:2026/6/14 23:13:06
一文吃透 Nacos 两大核心能力:注册中心 + 分布式配置中心全流程实操 一、Nacos核心两大能力服务注册发现替代Eureka、Consul微服务自动注册、健康检测、负载均衡、优雅上下线分布式配置中心统一托管配置、多环境隔离、配置动态下发刷新无需重启服务替代Spring Cloud Config一体化Web管理控制台国产微服务标配组件。二、Windows单机部署Nacos1、下载官网下载Releases下载压缩包nacos-x.x.x.zip解压路径不能含中文、空格、括号示例D:\soft\nacos-2.3.22、单机模式启动cmd进入nacos/bin目录执行startup.cmd -m standalone日志输出Nacos started successfully in stand alone mode即为启动成功。3、访问后台控制台访问地址http://localhost:8848/nacos默认账号nacos密码nacos端口说明8848HTTP控制台、服务注册端口9848gRPC内部通信端口2.x版本新增停止服务shutdown.cmd持久化补充默认内置Derby嵌入式数据库重启后配置、服务数据全部丢失新建MySQL库执行conf/nacos-mysql.sql初始化表修改conf/application.properties填入MySQL连接地址、账号密码重启Nacos数据持久化到MySQL重启不丢失。三、注册中心服务注册、远程调用1、Maven依赖父工程已管理SpringCloud Alibaba版本子模块引入!-- Nacos 服务注册发现 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency2、生产者配置 application.ymlspring:application:name:order-service# 注册到Nacos的服务唯一标识cloud:nacos:discovery:server-addr:127.0.0.1:88483、启动类开启注册SpringBootApplicationEnableDiscoveryClientpublicclassOrderApplication{publicstaticvoidmain(String[]args){SpringApplication.run(OrderApplication.class,args);}}4、验证注册结果Nacos控制台 → 服务管理 → 服务列表可看到order-service实例状态为UP健康。5、消费者调用负载均衡消费者同样引入discovery依赖、配置Nacos地址、添加EnableDiscoveryClient。① RestTemplate开启负载均衡BeanLoadBalancedpublicRestTemplaterestTemplate(){returnnewRestTemplate();}② 调用直接写服务名不用IP端口// lb:// 开启负载均衡自动从Nacos拉取实例列表Stringurlhttp://order-service/order/get/1;StringresrestTemplate.getForObject(url,String.class);6、常用运维操作权重调整编辑实例权重0~100权重越高流量越大权重0不再接收新请求优雅下线临时实例/持久实例临时实例服务下线自动剔除持久实例手动删除。四、配置中心1、新增依赖!-- Nacos配置中心 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency2.x 新版无需引入bootstrap启动器不需要bootstrap.yml全部配置写在application.yml。2、核心语法spring.config.importspring:application:name:order-serviceprofiles:active:dev# 新版核心配置导入Nacos远程配置config:import:# optional拉取配置失败不阻塞本地启动refreshEnabledtrue 开启动态刷新-optional:nacos:order-service-dev.yml?refreshEnabledtruecloud:nacos:server-addr:127.0.0.1:8848config:namespace:publicgroup:DEFAULT_GROUP语法拆解optional:可选拉取本地调试网络不通也能正常启动去掉则启动失败order-service-dev.yml严格对应Nacos后台创建的Data IDrefreshEnabledtrue后台修改配置发布后应用无需重启自动生效。3、Nacos后台创建配置配置管理 → 配置列表 → 新建配置Data IDorder-service-dev.yml配置格式YAML配置内容custom:payType:aliPaytimeout:30004、代码读取配置自动动态刷新方式1ValueValue(${custom.payType})privateStringpayType;方式2ConfigurationProperties批量绑定ComponentConfigurationProperties(prefixcustom)publicclassCustomConfig{privateStringpayType;privateIntegertimeout;}5、多配置、共享配置写法多个公共配置、业务私有配置同时导入spring:config:import:# 业务独有配置-optional:nacos:order-service-dev.yml?refreshEnabledtrue# 全局公共共享配置-optional:nacos:common-dev.yml?groupCOMMONrefreshEnabledtrue五、Nacos多环境隔离方案NamespaceGroup1、Namespace命名空间环境级隔离推荐dev、test、prod三套环境互相完全隔离服务、配置互不互通。控制台命名空间 → 新建命名空间生成唯一namespace ID客户端指定namespacespring.cloud.nacos.discovery.namespace:dev-xxxx-uuidspring.cloud.nacos.config.namespace:dev-xxxx-uuid2、Group分组同环境业务线隔离同一命名空间内按订单、用户、支付业务分组区分默认DEFAULT_GROUP。spring.cloud.nacos.config.group:ORDER_GROUP六、Gateway网关整合Nacos动态路由网关依赖discovery无需硬编码后端IP通过服务名负载均衡转发spring:cloud:gateway:routes:-id:order-routeuri:lb://order-service# lb代表Nacos负载均衡predicates:-Path/order/**七、高频踩坑总结Windows启动必须加-m standalone默认集群模式启动报错新版配置中心不要写bootstrap.yml必须用spring.config.import语法动态配置不刷新检查import拼接refreshEnabledtrue服务注册不上核对server-addr、namespace、group完全一致服务名不要带下划线Derby内存库重启丢失数据生产务必切换MySQL持久化。