微服务滚动法布

滚动发布:1.启动新的服务并进行健康检查------2.新服务启动------3.杀老服务-----4.发送curl到nacos下线---5.等待10S-------6.杀老服务

在Nacos中,服务实例的上下线状态是由服务实例自身通过心跳机制与Nacos服务器交互来维持和控制的。当服务实例启动时,它们会向Nacos注册,并开始定期发送心跳(默认每隔5秒一次)来表明自己的在线状态。如果Nacos服务器在一段时间内(默认15秒)没有收到服务实例的心跳,则会认为该实例处于不健康状态,并在后续一段时间(默认30秒)后将其从服务列表中移除,即视为下线。

当你在Nacos控制台上手动将一个服务实例标记为下线时,实际上是Nacos服务器收到了下线指令并将实例状态更新为下线。然而,如果你随后重新发布服务(比如重启服务实例),而服务实例在启动时仍然按照常规流程向Nacos注册并发送心跳,那么服务实例就会再次显示为上线状态。

出现有时点击下线后,再次发布服务实例又变为上线状态的情况,原因可能包括:

服务实例未正确处理下线逻辑:服务实例在接收到下线信号后,如果没有立即停止向Nacos发送心跳或者没有在启动时检查自己是否应该保持下线状态,那么一旦服务重新启动,它会像正常情况一样注册并向Nacos报告心跳,从而导致它看上去又上线了。

下线操作未持久化:如果服务实例的下线状态没有被持久化存储,或者存储的状态没有在实例重新启动时被读取并应用,那么服务实例会忘记自己先前被下线的事实。

网络延迟或故障:在某些情况下,由于网络问题,下线指令可能并未成功到达服务实例,或者实例下线后Nacos服务器未能及时感知到实例心跳停止,进而造成实例重新上线的现象。

为了确保服务实例能够准确地响应下线操作并在重新发布时不自动上线,应当确保服务实例在启动时检查自身是否应该处于下线状态,如果是,则不应继续向Nacos注册和发送心跳。此外,也可以考虑结合服务治理框架或服务部署脚本,在下线后采取更严格的控制措施,例如暂停服务进程、调整负载均衡策略等。

相关推荐
gyx_这个杀手不太冷静4 小时前
Agent开发进阶指南(第 2 章):Agent 运行全流程拆解、上下文窗口、流式输出、记忆系统与 Function Call 实战
前端·架构·agent
anyup4 小时前
像这种问题千万别自己动手,否则你可太看不起 AI 了
前端·架构·trae
阳明山水6 小时前
销量预测2026下半年:新架构、新基准与新共识
人工智能·深度学习·算法·机器学习·架构
NutShell Wang6 小时前
DeepSeek-V4-Flash正式版深度拆解:不换架构,后训练如何让Agent能力暴涨7倍
人工智能·ai·架构·agent·后训练·deepseek
小程故事多_806 小时前
时序检索型AI知识库落地思考,从向量元数据到双架构工程化落地全梳理
人工智能·架构
Zhang~Ling7 小时前
手写进程池:基于匿名管道的 Master-Slave 架构实战
linux·服务器·架构
誰能久伴不乏7 小时前
深入解析 C++ STL 底层原理:从设计哲学到内存收割机
c++·架构·stl
ACP广源盛139246256738 小时前
GSV6155@ACP# Type-C 视频信号转换芯片:技术架构、工程痛点适配与落地场景分析
大数据·c语言·开发语言·人工智能·分布式·嵌入式硬件·架构
TunerT_TQ9 小时前
Valhalla 静态工程审阅 #012|Hertz 源码证据驱动评测【大厂开源基础设施特辑】
测试工具·微服务·开源·github·字节跳动·cloudwego·http框架
iLinuxUser9 小时前
V4L2 架构文档
架构