跳转至

部署、可观测性与排障

微服务数量增加后,发布单元、配置、依赖和告警也随之增加。运维必须能回答“现在运行的是哪个版本、依赖谁、变更了什么、用户是否受影响”。

发布闭环

Git 变更
  → CI 测试并构建不可变镜像
  → 更新 Helm/Manifest 中镜像版本
  → Argo CD 同步
  → Readiness 后逐步接流量
  → 观察错误率、延迟、饱和度和业务指标
  → 继续放量或回滚

应用版本、配置版本、数据库迁移和消息 Schema 必须兼容滚动发布时的新旧实例并存。回滚镜像不能自动撤销数据库和外部配置。

每个服务的运行清单

项目 至少应明确
所有权 团队、值班、仓库、文档和升级窗口
依赖 上下游、数据库、缓存、消息、外部接口
资源 requests/limits、容量基线、扩容条件
健康 Startup/Readiness/Liveness 与优雅退出
可观测 RED 指标、结构化日志、Trace、版本和环境标签
恢复 回滚、降级、数据补偿、备份和恢复演练

排障路线

用户现象和影响范围
  → 最近发布/配置/流量变化
  → Gateway 的请求率、错误率、延迟
  → Trace 找到最慢或失败 Span
  → 对应服务实例的资源、日志和依赖
  → 数据库/缓存/消息队列容量与错误

同一故障若所有服务都慢,优先检查共享入口、DNS、网络、身份系统、数据库或节点;只有单版本/单实例异常时,优先比较镜像、配置、节点和流量分布。

必须关联的字段

日志、指标和 Trace 至少统一:

service.name  environment  service.version
cluster  namespace  instance/pod
trace_id  span_id  request/operation

用户 ID、订单号等高基数字段适合在日志/Trace 中按需检索,不应直接作为 Prometheus label,否则会造成时序爆炸。

故障演练

  • 单实例被杀时是否自动恢复且不中断服务。
  • 下游超时是否触发受控重试、熔断和降级。
  • 消息重复、延迟或积压是否可恢复。
  • 配置中心、注册中心和身份系统异常时的行为。
  • 节点维护、可用区故障和容量不足时的调度。
  • 回滚后数据和消息格式是否仍兼容。

详细信号设计、告警和工具落地参见 可观测性