本章进度 17 / 18
94%
正文已完成
L148部分成功比完全失败更难处理
识别已发生副作用、未知状态和补偿动作,避免重复或静默丢失。
把“失败恢复”从听懂变成会判断,避免遇到真实任务时仍靠感觉选择。
建议先理解同主题上一课的核心概念,再完成本课判断练习。
- 无需安装新工具
- 准备一个可对照的真实问题或样本
三封邮件发出两封、五条记录更新三条,这类部分成功不能直接重跑整批,也不能只标“失败”。系统必须保存逐项状态。
能为多步写操作设计部分失败后的确认与补偿路径。
核心概念
先把关键判断说清楚
逐项状态替代批次布尔值
每个资源记录 pending、succeeded、failed 或 unknown,避免一项失败覆盖全部事实。
未知先查询
超时项先用业务键确认是否已生效,再决定重试。
补偿动作符合业务
已发邮件无法撤回就发更正;退款用冲正而不是删账。
案例拆解
五条客户标签更新中断
前三条返回成功,第四条超时,第五条尚未执行。
- 01
前三条保持 succeeded,不重写。
- 02
按 request_id 查询第四条,确认已成功后标记。
- 03
第五条使用原批次幂等键继续,最终汇总逐项回执。
案例结果
恢复过程没有重复修改已成功项,也没有把超时误判为失败。
提交前练习
现在轮到你
为一个批量写操作设计部分失败恢复表。
完成本课需要:完成以下内容用于本课收口。
内容会自动保存在当前设备
查看参考答案与评分标准
参考答案
批量建工单按 customer_id+issue_date 去重;成功项保留 ticket_id;超时项先查询;仅未创建项重试;错误工单通过 close_with_reason 补偿并保留历史。
评分标准
- 逐项状态真实
- 未知没有直接当失败
- 补偿保留审计
本课收口 · 应用检查
完成一次应用,再检查理解
完成一次必填练习,再通过理解检查;阅读标记和总结不设硬门槛。
你现在更接近哪一种状态?
尚有必填项未完成,请补齐后再继续。
资料来源
继续核对与延伸阅读
本课内容最近更新于 。
- Monitoring Distributed Systems↗reference · 核对日期 2026-08-23
- OpenTelemetry Signals↗official-docs · 核对日期 2026-08-23