TCC 指的是Try - Confirm - Cancel。
- Try 指的是预留,即资源的预留和锁定,注意是预留。
- Confirm 指的是确认操作,这一步其实就是真正的执行了。
- Cancel 指的是撤销操作,可以理解为把预留阶段的动作撤销了。
对于每一个要执行的操作,都会实现三个方法 try confirm 和cancel。
如果一个事务,要执行 a b c 三个操作,那么会先对这三个操作执行try方法。
try方法里将是资源的预留和锁定,举例:a操作是扣分,b操作是加分,c操作是扣库存。那么在try阶段,a操作将扣的分先扣到预扣分字段,b操作同理,c操作先冻结库存。
在try操作都执行完以后,回执给事务管理器自己的操作是成功了还是失败了。如果都成功了,事务管理器给参与者发送执行confirm方法。如果有一个失败了,则都执行cancel方法。
confirm方法,还是举上面的例子:a操作刚才把扣的分放到了预扣分操作,这里就直接操作扣分。b同理。c把冻结的库存扣除。
cancel方法,和confirm相反,把预扣分、冻结的资源还原即可。
网友评论