平台服务
副作用与回滚
在发送、写入或调用外部系统前,声明事务、幂等和恢复方式。
数据库写入、付款、消息发送、工单创建和第三方调用都属于副作用。实现前逐项回答:
- 触发条件和权威 Policy 是什么?
- 重复请求如何识别,幂等 key 保存多久?
- 本地事务与外部调用的边界在哪里?
- 超时后怎样判断“失败”还是“结果未知”?
- 重试由谁执行,采用什么 backoff?
- 哪些动作可补偿,哪些不可逆?
- 部署或数据 migration 如何回滚?
推荐记录
operation: issue-refund
idempotency_key: refund-request-id
external_system: payment-provider
timeout_result: unknown
retry: worker, exponential, max 5
compensation: manual provider reversal
owner: billing-platform如果无法安全判断超时结果,不要自动重试不可逆操作。把人工 gate 和恢复步骤写进 Contract 与运行手册。