选型指南 架构设计 含可复制代码

把重试与降级的日志串起来:一次失败的全貌

目录层用 SSG 加 ISR 拿收录,工具层用一份 JSON Schema 承接 91 个站内工具,密钥、计费与限流全部收口在国内业务后端,模型调用统一走一层薄适配。这篇把我们真实的目录结构、Schema 字段定义、路由闸门、预扣结算伪代码和合规清单完整摊开。

陈
陈默架构组
2026-09-28 · 14 分钟阅读 · 8,432 次浏览

用户投诉的那次请求,能否一次查询看到「重试→降级→兜底→最终返回」?

一次失败的全貌,要看三段日志

故障排查最难的是把链路串起来 ✗:重试了几次 ✔、降级到哪一级 ✔、

最终返回给用户的是什么 ✔ —— 如果这三件事分别在三个系统里 ✔,就很难还原 ✔。

把"重试 + 降级 + 最终结果"用同一个 trace 串起来 ✔。

一、要串起来的六个事件

```

① 请求进入(trace_id 生成)

② 第一次调用失败(错误码 + 是否可重试)

③ 重试(第几次、等待多久、结果)

④ 降级触发(进入哪一级、为什么)

⑤ 兜底结果(是否命中缓存、是否规则兜底)

⑥ 最终返回(用户实际看到什么 + 是否标注了降级)

```

第 ⑥ 项最关键 ✗→✔:只有它记录了"用户到底看到了什么" ✔ ——

很多系统只记到 ④ ✔,事后无法回答"用户看到的是不是兜底结果" ✔。

二、三条实现要求

1. trace 贯穿全链路 ✔(包括重试与降级分支 ✔ —— 见日志那篇 ✔);

2. 每段都记状态与原因 ✔(不要只记"失败" ✔ —— 记错误码与分类 ✔);

3. 降级与兜底必须留痕 ✔(哪个开关生效、哪条规则命中 ✔)。

三、四条"一次查询能回答"的问题

```

① 这次请求重试了几次?每次为什么失败?

② 有没有降级?降到哪一级?用户被通知了吗?

③ 最终结果来自模型、缓存还是规则兜底?

④ 这次请求一共花了多少(含重试成本)?

```

第 ④ 项常被漏 ✗:重试成本要算进这次请求 ✔(否则成本归因不到具体请求 ✔)。

四、三个反模式

· 重试日志与主日志分开 ✗(无法关联 ✔);

· 降级只记"已降级" ✗(不记哪一级、为什么 ✔);

· 兜底结果不标注 ✗(用户与复盘者都不知道 ✔ —— 见沉默失败那篇 ✔)。

五、一条判据

> 给一个"用户投诉答得不对"的请求 ✔,你能否在一次查询里看到"重试→降级→兜底→最终返回"的全貌 ✔?

> 不能,说明失败链路还没串起来 ✗。

本文由云枢 AI导航整理,内容以官方来源为准。

相关文章

顺序阅读

← 上一篇:代码库问答的四个难点与四项对策

第 171 / 171 篇

术语速查 · 本页出现的 12 个词展开看中文名与一句话解释,点术语看完整条目
  • token词元:模型处理文本的最小单位,中文约 1–2 个汉字;计费与上下文长度都按它算。
  • 转写 / 字幕Transcription:把音视频人声逐句变成带时间戳的文字稿,便于做字幕与章节切分。
  • SSE服务器发送事件:服务器通过长连接持续推送增量文本,是对白逐字出现的常见实现。
  • API应用编程接口:程序之间约定的调用方式;站内工具由服务端调用,浏览器里不出现密钥。
  • CDN内容分发网络:把静态资源缓存到离用户更近的节点,缩短加载时间。
  • 缓存Cache:把结果暂存复用,复用得越多平均耗时越低;需要约定过期与刷新策略。
  • 限流Rate Limit:限制单位时间内的请求次数,防止单用户或异常流量打满服务端。
  • SSG静态站点生成:构建阶段就生成 HTML,访问时直接返回,不必每次请求都渲染。
  • ISR增量静态再生:先返回静态页,再在后台按需重新生成,兼顾速度与更新时效。
  • 灰度发布Canary Release:先让一小部分用户用新版本,确认无误再放量,出问题的爆炸半径最小。
  • 提示词Prompt:交给模型的指令文本;写清角色、任务、输入与输出格式比反复试更省。
  • 积分Credits:站内计费单位:按工具单价预扣,调用失败自动退还;单价以定价页为准。

完整解释与站内出现处见 AI 术语表(40 条)。