补偿失败事务场景 (Compensating Failed Transaction)

StackSaga 补偿失败事务场景架构图
尽管*补偿失败事务*在理论分布式系统中属于小概率的边缘边界情况,但在生产级企业应用中,研发团队必须通过防御性编程确保逆向补偿逻辑绝不抛出未经处理的不可逆异常。
我们能否在某个补偿步骤抛出异常时忽略该错误,继续强制执行其余步骤的补偿?
答案是肯定的。 在默认情况下,如果在逆向补偿全链路中某个步骤抛出了未捕获的严重异常,整个事务的状态推进将停滞在该故障点。 这意味着排在该步骤前面的其他待补偿步骤将被暂时阻塞,无法继续向下执行。
在很多关键业务中,排在更前面的补偿步骤(例如退款或解锁库存)至关重要且必须执行。如果中途某个次要补偿步骤报错导致核心补偿无法执行,将会引发严重的业务账目不一致。
大多数情况下,此类意外异常往往是代码未能妥善防御的边缘情况。
[ 欲查看防止事务因单点补偿异常而意外中断的实际代码示范,请参阅 快速入门示例 ]