Spring Cloud 微服务项目实战
姚秋辰(姚半仙)
PayPal 研发经理
15862 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
结束语 (1讲)
Spring Cloud 微服务项目实战
15
15
1.0x
00:00/00:00
登录|注册

32 | Alibaba Seata 框架:什么是分布式事务?

我第一次被问及分布式事务,是在一次面试的终面环节。多年以后,面对形形色色的面试者,我总会回想起畅谈分布式方案的那个遥远的下午。
彼时的打工人还没从 996 PUA 的福报催眠中觉醒,无人制裁的大厂喜欢肆无忌惮地将面试安排在周末,似乎从面试的那一刻开始,996 的节奏就被它们演绎得像呼吸一样自然。在一个周六的下午我来到了约定的面试地点。
“有没有做过分布式事务?”刚和面试官对上线,他就迎面甩我一个大招。
“做过!”我的回答像古龙小说一样惜字如金。但我大概能猜到他想听的完美答案,八成就是阿里系自研的分布式事务框架
“说说是怎么实现分布式事务的。”为了让一个答案变得有层次,我计划从三个阶段来回答这个问题:一个擦边球答案、一个正确但不完美的答案、一个超出预期的答案。如果用一部舞台剧来形容这三个阶段,那么就是“前戏、正戏、高潮”。
与这三个阶段相对应的话术,分别是“本地事务、传统的分布式事务、阿里系 Seata 分布式事务”,从平淡无奇到羽化而登仙。

一场前戏

“大部分传统公司的业务还是构建在单体应用集群之上,说白了,就是一种伪分布式的应用,事务在应用上下文中传播。”我先抛出了一个擦边球答案作为前戏,前戏宜速战速决不宜恋战,只为铺垫第二阶段的正戏。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文通过回忆作者在面试中被问及分布式事务的经历,引出了对分布式事务的讨论。文章分为前戏和正戏两个部分,前戏阐述了在单体应用中的本地事务管理,而正戏则介绍了传统的分布式事务解决方案,如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-13
    2
    12
  • 多喝热水
    讲的真好,生怕哪天这节就不见了😂😂😂

    作者回复: 就看国家什么时候开始下一次净网行动了

    2022-02-26
    2
    7
  • 牛年榴莲
    老师面试套路深啊!

    作者回复: 哈哈面试嘛,就往死里吹就成了

    2022-04-19
    4
  • Black Jack
    老师,看起来心情不错啊

    作者回复: 高兴的一批好么,这篇是我冲破极客的傻鸟“写作范式”,用真实意志写的。。。

    2022-05-13
    2
  • 薛定谔的疯兔子
    哈哈 老师说话贼有意思

    作者回复: 也就这一篇文章是我靠自己意志写的,其它都得遵循平台的范式,摊手~

    2022-02-28
    2
  • 说话的鱼
    这节课真的是风趣,有古龙小说语言风范

    作者回复: 简直是风骚好嘛

    2022-06-01
    1
  • Lonely_ZJ
    百年孤独式的开头太有喜感啦~

    作者回复: 握个爪同学!咱俩是文化人儿!

    2022-03-10
    1
  • peter
    请教老师两个问题: Q1:MySQL只有InnoDB引擎支持XA协议吗? 文中有这样一句:“DB 这层首先得要实现 XA 协议。比如 Oracle XA 和 MySQL InnoDB,都是支持 XA 协议的数据库方案。”。 MySQL支持多种存储引擎,从这句话看,似乎只有InnoDB支持XA协议了,是吗? Q2:2PC方案中,如果commit阶段出现问题,会是什么结果?如果有问题怎么解决?

    作者回复: 给同学一个学习的小建议,其实这里很多问题都是非常简单的只要百度一下就能获得的答案,有问题说明课文认真读了,但是如果能先自己对问题做一下调研,也是提高解决问题的能力的一种方式。 比如第一个问题,就可以转化为mysql都有哪些引擎,他们之间差别是什么,哪些支持事务哪些不支持,进而再了解一下数据库的事务传播性和commit级别。 第二个问题commit失败之后就回滚,因为事务没提交,和本地事务回滚一样的流程

    2022-02-25
    2
  • 5-刘新波(Arvin)
    太精彩了!
    2024-01-06归属地:陕西
  • 码哥字节
    放飞自我的写法
    2023-09-25归属地:广东
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部