平台开始替换实例时,旧实例可能仍在处理长请求或消费消息。如果进程直接退出,业务可能只完成一部分。停止过程需要与流量入口、应用行为和任务恢复一起设计。
先停止接收新工作
明确流量摘除与应用停止的顺序,并考虑路由信息传播时间。后台消费者也需要停止认领新任务,避免一边准备退出一边继续接活。具体等待时间应由实际平台与业务验证。
在途工作不都适合无限等待
短请求可以尝试完成,长任务可能需要检查点、重新投递或交给其他实例。写入已经完成的工作应能避免重复执行;无法中断的外部调用要有后续查询与对账方式。
关闭预算覆盖真实工作
平台终止宽限期、应用停止等待与依赖超时需要协调。简单把等待时间全部调大,会延长故障恢复,也未必解决无界任务。应限制任务大小或拆分执行单元。
验收发布中断
在流量和任务运行时滚动更新,确认没有异常增加的失败、永久卡住的任务或重复业务效果。保留停止日志和恢复记录,以便解释每个实例退出时发生了什么。
常见问题:优雅停机能替代幂等吗?
不能。进程可能被强制结束或主机突然故障,可靠业务仍需面对重复与部分成功。
技术参考:Kubernetes:Deployment。具体接口与配置请结合使用版本核对。
将评估落实到你的系统
如果你的 .NET 应用还缺少可重复的部署、观察或恢复流程,可以通过容器化与自动化交付服务梳理现状,约定实施内容、演练场景与运维交接方式。