← 中文资源

简体中文版本

添加优雅降级回退

依赖失败时返回陈旧或精简响应,显式标记降级,并验证回退不会掩盖数据完整性问题。

阅读英文原文

回退只用于可选路径

优雅回退在可选依赖失败时保持关键路径存活。推荐、相关条目和非必要个性化可以降级为缓存或空数据;价格、库存、授权和支付状态不可以——那里的陈旧或编造值比错误更糟。添加回退前先给依赖排序。

try {
  return await withTimeout(loadOptional(), 300);
} catch {
  metrics.increment('optional.degraded');
  return { items: cachedItems, degraded: true };
}

让降级可见

静默返回陈旧数据的回退会掩盖故障。返回响应头或字段,发出指标,并在降级率越过阈值时告警。界面应显示轻微提示,而不是假装内容完整。变成永久的回退只是名字好听的的技术债。

验证失败路径

测试快速错误、慢超时和格式错误的响应。确认核心数据仍能渲染、回退有界,降级信号到达指标和响应。也要测试恢复路径:依赖恢复后,回退应停止,正常响应无需重启即可恢复。

验证边界

预期结果:可选依赖失败时主流程返回 200 且带 degraded 标记,核心数据正确;依赖恢复后标记消失。通过注入超时和错误确认,并检查降级指标增加后回落。