《后端服务的健康检查与优雅下线机制》

34 阅读1分钟

在分布式系统中,节点不可避免会重启、升级、故障。健康检查和优雅下线保证流量不被错误节点接收。

1. 健康检查的目的

  • 确认实例是否可服务。
  • 支持自动摘除故障节点。
  • 防止请求打到不稳定节点。

2. 健康检查类型

  1. 应用层检查:HTTP /health 返回状态码。
  2. 系统层检查:CPU、内存、磁盘监控。
  3. 外部探测:注册中心或负载均衡器周期探测。

3. 常见实现方式

  • Spring Boot Actuator 提供 /actuator/health
  • Kubernetes 通过 livenessProbereadinessProbe 控制流量。
  • Nginx / Consul 周期调用健康检查接口。

4. 优雅下线流程

  1. 将实例从注册中心标记为“下线中”。
  2. 负载均衡器停止分发新请求。
  3. 等待正在处理的请求完成。
  4. 关闭服务并释放资源。

5. 工程实践

  • 所有外部依赖(数据库、缓存、MQ)状态也应纳入健康检测。
  • 对长连接服务需手动关闭连接池。
  • 下线超时后强制中断并记录日志。

结论:健康检查保证服务可感知状态,优雅下线保证系统有序收缩。稳定的服务从不“突然消失”。