32 | Alibaba Seata 框架:什么是分布式事务?
一场前戏
- 深入了解
- 翻译
- 解释
- 总结
本文通过回忆作者在面试中被问及分布式事务的经历,引出了对分布式事务的讨论。文章分为前戏和正戏两个部分,前戏阐述了在单体应用中的本地事务管理,而正戏则介绍了传统的分布式事务解决方案,如XA协议。作者通过生动的比喻和实际案例,解释了XA协议的工作原理和局限性,以及在高并发互联网场景下的不适用性。最后,作者提出了阿里系Seata分布式事务框架作为解决方案,并强调了本地事务在分布式事务中的重要性。整体而言,文章深入浅出地介绍了分布式事务的概念和实现方式,为读者提供了一次深入的技术探讨。 Seata框架采用了“全局事务”和“分支事务”两部分的业务模型,将“长事务”变成若干个“短事务”,并通过中心化的Transaction Coordinator来控制Execute-Commit-Rollback的执行。文章以此为基础,展望了Seata双料王牌之AT无侵入式方案 + TCC柔性事务的下一幕大戏。
《Spring Cloud 微服务项目实战》,新⼈⾸单¥59
全部留言(14)
- 最新
- 精选
- Heaven's Fall老师,我想问一下 我们传统的服务间调用可以通过调用服务失败了使用本地事务回滚业务(比如服务A调用服务B,服务B失败了我们可以在服务A上回滚业务,然后再向上游报告业务失败。。。) 使用消息队列的情况也可以使用事务型消息保证一致性 为啥还需要这样一个分布式事务的框架增加系统的复杂度呢?
作者回复: 很同意同学的这个观点,我在后面seata实战的文章中旗帜鲜明的表达了一个观点,如果能通过事务型消息、补偿跑批、日志表的方式保证一致性,最好不要上重量级的分布式事务方案,开发维护成本都很高。 除此之外呢,还有一点是事务型消息不能替代的场景。事务型消息可以保证“业务执行”和“消息被消费”这两个事件的原子性,但这是建立在消息驱动的场景之上,需要将整个场景都基于异步消息来实现。而微服务是基于API调用的方式,所以跨API调用的非消息驱动场景的一致性,seata就有用武之地了。
2022-03-13212 - 多喝热水讲的真好,生怕哪天这节就不见了😂😂😂
作者回复: 就看国家什么时候开始下一次净网行动了
2022-02-2627 - 牛年榴莲老师面试套路深啊!
作者回复: 哈哈面试嘛,就往死里吹就成了
2022-04-194 - Black Jack老师,看起来心情不错啊
作者回复: 高兴的一批好么,这篇是我冲破极客的傻鸟“写作范式”,用真实意志写的。。。
2022-05-132 - 薛定谔的疯兔子哈哈 老师说话贼有意思
作者回复: 也就这一篇文章是我靠自己意志写的,其它都得遵循平台的范式,摊手~
2022-02-282 - 说话的鱼这节课真的是风趣,有古龙小说语言风范
作者回复: 简直是风骚好嘛
2022-06-011 - Lonely_ZJ百年孤独式的开头太有喜感啦~
作者回复: 握个爪同学!咱俩是文化人儿!
2022-03-101 - peter请教老师两个问题: Q1:MySQL只有InnoDB引擎支持XA协议吗? 文中有这样一句:“DB 这层首先得要实现 XA 协议。比如 Oracle XA 和 MySQL InnoDB,都是支持 XA 协议的数据库方案。”。 MySQL支持多种存储引擎,从这句话看,似乎只有InnoDB支持XA协议了,是吗? Q2:2PC方案中,如果commit阶段出现问题,会是什么结果?如果有问题怎么解决?
作者回复: 给同学一个学习的小建议,其实这里很多问题都是非常简单的只要百度一下就能获得的答案,有问题说明课文认真读了,但是如果能先自己对问题做一下调研,也是提高解决问题的能力的一种方式。 比如第一个问题,就可以转化为mysql都有哪些引擎,他们之间差别是什么,哪些支持事务哪些不支持,进而再了解一下数据库的事务传播性和commit级别。 第二个问题commit失败之后就回滚,因为事务没提交,和本地事务回滚一样的流程
2022-02-252 - 5-刘新波(Arvin)太精彩了!2024-01-06归属地:陕西
- 码哥字节放飞自我的写法2023-09-25归属地:广东