Nacos注册中心:服务注册、发现、健康检测
Nacos注册中心服务注册、发现、健康检测微服务世界里服务之间打招呼的方式不是你好而是你在哪你的 IP 是多少——这就是注册中心干的事。一、注册中心到底解决什么问题单体架构里服务 A 调服务 B直接new一个对象就行因为都在一个进程里。但微服务拆开后订单服务要调商品服务的接口商品服务的 IP 可能随时变化扩容、重启、迁移你总不能把 IP 写死在代码里吧注册中心就是来解决这个问题的。它的核心职责有三条服务地址管理每个服务启动后把自己注册上去调用方从注册中心获取可用实例列表负载均衡基础同一个服务有多个实例注册中心提供列表客户端做负载均衡选择服务健康监控持续检测服务是否存活挂掉的实例自动剔除┌──────────┐ 1.注册(IP:PORT) ┌──────────┐ │ 商品服务-A │ ──────────────────→ │ │ └──────────┘ │ Nacos │ ┌──────────┐ 1.注册(IP:PORT) │ 注册中心 │ │ 商品服务-B │ ──────────────────→ │ │ └──────────┘ └────┬─────┘ │ 2.拉取实例列表 ┌──────────┐ ▼ │ 订单服务 │ ◄────────────────────────┘ └──────────┘ 3.负载均衡选择一个实例调用二、Nacos简介注册中心配置中心两合一Nacos Naming Configuration Service。阿里开源一个组件干两件事注册中心服务注册与发现对标 Eureka配置中心统一配置管理与动态刷新对标 Spring Cloud Config为什么选 Nacos 而不是 Eureka除了 Eureka 停更这个硬伤Nacos 还有几个杀手锏特性EurekaNacos配置中心不支持内置健康检测客户端心跳心跳 服务端主动探测实例类型临时实例临时实例 永久实例一致性协议APAP 模式AP CP 可切换控制台简陋功能丰富可视化管理三、Nacos安装启动Docker 一行搞定生产环境建议用集群模式但开发和学习阶段Docker 起一个 standalone 实例最方便# 拉取 Nacos 2.x 镜像dockerpull nacos/nacos-server:v2.3.0# 单机模式启动standalonedockerrun-d\--namenacos\-eMODEstandalone\-eJVM_XMS256m\-eJVM_XMX256m\-p8848:8848\-p9848:9848\nacos/nacos-server:v2.3.0注意Nacos 2.x 新增了 gRPC 通信端口默认是主端口 1000 偏移。8848 对应的 gRPC 端口是 9848别忘了一起映射否则客户端连接会报错。启动后访问控制台http://localhost:8848/nacos默认账号密码都是nacos。四、SpringBoot 整合 Nacos三步注册以无人售货柜的商品服务product-service为例整合 Nacos 注册中心。第一步添加依赖dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency第二步application.yml 配置spring:application:name:product-service# 服务名注册到 Nacos 的名称cloud:nacos:discovery:server-addr:127.0.0.1:8848# Nacos 地址namespace:public# 命名空间默认 publicgroup:DEFAULT_GROUP# 分组默认 DEFAULT_GROUP第三步启动类加注解SpringBoot 3.x 可省略SpringBootApplicationEnableDiscoveryClient// SpringBoot 3.x SpringCloud 2023 可省略自动装配publicclassProductServiceApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ProductServiceApplication.class,args);}}启动服务后打开 Nacos 控制台 → 服务管理 → 服务列表就能看到product-service注册上去了。五、服务发现两种方式调别人还是无人售货柜项目订单服务order-service要调用商品服务的接口。有两种方式5.1 DiscoveryClient RestTemplate手动拉取RestControllerpublicclassOrderController{AutowiredprivateRestTemplaterestTemplate;AutowiredprivateDiscoveryClientdiscoveryClient;// Spring Cloud 提供的发现客户端GetMapping(/order/create)publicStringcreateOrder(){// 从 Nacos 拉取 product-service 的实例列表ListServiceInstanceinstancesdiscoveryClient.getInstances(product-service);if(instances.isEmpty()){thrownewRuntimeException(商品服务不可用);}// 简单负载均衡取第一个实际应轮询ServiceInstanceinstanceinstances.get(0);Stringurlinstance.getUri()/product/info?productId1001;returnrestTemplate.getForObject(url,String.class);}}这种方式比较原始适合理解原理。实际开发中用下面的方式。5.2 LoadBalanced RestTemplate自动负载均衡ConfigurationpublicclassRestConfig{BeanLoadBalanced// 关键注解加上这个RestTemplate 自动具备负载均衡能力publicRestTemplaterestTemplate(){returnnewRestTemplate();}}调用时直接用服务名替代 IPGetMapping(/order/create)publicStringcreateOrder(){// 直接用服务名 product-service不用关心 IP 和端口Stringurlhttp://product-service/product/info?productId1001;returnrestTemplate.getForObject(url,String.class);}LoadBalanced注解背后的原理是拦截器拦截 HTTP 请求把 URL 中的服务名替换成从 Nacos 拉取的实际 IP:PORT再用轮询策略选一个实例。底层负载均衡器从 Ribbon 换成了 Spring Cloud LoadBalancer2023.x 版本。六、健康检测机制心跳保活Nacos 区分两种实例类型健康检测方式不同实例类型健康检测方式不健康后适用场景临时实例默认客户端心跳上报5秒一次超时自动剔除需要弹性伸缩的服务永久实例Nacos 服务端主动探测标记为不健康不剔除数据库、缓存等基础服务临时实例心跳机制详解客户端 Nacos │ │ │──── 心跳上报每 5 秒─────────→│ 实例状态健康 │ │ │ 15 秒未收到心跳 │ │ │ 实例状态不健康 │ │ │ 30 秒未收到心跳 │ │ │ 实例状态删除5 秒客户端上报一次心跳确认自己活着15 秒未收到心跳标记实例为不健康healthyfalse30 秒仍未收到心跳彻底删除实例这也就是为什么你 kill 掉一个服务后Nacos 控制台里的实例不会立刻消失——它需要等心跳超时。七、集群模式高可用的关键生产环境不能只跑一个 Nacos 实例挂了全盘皆输。Nacos 集群至少 3 个节点推荐 5 个奇数个Raft 协议投票需要多数派。集群搭建核心要点数据存储用 MySQLstandalone 模式用嵌入式数据库集群模式必须外接 MySQL节点配置一致cluster.conf 文件里写上所有节点 IP前面挂 Nginx客户端连 Nginx 地址Nginx 转发到后端 Nacos 集群┌─────────┐ 客户端 ──────────│ Nginx │ └────┬────┘ ┌───────┬────┴────┬───────┐ ▼ ▼ ▼ ▼ ┌──────┐ ┌──────┐ ┌──────┐ │Nacos1│ │Nacos2│ │Nacos3│ └──┬───┘ └──┬───┘ └──┬───┘ └────────┼────────┘ ▼ ┌──────────┐ │ MySQL │ ← 集群数据持久化 └──────────┘cluster.conf配置示例192.168.1.101:8848 192.168.1.102:8848 192.168.1.103:8848八、Nacos 控制台可视化管理Nacos 控制台提供了完整的可视化管理界面服务列表查看所有注册的服务、实例数量、健康实例数实例详情点击服务名查看每个实例的 IP、端口、权重、健康状态上下线操作可以手动将实例标记为下线healthyfalse流量不再路由到该实例常用于灰度发布和优雅停机权重配置是一个实用功能给不同实例设置不同权重权重高的实例分配更多流量。比如新版本的实例先设置低权重逐步调高实现灰度发布。九、常见问题排查问题1服务注册不上 Nacos排查步骤确认 Nacos 服务正常运行curl http://localhost:8848/nacos/v1/ns/operator/metrics确认spring.application.name已配置确认spring.cloud.nacos.discovery.server-addr地址正确查看启动日志中是否有 Nacos 注册相关报错问题2服务注册上了但被频繁剔除常见原因是心跳间隔过大或网络抖动。可以检查spring:cloud:nacos:discovery:heart-beat-interval:5000# 心跳间隔毫秒默认 5000heart-beat-timeout:15000# 心跳超时毫秒默认 15000如果服务在 Kubernetes 环境中还要注意 Pod 的 liveness probe 和 Nacos 心跳的冲突问题。十、总结注册中心是微服务架构的基石。Nacos 一个组件同时搞定注册中心和配置中心standalone 模式开发够用集群模式生产够稳。核心记住三点服务通过spring.application.name注册、调用方用LoadBalanced 服务名调用、健康靠 5 秒心跳保活。

相关新闻

LLaMA-Factory数据生成:从零构建高质量微调数据集

LLaMA-Factory数据生成:从零构建高质量微调数据集

LLaMA-Factory数据生成:从零构建高质量微调数据集 【免费下载链接】LlamaFactory Unified Efficient Fine-Tuning of 100 LLMs & VLMs (ACL 2024) 项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory 在大语言模型(LLM&#xff…

2026/10/18 1:23:37 阅读更多 →
掌控AI创造力:LLaMA-Factory温度参数调优指南

掌控AI创造力:LLaMA-Factory温度参数调优指南

掌控AI创造力:LLaMA-Factory温度参数调优指南 【免费下载链接】LlamaFactory Unified Efficient Fine-Tuning of 100 LLMs & VLMs (ACL 2024) 项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory 你是否曾困惑于AI生成内容为何时而千篇一律…

2026/10/13 12:52:23 阅读更多 →
如何用OpenCore Legacy Patcher让老旧Mac焕发新生:三个核心阶段完全指南

如何用OpenCore Legacy Patcher让老旧Mac焕发新生:三个核心阶段完全指南

如何用OpenCore Legacy Patcher让老旧Mac焕发新生:三个核心阶段完全指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher…

2026/10/17 17:34:10 阅读更多 →

最新新闻

REA 免许可证接入 Hopper demo 双平台完整指南:macOS 手动、Linux 全自动、CI 无人值守

REA 免许可证接入 Hopper demo 双平台完整指南:macOS 手动、Linux 全自动、CI 无人值守

REA 免许可证接入 Hopper demo 双平台完整指南:macOS 手动、Linux 全自动、CI 无人值守 【免费下载链接】rea Reverse engineer anything with agents, from app behavior down to native binaries. 项目地址: https://gitcode.com/GitHub_Trending/rea2/rea …

2026/10/18 1:23:44 阅读更多 →
三步拿到LRC歌词:163MusicLyrics音乐歌词提取完整指南

三步拿到LRC歌词:163MusicLyrics音乐歌词提取完整指南

三步拿到LRC歌词:163MusicLyrics音乐歌词提取完整指南 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 163MusicLyrics 是一款开源的音乐歌词提取工具&#xf…

2026/10/18 1:23:44 阅读更多 →
为什么大模型需要‘内置护栏‘?揭秘gpt-oss-120b-singprobe如何让模型自己监督自己

为什么大模型需要‘内置护栏‘?揭秘gpt-oss-120b-singprobe如何让模型自己监督自己

【免费下载链接】gpt-oss-120b-singprobe 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/gpt-oss-120b-singprobe 点击查看 免费下载 大模型落地最头疼的问题之一就是安全:回答可能不安全、可能"一本正经地胡说八道"。gpt-oss-12…

2026/10/18 1:23:44 阅读更多 →
完整课程地图:一条实用的 CS 自学路线

完整课程地图:一条实用的 CS 自学路线

完整课程地图:一条实用的 CS 自学路线 【免费下载链接】cs-self-learning 计算机自学指南 项目地址: https://gitcode.com/GitHub_Trending/cs/cs-self-learning 这个仓库把 MIT、CMU、Stanford 等名校的优质开源课程按方向整理成一张课程地图,每…

2026/10/18 1:23:44 阅读更多 →
SpringBoot+Vue3笔记分享网站系统设计与实现

SpringBoot+Vue3笔记分享网站系统设计与实现

先说个背景。我帮人做了不少“课程设计级”的 Web 项目,发现一个规律:同样是笔记记录分享网站,有人做得像博客后台,点开全是页面堆砌;有人做得像内容社区,注册、发笔记、设公开、打标签、被搜索、被浏览&am…

2026/10/18 1:23:44 阅读更多 →
folium地图资源本地化指南:彻底解决离线/内网JS/CSS加载失败

folium地图资源本地化指南:彻底解决离线/内网JS/CSS加载失败

简介:面向使用地图可视化组件、希望摆脱远程加载缓慢问题的开发者,这份打包内容包含前端依赖的完整静态文件,包括核心地图库、交互脚本、界面框架、图表字体等资源,以及配套的样式源文件和地图标记图片,共77个文件&…

2026/10/18 1:22:43 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →