天天看点

从零开始学Seata(Fescar)-简介 

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个模块构成(库存、订单和账户),这三个模块使用各自的本地数据源。

在业务发生过程中,本地事务将保证数据的一致性。

从零开始学Seata(Fescar)-简介 

如果把这个单体应用场景修改成微服务架构,会发生什么变化呢? 上面提到的3个模块将被设计为3个不同数据源之上的3个服务(参照Pattern: Database per service)。

虽然本地事务能保证各自服务的数据一致性。但从整个业务逻辑角度上看,如何保证呢数据一致性呢?

从零开始学Seata(Fescar)-简介 

Seata如何解决这个问题?

Seata提供了一个完美解决上述问题的方法。

从零开始学Seata(Fescar)-简介 

首先,如何定义分布式事务?

我们说,分布式事务是一个全局事务,由一批分支事务组成,通常分支事务只是本地事务。

从零开始学Seata(Fescar)-简介 

Seata有3个基本组件:

  1. ·事务协调器(TC):维护全局和分支事务的状态,驱动全局提交或回滚。
  2. ·事务管理器(TM):定义全局事务的范围:开始全局事务,提交或回滚全局事务。
  3. ·资源管理器(RM):管理分支事务的资源,与TC通信以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
从零开始学Seata(Fescar)-简介 

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

1.TM要求TC开始新的全局事务。 TC生成表示全局事务的XID。

2.XID通过微服务的调用链传播。

3.RM将本地事务注册为XID到TC的相应全局事务的分支。

4.TM要求TC提交或回滚XID的相应全局事务。

5.TC在XID的相应全局事务下驱动所有分支事务,以完成分支提交或回滚。

有关原理和设计的更多详细信息,请访问Fescar的wiki页面。

从零开始学Seata(Fescar)-简介 

​​​​​​​发展历程

·TXC:淘宝事务构造器。 阿里巴巴中间件团队自2014年起启动该项目,以解决因应用程序架构从单体应用改为微服务而导致的分布式事务问题。

·GTS:全局事务服务。 TXC作为Aliyun中间件产品,新名称GTS自2016年起发布。

·Fescar:我们从2019年开始基于TXC / GTS开源开源项目Fescar,以便将来与社区密切合作。

 Seata:2019年4月,更名为Seata,并调整开源计划。

开源版本规划

v0.1.0

  • 微服务框架支持: Dubbo
  • 数据库支持: MySQL
  • 基于 Spring AOP 的 Annotation
  • 事务协调器: 单机版本

v0.5.x

  • 微服务框架支持: Spring Cloud
  • MT 模式
  • 支持 TCC 模式事务的适配
  • 动态配置和服务发现
  • 事务协调器: 高可用集群版本

v0.8.x

  • Metrics
  • 控制台: 监控/部署/升级/扩缩容

v1.0.0

  • General Availability: 生产环境适用

v1.5.x

  • 数据库支持: Oracle/PostgreSQL/OceanBase
  • 不依赖 Spring AOP 的 Annotation
  • 热点数据的优化处理机制
  • RocketMQ 事务消息纳入全局事务管理
  • NoSQL 纳入全局事务管理的适配机制
  • 支持 HBase
  • 支持 Redis

v2.0.0

  • 支持 XA

当然,项目迭代演进的过程,我们最重视的是社区的声音,路线图会和社区充分交流及时进行调整。

​​​​​​​当前开源程度

截至2019年2月19日相关开源程度:

集成测试覆盖率(codecov):29%

license:Apache-2.0

maven-central(maven库当前版本):v0.2.1

从零开始学Seata(Fescar)-简介 

绿色 部分是已经开源发布出来的,黄色 部分是将在后续版本中由阿里发布出来的,蓝色 部分是我们和社区共建生态部分:

  • 对不同数据库的支持,开发者可以参考 MySQL 的实现。
  • 对不同微服务框架的支持,开发者可以参考 Dubbo 的实现。
  • 对 MQ、NoSQL 的支持,开发者可以参考 TCC 的实现。
  • 配置和服务注册发现:开发者通过少量的工作可以接入任何可以提供这类服务的框架。
  • 当然,非 蓝色 的部分也非常欢迎社区参与进来,贡献更优的解决方案。

另外,XA 作为分布式事务的标准,是一个完备的分布式事务解决方案不可或缺的,远景的规划中,我们一定需要把 XA 的支持加入进来。

【2019年4月9日更新】

1)、为了达到适用于更多的分布式事务业务场景的目标,蚂蚁金服加入 Fescar 社区共建,在 Fescar 0.4.0 版本中加入了 TCC 模式。 

2)、2019 年 5 月,Seata 将加入服务端 HA 集群支持,从此,Seata 可以达到生产环境使用的标准。 

从零开始学Seata(Fescar)-简介 

​​​​​​​总结

目前,属于紧密开发过程中,暂时未提供正式版(1.0),生产环境慎用。

目前仅支持MySQL,选型切记这一点。

文章结束。

继续阅读