分布式事务解决方案 (二)

本文探讨了2PC、TCC、可靠消息和最大努力通知的分布式事务模型,强调了各自的优缺点,以及在不同场景下的适用性。还指出本地事务的优越性和分布式事务设计中的挑战,以及如何在实际应用中权衡一致性与性能。

分布式事务对比分析:
1.2PC 最大的诟病是一个阻塞协议。RM在执行分支事务后需要等待TM的决定,此时服务会阻塞并锁定资源。由于其 阻塞机制和最差时间复杂度高, 因此,这种设计不能适应随着事务涉及的服务数量增加而扩展的需要,很难用于并 发较高以及子事务生命周期较长 (long-running transactions) 的分布式服务中。
如果拿TCC事务的处理流程与2PC两阶段提交做比较,2PC通常都是在跨库的DB层面,而TCC则在应用层面的处 理,需要通过业务逻辑来实现。这种分布式事务的实现方式的优势在于,可以让应用自己定义数据操作的粒度,使 得降低锁冲突、提高吞吐量成为可能。而不足之处则在于对应用的侵入性非常强,业务逻辑的每个分支都需要实现 try、confirm、cancel三个操作。此外,其实现难度也比较大,需要按照网络状态、系统故障等不同的失败原因实 现不同的回滚策略。典型的使用场景:满,登录送优惠券等。

2.可靠消息最终一致性事务适合执行周期长且实时性要求不高的场景。引入消息机制后,同步的事务操作变为基于消 息执行的异步操作, 避免了分布式事务中的同步阻塞操作的影响,并实现了两个服务的解耦。典型的使用场景:注 册送积分,登录送优惠券等。

3.最大努力通知是分布式事务中要求最低的一种,适用于一些最终一致性时间敏感度低的业务;允许发起通知方处理业 务失败,在接收通知方收到通知后积极进行失败处理,无论发起通知方如何处理结果都会不影响到接收通知方的后 续处理;发起通知方需提供查询执行情况接口,用于接收通知方校对结果。典型的使用场景:银行通知、支付结果 通知等。

在这里插入图片描述
总结:
在条件允许的情况下,我们尽可能选择本地事务单数据源,因为它减少了网络交互带来的性能损耗,且避免了数据 弱一致性带来的种种问题。若某系统频繁且不合理的使用分布式事务,应首先从整体设计角度观察服务的拆分是否 合理,是否高内聚低耦合?是否粒度太小?分布式事务一直是业界难题,因为网络的不确定性,而且我们习惯于拿 分布式事务与单机事务ACID做对比。

	无论是数据库层的XA、还是应用层TCC、可靠消息、最大努力通知等方案,都没有完美解决分布式事务问题,它们 不过是各自在性能、一致性、可用性等方面做取舍,寻求某些场景偏好下的权衡。
1、课程介绍 2、解决方案的效果演示(结合支付系统真实应用场景 3、常用的分布式事务解决方案介绍 4、消息发送一致性(可靠消息的前提保障) 5、消息发送一致性的异常流程处理 6、常规MQ队列消息的处理流程和特点 7、消息重复发送问题及业务接口的幂等性设计 8、可靠消息最终一致性方案1(本地消息服务) 9、可靠消息最终一致性方案2(独立消息服务)的设计 10、可靠消息服务的设计与实现--消息服务子系统 11、可靠消息服务的设计与实现--消息管理子系统 12、可靠消息服务的设计与实现--消息状态确认子系统 13、可靠消息服务的设计与实现--消息恢复子系统 14、可靠消息服务的设计与实现--实时消息服务子系统 15、可靠消息最终一致性方案在支付系统中的实战应用介绍 16、可靠消息最终一致性方案在支付系统中的实战应用部署 17、可靠消息最终一致性方案的实战应用测试 18、可靠消息最终一致性方案的优化提升 19、最大努力通知型方案的应用场景介绍 20、最大努力通知型方案的方案设计 21、最大努 力通知型方案的实战应用与部署 22、最大努力通知型方案的优化提升 23、TCC型事务方案介绍 24、TCC型事务架构设计分析 25、TCC型事务框架的源码实现讲解 26、TCC型事务方案的项目实战应用介绍 27、TCC型事务方案的项目实战应用部署 28、TCC型事务方案的项目实战应用测试 29、TCC型事务方案的应用优化提升 30、课程总结
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值