分布式事务

2pc(Two phase commitment protocol)

一阶段:准备阶段,预留资源

二阶段:

所有资源准备成功 -》提交

出现准备失败 -》 回滚    

tcc(try-confirm-cancel)  两阶段提交

三个接口均由编码实现(业务中),事务管理器统一调度,try成功confirm要求一定成功。

try    预留资源(冻结资金),冻结资金是否小于余额。

confirm  所有资源准备成功 -》提交 (扣除冻结资金)

cancel  出现准备失败 -》 回滚(释放冻结资金)

- 隔离性    事务间的隔离性。记录中间表,绑定事务id。业务记录流水

- 空回滚    允许空回滚。(网络波动,try超时,cancel回滚)

- 防悬挂    try拥堵(cancel后try才执行),防止空回滚后的try操作。允许空回滚,但要拒绝空回滚后的try操作(记录流水标记已回滚,try时检查)。

- 幂等  tcc三个操作的幂等性

tcc两阶段提交与saga、seta比较

- tcc两阶段提交适用于金融场景,最终一致。缺点占用资源,系统需要开发tcc三个接口。

- seta无法保证事务隔离性,可能会有脏数据无法回滚。undolog回滚补偿,不占资源。设计遵循客户少钱机构多钱的原则,最终机构补偿。

原文地址:https://www.cnblogs.com/chenfx/p/15222930.html