Fork me on GitHub

分布式解决方案

#分布式解决方案

Fescar

Fescar github 地址
传统的解决无侵入的方案为XA,但是XA 有一定的局限性,比如要求mysql版本高于5.7
其他都是在业务上采用如下解决方案:

  • 基于可靠消息解决
  • TCC
  • Saga

    什么是分布式事务?

    分布式事务就是一个包含了若干个分支事务的全局事务。全局事务就是协调包含的分支事务从而达成一致,要么全部成功,否则全部失败。分支事务就是本地的事务ACID,这与XA的理念是一样的。
    下图就是基本的分布式事务的过程
  1. Transaction Coordinator (TC): 事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。
  2. Transaction Manager (TM): 控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。
  3. Resource Manager (RM): 控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚。
    • TM向TC 首先申请开启一个全局事务,全局事务创建成功并返回一个XID(全局事务id)
    • XID 必须要在全局事务中进行传播,如果没有xid那么不能判断出属于哪一个全局事务啦!
    • RM 向 TC 注册分支事务,将其纳入 XID 对应全局事务的管辖。
      • TM 向 TC 发起针对 XID 的全局提交或回滚决议。
      • TC 调度 XID 下管辖的全部分支事务完成提交或回滚请求。

本文欢迎转载,但是希望注明出处并给出原文链接。 如果你有任何疑问,欢迎在下方评论区留言,我会尽快答复。 如果你喜欢或者不喜欢这篇文章,欢迎你发邮件到 alonecong@126.com 告诉我你的想法,你的建议对我非常重要。

------ 本文结束感谢您的阅读! ------
0%