首页/开发/系统分析与架构设计速查/补偿事务与业务回滚

补偿事务与业务回滚

分布式流程无法物理回滚已完成的远程操作,只能执行语义相反的补偿动作(退款、释放库存、回发优惠券);补偿必须幂等、可重试且可审计。

设计要点补偿动作的业务语义要明确,且与正向操作一样需要测试
顺序逆序补偿通常最直观,但需考虑业务依赖(如已开具发票需先红冲)
不可补偿场景已发货、已对外通知等,需要人工介入流程

补偿设计检查

检查项说明
幂等重复执行结果一致,按业务单号去重
可重试区分可重试与需人工,超限转人工队列
顺序逆序补偿,并核对业务依赖(如发票需红冲)
审计正向与补偿记录成对留存,支持对账解释
补偿不是撤销:补偿产生新的业务事实,审计与对账必须能解释两条记录的关系。

易错点

  • 补偿动作不幂等,重试造成重复退款
  • 补偿链路缺少人工兜底,无法处理不可逆场景

数据来源与参考

  • Hector Garcia-Molina & Kenneth Salem《Sagas》(SIGMOD, 1987)
  • Chris Richardson《Microservices Patterns》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌