Seata(Fescar)是阿里巴巴集团在2019年1月开源的分布式事务解决方案。
本篇文章主要参考了官方网站的github的README.md,并在对其翻译的基础上,进行了编辑。
本文所有图片均来自官网。
Seata(Fescar)是一种易于使用,高性能,基于Java的开源分布式事务解决方案。
官方定义原文:
Seata(Fescar) is an easy-to-use, high-performance, java based, open source distributed transaction solution.
Seata 意为:Simple Extensible Autonomous Transaction Architecture,是一套一站式分布式事务解决方案。
为什么我们需要Seata?它解决了什么问题?
让我们想象一个传统的单体应用的场景——电商购物。 其业务由3个模块构成(库存、订单和账户),这三个模块使用各自的本地数据源。
在业务发生过程中,本地事务将保证数据的一致性。
如果把这个单体应用场景修改成微服务架构,会发生什么变化呢? 上面提到的3个模块将被设计为3个不同数据源之上的3个服务(参照Pattern: Database per service)。
虽然本地事务能保证各自服务的数据一致性。但从整个业务逻辑角度上看,如何保证呢数据一致性呢?
Seata提供了一个完美解决上述问题的方法。
首先,如何定义分布式事务?
我们说,分布式事务是一个全局事务,由一批分支事务组成,通常分支事务只是本地事务。
Seata有3个基本组件:
Seata管理分布式事务的典型生命周期:
1.TM要求TC开始新的全局事务。 TC生成表示全局事务的XID。
2.XID通过微服务的调用链传播。
3.RM将本地事务注册为XID到TC的相应全局事务的分支。
4.TM要求TC提交或回滚XID的相应全局事务。
5.TC在XID的相应全局事务下驱动所有分支事务,以完成分支提交或回滚。
有关原理和设计的更多详细信息,请访问Fescar的wiki页面。
·TXC:淘宝事务构造器。 阿里巴巴中间件团队自2014年起启动该项目,以解决因应用程序架构从单体应用改为微服务而导致的分布式事务问题。
·GTS:全局事务服务。 TXC作为Aliyun中间件产品,新名称GTS自2016年起发布。
·Fescar:我们从2019年开始基于TXC / GTS开源开源项目Fescar,以便将来与社区密切合作。
Seata:2019年4月,更名为Seata,并调整开源计划。
当然,项目迭代演进的过程,我们最重视的是社区的声音,路线图会和社区充分交流及时进行调整。
截至2019年2月19日相关开源程度:
集成测试覆盖率(codecov):29%
license:Apache-2.0
maven-central(maven库当前版本):v0.2.1
绿色 部分是已经开源发布出来的,黄色 部分是将在后续版本中由阿里发布出来的,蓝色 部分是我们和社区共建生态部分:
另外,XA 作为分布式事务的标准,是一个完备的分布式事务解决方案不可或缺的,远景的规划中,我们一定需要把 XA 的支持加入进来。
【2019年4月9日更新】
1)、为了达到适用于更多的分布式事务业务场景的目标,蚂蚁金服加入 Fescar 社区共建,在 Fescar 0.4.0 版本中加入了 TCC 模式。
2)、2019 年 5 月,Seata 将加入服务端 HA 集群支持,从此,Seata 可以达到生产环境使用的标准。
目前,属于紧密开发过程中,暂时未提供正式版(1.0),生产环境慎用。
目前仅支持MySQL,选型切记这一点。
文章结束。