标准答案
- 启动阶段先加载配置、建立关键依赖、完成必要初始化,再把就绪状态切为可接流量。
- 停机阶段先从负载均衡摘除并停止拉取新消息,避免新的工作继续进入即将退出的实例。
- 对在途 HTTP 请求、批处理和消息消费设置有限的排空时间,到期后按幂等、可重试和可恢复原则中断。
- 停止顺序、超时时间和未完成任务的恢复策略要与编排平台的终止宽限期保持一致。
题目解析
直接 kill 进程会让请求连接断开、消息未确认、临时文件未清理;直接无限等待又会让发布卡住。优雅停机是在可用性与可控发布之间设定明确边界。
消息消费尤其需要区分“停止拉取”与“停止处理”。前者阻止新增负载,后者需要等已拉取消息完成或明确回退。
常见误区
- 收到终止信号后仍继续接新流量。
- 停机时一次性关闭连接池,导致在途请求立即失败。
- 没有记录未完成任务的状态,重启后无法判断是否需要重试。