Java基础、中级、高级、架构面试资料

详解阿里开源的基于Java 的开源分布式事务解决方案 fescar 框架实现原理和机制

JAVA herman 5139浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

我前面就说过,阿里开源会上瘾的。因为有了云计算,将会有越来越多的产品被开源。为此,腾讯在云计算方面,整个公司都将由 To C 向 To B 转型。腾讯为打破内部技术壁垒,腾讯正式成立技术委员会,并将在未来的一段时间,开源内部多款产品。

现在的应用都在向微服务,分布式方向发展。在分布式的环境下,事务处理就成了一大难题。为此,阿里在已开源的 TXC 和 GTS 的基础上开源了最新的分布式事务处理框架 FESCAR。

fescar 全称为:Fast & Easy Commit And Rollback。它是一个完全基于 Java 的分布式事务解决框架。fescar 拥有很高的性能,并且使用非常的方便,后面我会有具体的教程!

微服务中的分布式事务问题

让我们想象一下传统的单片应用程序。其业务由3个模块构成。他们使用单个本地数据源。

当然,本地事务将保证数据的一致性。

本地事务保证数据一致性架构图

微服务架构的情况发生了变化。上面提到的3个模块被设计为3个不同数据源之上的3个服务,每个服务的数据库独立。这样本地事务就无法自然的保证每个服务中的数据一致性。

每个服务之间的关系,将如下所示:

分布式架构图

这种情况,我们就可以使用 fescar 来解决事务问题。

fescar 实现原理

上面这张图就是 fescar 的解决方案!

有些人可能还不明白什么是分布式事务?分布式事务可以看成是一个全局事务和一系列子事务组成。

什么是分布式事务

分布式事务是一个全局事务,由一批分支事务组成,通常分支事务只是本地事务。分布式事务同样支持本地事务要么全部成功要么全部失败的特性。

FESCAR 有 3 个基本组件:

  • 事务协调器(TC):维护全局和分支事务的状态,驱动全局提交或回滚。
  • Transaction Manager(TM):定义全局事务的范围:开始全局事务,提交或回滚全局事务。
  • 资源管理器(RM):管理分支事务的资源,与TC通信以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

fescar 框架实现原理和机制

FESCAR管理分布式事务的典型生命周期:

  1. TM要求TC开始新的全局交易。TC生成表示全局事务的XID。
  2. XID通过微服务的调用链传播。
  3. RM将本地事务注册为XID到TC的相应全局事务的分支。
  4. TM要求TC提交或回滚XID的相应全局事务。
  5. TC在XID的相应全局事务下驱动所有分支事务以完成分支提交或回滚。

fescar 在微服务下的解决方案

fescar 经历过阿里生产环境的多年运行,非常的稳定可靠。目前该开源的框架在 Github 上已有众多的实践者在使用。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 详解阿里开源的基于Java 的开源分布式事务解决方案 fescar 框架实现原理和机制