标准答案
- 缓存故障时只允许有限回源,必要时返回短暂旧值或关闭非核心功能,避免数据库被瞬间打穿。
- 消息故障时应暂停或限制非关键事件生产,核心写入要保存可恢复状态,不能静默丢弃。
- 搜索故障时按业务提供数据库小范围查询、最近记录或明确错误;关键权限和状态仍回主库。
- 降级开关、限流、熔断、告警和恢复验证应提前设计,并区分读请求、写请求和高风险操作。
题目解析
降级首先保护核心事实和剩余容量。缓存故障可以有限回源或返回允许的旧值,消息故障可以暂停低价值生产,搜索故障可以提供有限列表;三者都不能把未确认的写入伪装成成功。
降级开关应按读、写、租户和功能拆分,并设置回源上限、熔断、超时和恢复条件。搜索和缓存的降级查询也要有范围和成本边界,不能把压力无界转给数据库。
用户需要知道结果是否完整或处于处理中,系统还要保留消息、缓存、索引和业务对账路径。组件恢复后应先小流量验证,再逐步解除保护。
常见误区
- 误区:缓存挂了就无限回源。改正:限制回源并发,使用旧值、有限列表或快速失败保护数据库。
- 误区:消息发送失败后直接吞错。改正:保存可恢复的事件或返回明确失败,不能让业务事实与下游状态失去证据。
- 误区:搜索降级到无条件全表扫描。改正:限制查询范围和复杂度,必要时快速失败或提供最近数据。