当前位置 鱼摆摆网 > 教程 > 淘宝开店 > 网店知识库 >
支付宝蚂蚁金服——基于补偿性 TCC 的分布式事务场景
作者:肖钦 2019-03-27 15:31补偿型 TCC 解决方案的从业务服务与通用型 TCC 方案类似,也需要参与到主业务服务的决策当中。但与通用型 TCC 方案不一样的是,从业务服务只需要提供 Do 和 Compensate 两个接口:
-
Do 接口直接执行真正的完整业务逻辑,完成业务处理,业务执行结果外部可见。
-
Compensate 操作用于业务补偿,抵消或部分抵消正向业务操作的业务结果,补偿操作需满足幂等性。
▲ 补偿性 TCC 模型
与通用型方案相比,补偿型解决方案的从业务服务只需要在在原有业务逻辑上额外增加一个补偿回滚逻辑即可,业务改造量较小。但业务在一阶段就执行完整个业务逻辑,无法做到有效隔离,可能存在补偿失败的情况,还需要额外的异常处理机制,比如人工介入。
由于存在回滚补偿失败的情况,补偿型 TCC 分布式事务解决方案只适用于一些并发冲突较少的业务或者需要与外部交互的业务,这些外部业务不属于被动型业务,其执行结果会影响主业务服务的决策,比如机票代理商的机票预订服务:
▲ 机票预订业务流程
该机票服务提供多程机票预订服务,可以同时预订多趟行程航班机票,比如从北京到圣彼得堡,需要第一程,从北京到莫斯科,以及第二程从莫斯科到圣彼得堡。
用户想要同时预订这两趟航班的机票,只预订一趟航班对用户来说没有意义。因此对于这样的业务服务同样提出了原子性要求,要么同时成功,要么同时失败,如果其中一趟预订失败,另外一趟也不需要预订。
但是由于航空公司相对于机票代理商来说属于外部业务,只提供订票接口和取消订票接口,想要推动航空公司改造是极其困难的。因此,对于此类业务服务,可以使用补偿型 TCC 分布式事务解决方案,如下:
▲ 机票预订业务的 TCC 流程
在用户预订机票的时候,先调用各航空公司的预订接口,如果两趟航班都预订成功,则整个分布式事务执行成功;一旦某趟航班机票预订失败,则分布式事务回滚,由事务模型框架调用对应航空公司的取消预订接口。通过这种方式,也可以保证多程机票预订服务的原子性。
相关文章
淘宝创业一对一孵化,合同保底年赚10万以上!
怎样经营服装店的技巧(服装店的营销策略和方法)
蚂蚁金服和支付宝到底是什么关系?
蚂蚁金服回应支付宝法人变更,你怎么看?
支付宝和蚂蚁金服的账户安全险合理吗?
支付宝与蚂蚁金服有啥区别?
为蚂蚁金服带来65%收入的支付宝,如何在B端市场发展?
如何看待蚂蚁金服支付宝新推出的延时到账被骗撤回功能?
支付宝蚂蚁金服——基于异步确保型 TCC 的分布式事务场景
支付宝蚂蚁金服——基于通用 TCC 的分布式事务场景
支付宝蚂蚁金服——基于 XA 的分布式事务场景
支付宝蚂蚁金服-柔性事务的定义与分类
支付宝蚂蚁金服-分布式事务中的 TCC 模型
支付宝蚂蚁金服分布式事务中的二阶段怎么进行提交?
- 全部评论(0)

