• 极客文库-知识库上线!
  • 极客文库小编@勤劳的小蚂蚁,为您推荐每日资讯,欢迎关注!
  • 每日更新优质编程文章!
  • 更多功能模块开发中。。。

FESCAR:阿里重磅开源分布式事务解决方案

FESCAR 名字的由来:Fast & EaSy Commit And Rollback
  • FESCAR 是啥?
被用在微服务架构中的高性能分布式事务解决方案。
让我们想象一个传统的应用,由 3 个模块构成,并且这三个模块使用同一个数据源。很明显,数据一致性由数据库提供的本地事务就能搞定。
local transaction
然而,一切美好都被在微服务架构中被打破。3 个模块变成了 3 个服务,每个服务有独立的数据源(参考 https://microservices.io/patterns/data/database-per-service.html)。每个服务的数据一致性由本地事务保证,但是跨服务的业务呢?如下图所示,某个业务既需要操作库存(Storage),又需要操作订单(Order),还需要操作账户(Account)。
distribution transaction
  • FESCAR 怎么做?
distribution transaction
首先,如果定义分布式事务?我们认为一个分布式事务是由多个分支事务组成的全局事务,通常来说,分支事务就是本地事务。
define distribution transaction
FESCAR 有三个基本组件:
  • Transaction Coordinator(TC):事务协调器,维护着全局事务和分支事务的状态, 它来决定全局的提交还是回滚。
  • Transaction Manager(TM): 事务管理器,定义全局事务的范围:开始一个全局事务,提交或者回滚一个全局事务。
  • Resource Manager(RM): 资源管理器,管理分支事务处理的资源,与 TC 通信以注册分支事务并报告分支事务的状态,并驱动分支事务提交或回滚.
FESCAR 3 components
一个典型的 FESCAR 维护的分布式事务的生命周期如下:
  1. TM 向 TC 请求开启一个全局事务,TC 生成一个 XID,一个表示全局事务的唯一 ID;
  2. 通过微服务的调用链,XID 被广播出去(图中绿色线路);
  3. RM 向 TC 注册一个属于 XID 表示的分布式事务下的本地事务(红色箭头);
  4. TM 向 TC 询问是提交还是回滚 XID 表示的全局事务;
  5. TC 驱动 XID 表示的全局事务下的所有分支事务,完成提交或者回滚动作。
如下图所示:
lifecycle
参考:https://github.com/alibaba/fescar


    丨极客文库, 版权所有丨如未注明 , 均为原创丨
    本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
    转载请注明原文链接:FESCAR:阿里重磅开源分布式事务解决方案
    喜欢 (1)
    [247507792@qq.com]
    分享 (0)
    勤劳的小蚂蚁
    关于作者:
    温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

    欢迎 注册账号 登录 发表评论!

    • 精品技术教程
    • 编程资源分享
    • 问答交流社区
    • 极客文库知识库

    客服QQ

    247507792

    工作时间:09:00-23:00

    新浪微博:点我访问

    个人博客:点我访问