标准答案

  1. 就绪探针先失败,让负载均衡停止分发新请求。
  2. 停止新消费,等待已处理消息完成并提交位点;未完成消息应可重新投递。
  3. 在途请求和后台任务受 shutdown deadline 约束,无法完成的工作保存状态或取消。
  4. 关闭顺序要避免先关数据库连接再让业务线程继续运行。

题目解析

优雅停机应先让就绪探针失败并等待流量摘除,再停止新 HTTP 请求、消息消费和定时任务,最后在 deadline 内完成或转移在途工作。不同入口都要有明确的停止状态。

消息位点只能在业务处理达到可恢复边界后提交,未完成消息应重新投递;长任务和外部调用无法立即取消时,要保存状态并让后续流程接管。

停机 deadline 到达后需要有强制关闭和告警路径。关闭顺序应让业务线程先停止,再关闭连接池、执行器和日志,避免资源先关导致二次失败。

常见误区

  • 误区:收到 SIGTERM 立即退出。改正:执行摘流量、停止新工作、处理在途任务和有限冲刷。
  • 误区:只停止 Web 请求不停止消费者。改正:同时暂停消息、定时任务和后台执行器,并保存未完成状态。
  • 误区:停机无限等待导致部署卡住。改正:设置总 deadline,超时后按可恢复策略强制退出并告警。

作者信息