SSP Better Stack
平台服务

副作用与回滚

在发送、写入或调用外部系统前,声明事务、幂等和恢复方式。

数据库写入、付款、消息发送、工单创建和第三方调用都属于副作用。实现前逐项回答:

  • 触发条件和权威 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 与运行手册。

本页目录