09|分布式事务:多服务的2PC、TCC都是怎么实现的?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
分布式事务在微服务和领域驱动设计中面临挑战,传统实现方式存在问题。本文深入探讨了分布式事务的实现方式及其优缺点,介绍了XA协议在多个数据库中协调分布式事务的应用,以及MySQL中XA的2PC分布式事务的具体指令集。此外,文章还介绍了TCC协议,相比2PC和3PC,TCC协议具有更好的性能,能够实现分布式事务而无需使用XA。TCC协议的Try-Confirm-Cancel流程以及优缺点也得到了详细阐述。 总体来说,本文通过丰富的内容和强大的技术性,帮助读者更好地理解分布式事务的实现过程。文章提到了不同的分布式事务实现方式,包括2PC、3PC和TCC,分析了它们各自的优缺点,以及适用场景和注意事项。此外,还提到了市面上一些优秀的中间件,如DTM、Seata,它们对分布式事务协调做了很多优化,提供更完善的流程机制。 对于读者来说,本文是一份深入浅出的技术指南,能够帮助他们快速了解分布式事务的实现方式及其性能特点,以及选择合适的实现方式来解决业务需求。文章内容丰富,技术性强,适合对分布式事务感兴趣的读者阅读。 总的来说,本文为读者提供了全面的分布式事务实现方式的介绍和分析,对于理解和应用分布式事务具有很大帮助。
《高并发系统实战课》,新⼈⾸单¥59
全部留言(9)
- 最新
- 精选
- peter请教老师几个问题: Q1:MySQL支持XA的bug很多,那么,实际项目中不能用XA吗? Q2:TCC既可以是XA,也可以不是XA,对吗? Q3:seat是采用XA的吗?还是普通的事务? Q4:中厂、大厂一般用什么来做分布式事务? Q5:一个网站,50万用户,这种规模的网站用什么来实现分布式事务?
作者回复: 你好,peter,很高兴收到你的再次留言,1.XA的bug体现在偶尔特殊情况下事务遗留,什么时候commit到binlog,个别事务回滚失败,一般推荐使用TCC,这里用XA讲解是方便快速理解。2.没错,具体实现可以不同,甚至事务一直不关闭维持链接,等待最终commit。3.seata是一个组件,里面很多种方式,其中at可以根据修改sql自动生成回滚sql。4大厂会尽力修改事务的粒度,分区,分片,分块。5,小规模的普遍tcc或比较复杂的组件实现,比如seata的saga,大规模的利用分布式数据库的分布式事务
2022-11-11归属地:北京24 - Sam Fu老师 xa这玩意有人用吗
作者回复: 你好,目前XA在开源数据库还在不断改进不能保证完全可用,还有很多问题,实际使用过程中还存在问题,应用范围其实并不广,但是这个协议能够帮助我们快速理解多模块分别提交的思路所以这节课重点拿他作为例子,理解XA以后其他解决方案你会发现理解起来十分容易。
2023-09-01归属地:北京1 - 花花大脸猫前提是能接受短暂的数据不一致(非强一致性),所以业务上我们一般很少会使用分布式事务来管控,而是通过补偿机制来实现业务数据的一致性,但是如果调用的链路很长的话,补偿也是一个很头疼的事情
作者回复: 没错,带条件的回滚更麻烦,如果中断了更麻烦
2022-11-18归属地:北京1 - txjlrk厉害,由浅入深,由理论到实践,面面俱到。 分布式事务也分为柔性和刚性两种
作者回复: 你好,老铁,我查了下这个归类方式不错,柔性相对的性能更好类似TCC ,刚性类似2pc 与xa
2022-11-11归属地:北京1 - 阿昕思考题:1.利用本地消息表+mq,或者mq的事务消息实现,可以达到解耦的目的;2.利用seata类框架,对复杂场景或者长事务可以使用sega模式。
作者回复: 不管哪个选择,都会有取舍
2023-04-06归属地:浙江 - 👽有一个没用的废话就是,要尽可能减少分布式事务的发生以及,尽可能使分布式事务的力度更细。 比如现在创建订单和支付行为很多厂商似乎就是拆开的。 似乎基本都是: 1. 创建订单的同时扣减库存。这一部分是一个事务; 2. 用户付款,扣减用户余额,同时修改订单状态。这部分是另外的事务; 至于如何处理事务,个人都是事务补偿会好一些。因为是人工处理的,所以更加可控。现在解决分布式事务的组件,貌似没有看到哪个实现方式是特别可用的。 而且有时候不得不考虑一个问题,多个服务间很可能不是同一套协议,也不适合让人去兼容你的事务解决方案。
作者回复: 没错,这类问题在行业不断提出,才会有更深的思考
2023-03-31归属地:广东 - Mr.差不多您好,老师 TCC 和二阶段是什么关系?
作者回复: 你好,Mr.差不多,很高兴收到你的留言,TCC也是二阶段的只不过他的思路和传统的二阶段的“先锁定预占然后等待所有步骤完成后再一起提交” 有所不同,他是先将所需的争抢资源先全抢到,然后再做最后执行,并且提交和回滚是支持多次执行的,不过TCC缺点就是很多需要人工做更多事情
2023-03-03归属地:上海 - jjn0703AT和Saga这是另外的两种模式吗?
作者回复: 是的
2023-02-11归属地:江苏2 - 李二木TCC 协议 是2pc 吗
作者回复: 你好,李二木,也是两阶段提交,只不过所有逻辑是自己实现的,回滚也是
2022-11-22归属地:北京