核心 GUIDE
PATTERNINTERMEDIATE6 分钟阅读
Idempotency Boundary
重复 Attempt 应该代表同一个 Business Intent,而不是每一次都悄悄创建新的 Side Effect。
核心心智模型
Stable Operation Identity 用来区分“同一个 Intent 的 Retry”和“一个真正全新的 Intent”。
为什么重要
网络会 Retry、Worker 会 Restart、Agent 会 Re-plan。缺少 Idempotency Boundary 时,同一个用户 Intent 可能制造重复 Order、Message、Charge 或 Refund。这个保护必须位于真正的 Side-effect Boundary,而不能依赖模型乐观地判断“应该没发生”。
01
给 Business Intent 一个稳定 Identity
当一个需要 Side Effect 的 Intent 被创建时,Caller 就分配 Idempotency Key 或 Operation ID。Receiver 为这个 Identity 记录 Result,并在重复 Attempt 时返回同一个 Outcome。这个 Identity 必须跨越 Network Retry、Process Restart 与 Agent Re-planning。
02
例子:一次点击,两次 HTTP Attempt
用户只点击了一次 Buy,但第一次 Request Timeout,于是 Client Retry。如果两次 Attempt 都携带同一个 Order-intent ID,Server 就可以返回原来的 Order,而不是创建第二个订单。
常见失败模式
- 每次 Retry 都创建新的 Idempotency Key。
- Key 只绑定一次 HTTP Attempt,而不是 Business Intent。
- 把 Compensation 当作避免重复 Side Effect 的替代方案。
工程启发
- 把 Stable Identity 放在真正的 Business Side-effect Boundary。
- 任何可能发起 Retry 的地方都要持久化 Operation Identity。
- 显式测试 Timeout、Restart 与 Partial Success 路径。
关键结论
- 01在考虑 Retry Timing 之前,Identity 就应该稳定。
- 02一个 Intent 应该只有一个 Operation Identity。
- 03面对 Ambiguous Outcome,Idempotency 与 Reconciliation 需要一起工作。
来自 Knowledge Graph 的相关知识点
这些关系直接来自 canonical graph,不维护第二套 Guide 分类体系。