根据分布式系统的特点以及BASE等相关理论,目前分布式事务的解决方案一般采取柔性事务的处理方案。柔性事务的类型一般可分为:两阶段型、补偿型、异步确保型和最大努力通知型四类。
一.柔性事务中的服务模式
柔性事务的方案中,要实现柔性事务,根据技术方案和业务场景的不同需要,系统需要提供一定的服务模式,服务模式是柔性事务流程中的特殊操作实现。这些服务模式主要有:
1.可查询操作:服务操作具有全局唯一标识(如订单号、交易流水号等)或者组合标识(如商户号+商户订单号),使用全局唯一的服务操作标识,查询操作执行结果。使用时间区段与(或)一组服务操作的标识,批量查询一批操作执行结果。
2.幂等操作(Idempotenty):重复调用多次产生的业务结果与调用一次产生的业务结果相同,即f(f(x)) = f(x)
3.TCC操作:将一步操作拆分成try、confirm、cancel。Try: 尝试执行业务,完成所有业务检查(一致性),预留必须业务资源(准隔离性)。Confirm:确认执行业务,真正执行业务,不作任何业务检查,只使用Try阶段预留的业务资源。Cancel: 取消执行业务,释放Try阶段预留的业务资源。Confirm和Cancel操作要满足幂等性。
4.可补偿操作:完成业务处理后,可进行补偿操作,抵销(或部分抵销)正向业务操作的业务结果。补偿操作满足幂等性,TCC操作中的Confirm操作和Cancel操作,其实也可以看作是补偿操作。
二.柔性事务在实际应用中的解决方案
目前实际应用中,广泛使用的柔性事务解决方案主要有以下三种:
1.可靠消息最终一致方案(异步确保型)
2.TCC方案 (两阶段型、补偿型)
3.最大努力通知方案(非可靠消息、定期校对)
当然还有其它一些方案,这里不做重点介绍。这三种方案各自用到一些服务模式,有各自的优缺点,在后面的文章中再做详细阐述。
1076

被折叠的 条评论
为什么被折叠?



