和二阶段提交很类似只不过有个冻结的操作,比如A和B一共有3杯水,A把一杯水给了B,此时A的冻结字段就是+1,B的冻结字段也是加1,如果2头都返回成功,那么B就会执行加1操作,然后A执行-1操作,如果是不成功,那么就会使用A的冻结方案,在2的基础上加上,变回原来的数据.
第一阶段返回true,执行第二阶段,也就是执行提交后的代码,如果回滚,那么执行补偿机制的代码,这个补偿机制多种多样可以我们自己来定义,相比于二阶段和三阶段提交来说更加灵活多变,但是相对来说也有个缺点,会对业务层代码进行入侵,增加事件与代码之间的耦合程度,不便于维护.