1.什么是分布式事务
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
2.分布式事务的产生的原因
2.1.数据库分库分表
当数据库单表一年产生的数据超过一千万,那么就要考虑分库分表,具体分库分表的原理在此不做解释,以后有空详细说,简单的说就是原来的一个数据库变成了多个数据库。这时候,如果一个操作既访问A库,又访问B库,而且要保证数据的一致性,那么就要用到分布式事务。
2.2.应用SOA
化
所谓的SOA
化,就是业务的服务化。比如原来单机支撑了整个电商网站,现在对整个网站进行拆解,分离出了订单中心、用户中心、库存中心。对于订单中心,有专门的数据库存储订单信息,用户中心也有专门的数据库存储用户信息,库存中心也会有专门的数据库存储库存信息。这时候如果要同时对订单和库存进行操作,那么就会涉及到订单数据库和库存数据库,为了保证数据一致性,就需要用到分布式事务。
3.分布式事务Seata
3.1.分布式事务Seata
介绍
Seata
(Simple Extensible Autonomous Transaction Architecture
,简单可扩展自治事务框架)是 2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案。Seata
开源半年左右,目前已经有接近一万 star
,社区非常活跃。
官网:https://seata.io/zh-cn/index.html
3.2.分布式事务Seata
产品模块
Seata
是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata
将为用户提供了AT
、TCC
、SAGA
和XA
事务模式,为用户打造一站式的分布式解决方案。
首先,如何定义分布式事务?
我们说,分布式事务是由一批分支事务组成的全局事务,通常分支事务只是本地事务。
Seata
框架中有三个角色:
-
TC
(Transaction Coordinator
) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。 -
TM
(Transaction Manager
) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。 -
RM
(Resource Manager
) - 资源管理器
管理分支事务处理的资源,与TC
交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
Seata
托管分布式事务的典型生命周期:
TM
开启分布式事务(TM
向TC
注册全局事务记录);- 按业务场景,编排数据库、服务等事务内资源(
RM
向TC
汇报资源准备状态 ); TM
结束分布式事务,事务一阶段结束(TM
通知TC
提交/回滚分布式事务);TC
汇总事务信息,决定分布式事务是提交还是回滚;TC
通知所有RM
提交/回滚 资源,事务二阶段结束。