You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用于建模支持失败回滚的原子事务的常用设计模式有哪些?

多步骤原子事务场景的通用实现方案

公认推荐设计模式

工业界针对该场景已经有两类经过大规模落地验证的标准设计模式:

1. Saga模式(补偿事务模式)

这是适用范围最广的实现方案,核心逻辑是为每个正向执行步骤预定义对应的补偿撤销逻辑,执行失败时反向调用补偿操作回到初始状态。
适用场景:步骤间没有强依赖、业务允许短暂中间状态的场景,比如跨服务业务流程、批量数据操作等。

2. TCC模式(Try-Confirm-Cancel)

分为三个阶段:

  • Try阶段:完成所有业务资源的预检查和预占用
  • Confirm阶段:所有Try步骤成功后,执行实际的业务提交操作,该阶段不做任何业务校验,默认一定会成功
  • Cancel阶段:任意Try步骤失败时,释放所有已预占的资源
    适用场景:对一致性要求更高、可以拆分出预占逻辑的场景,比如支付、库存扣减等核心交易链路。

标准落地流程

不管用哪种模式,核心执行逻辑都遵循以下规则:

  • 每个步骤的正向和回滚操作都需要保证幂等性,避免重试、重复调用导致数据异常
  • 每执行成功一个步骤,立刻持久化该步骤的执行记录和回滚所需的参数,避免服务宕机后丢失回滚上下文
  • 某一步执行失败后,立刻终止正向流程,按反向顺序执行所有已完成步骤的回滚操作
  • 不可回滚的操作(比如对外推送消息、发送短信)必须放到所有步骤的最后,等所有可回滚步骤都执行成功后再调用

最简代码实现参考(伪代码)

def atomic_task_executor(task_list: list):
    executed_tasks = []
    for task in task_list:
        try:
            task.run()
            executed_tasks.append(task)
        except Exception as e:
            # 反向执行补偿
            for executed in reversed(executed_tasks):
                executed.rollback()
            return False
    return True

内容的提问来源于stack exchange,提问作者KSSTAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:54:00