SWE / SRE / Frontend · System Design / 基础

TikTok HTTP 状态码:错误分类、重试与业务合同

解释常见 2xx/3xx/4xx/5xx,并把状态与幂等重试、权限和观测联系起来。

题目重点:解释常见 2xx/3xx/4xx/5xx,并把状态与幂等重试、权限和观测联系起来。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 状态码表达HTTP语义,具体业务错误用机器可读errorcode,不仅匹配英文消息。

解题路线

  1. 200成功、201创建、202接受但未完成、204无响应内容;3xx重定向/缓存相关语义需按具体码,304不是普通资源正文。
  2. 400请求错误、401需要认证、403拒绝权限、404未找到、409状态冲突、429过多请求。401与403不要混为一谈,也不能用404证明资源绝对不存在于所有用户视角。
  3. 500服务端异常、502网关收到无效上游响应、503暂不可服务、504网关超时;区分网关和应用有助于定位。
  4. 重试按方法和业务幂等、错误合同、Retry-After与总预算,不见5xx就无限重试。客户端超时或504后操作可能已成功,需查询或同key重试。

手动走一遍

POST支付遇504,不能再用新幂等键支付;先查询同请求状态。返回202的异步任务提供taskID/状态接口,不能让客户端把它当立即完成。

规模与取舍

重试放大请求量,采用退避/jitter、并发限额和deadline;监控按码、路由、请求ID与业务errorcode分解。

易错点与追问

容易失分的边界

  • 202代表任务已完成。
  • 401和403一样。
  • 5xx保证没有副作用。

继续深挖

  • 重定向方法保持与改写如何区分?
  • 错误正文怎么设计兼容客户端?

技术参考

✓已复制微信号!