标准答案

  1. 先确认故障范围和恢复顺序,避免在数据库不可用时继续回源或重试放大流量。
  2. 通过全局和租户限流、熔断、保护开关快速拒绝高成本请求,保留健康检查、状态查询或静态内容。
  3. 写请求不能假装成功;可以进入可靠队列或返回明确的稍后重试状态,但必须保证受理证据。
  4. 恢复后按顺序验证数据库、缓存预热、消息补偿和数据对账,逐步解除保护而不是一次性放量。

题目解析

缓存和数据库同时不可用时,系统无法安全确认许多读写结果。此时首先要停止回源和无效重试,快速拒绝高成本或高风险写入,保留健康检查、静态内容和可验证的状态查询。

如果业务允许排队,可以把请求写入可靠队列,但“已受理”必须有持久证据,不能在事实未落地时返回成功。租户限流和功能开关要防止少数流量耗尽剩余容量。

恢复要按数据库、缓存重建、消息补偿和业务对账的顺序进行。预热和放流都应分批,确认命中、错误、复制和数据一致性后再解除保护。

常见误区

  • 误区:故障时把所有请求都重试。改正:暂停无价值重试,按剩余预算和业务风险保留少量可恢复操作。
  • 误区:写入失败却返回成功。改正:返回明确失败或已受理状态,成功必须有可查询的持久证据。
  • 误区:恢复后立即全量预热和放流。改正:分阶段恢复缓存和流量,观察数据库、消息和对账指标。

作者信息