seata是什么?
一个高性能,易于上手的,用于微服务架构的分布式事务解决方案。
微服务中的分布式事务问题
传统的单体应用,它的业务组件通常有3个模块。它使用一个单体的本地数据源,通常地,使用本地事务保证数据一致性。
在微服务中就会变得不一样了,上面提到的3个模块将拆分成3个不同的数据源。每个单体的服务自然可以使用本地事务保证数据一致性。
但是在整个业务逻辑范围上会出现什么情况呢?
Seata是什么?
Seata是用来解决上面提到的问题的。
首先,如何定义一个** Distributed Transaction? (分布式事务)**
我们说,一个分布式事务是由分支事务组成的全局事务,通常,** 分支事务就是本地事务**。
Seata有三个基本组件:
- Transaction Coordinator(TC)
- Transaction Manager™
- Resource Manager(RM)
TC(事务协调器):维护全局状态和分支事务,负责提交或者回滚。
TM(事务管理器):定义全局事务的范围:定义一个全局事务,提交或者回滚一个全局事务。
RM(资源管理器):管理每个分支事务的事务资源,与TC协调,注册分支事务并且上报分支事务状态,并且驱动分支事务提交或者回滚。
Seata管理的分布式事务的一个典型的生命周期:
- TM调用TC开始一个新的全局事务,TC生成一个表示全局事务的XID.
- XID通过微服务的调用链传播。
- RM注册本地事务作为XID对应的全局事务的一个分支到TC上。
- TM要求TC提交或者回滚XID对应的全局事务。
- TC要求XID下所有对应分支事务,完成后提交或者回滚。