| 设计要点 | 补偿动作的业务语义要明确,且与正向操作一样需要测试 |
|---|---|
| 顺序 | 逆序补偿通常最直观,但需考虑业务依赖(如已开具发票需先红冲) |
| 不可补偿场景 | 已发货、已对外通知等,需要人工介入流程 |
补偿设计检查
| 检查项 | 说明 |
|---|---|
| 幂等 | 重复执行结果一致,按业务单号去重 |
| 可重试 | 区分可重试与需人工,超限转人工队列 |
| 顺序 | 逆序补偿,并核对业务依赖(如发票需红冲) |
| 审计 | 正向与补偿记录成对留存,支持对账解释 |
补偿不是撤销:补偿产生新的业务事实,审计与对账必须能解释两条记录的关系。
分布式流程无法物理回滚已完成的远程操作,只能执行语义相反的补偿动作(退款、释放库存、回发优惠券);补偿必须幂等、可重试且可审计。
| 设计要点 | 补偿动作的业务语义要明确,且与正向操作一样需要测试 |
|---|---|
| 顺序 | 逆序补偿通常最直观,但需考虑业务依赖(如已开具发票需先红冲) |
| 不可补偿场景 | 已发货、已对外通知等,需要人工介入流程 |
| 检查项 | 说明 |
|---|---|
| 幂等 | 重复执行结果一致,按业务单号去重 |
| 可重试 | 区分可重试与需人工,超限转人工队列 |
| 顺序 | 逆序补偿,并核对业务依赖(如发票需红冲) |
| 审计 | 正向与补偿记录成对留存,支持对账解释 |