Seata 是一款开源的分布式微服务事务解决方案。

Seata 是一款开源的分布式微服务事务解决方案。

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

让我们想象一个传统的整体式应用程序。它的业务由 3 个模块组成。它们使用单个本地数据源。

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

800_auto

微服务架构中的情况发生了变化。上面提到的 3 个模块设计为 3 个不同数据源之上的 3 个服务(模式:每个服务的数据库)。每个服务中的数据一致性自然由本地事务保证。

但是整个业务逻辑范围呢?

800_auto

Seata?是怎么做的?

Seata?只是上述问题的解决方案。

800_auto

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

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

800_auto

Seata 框架中有三个角色:

事务协调员:维护全局和分支事务的状态,推动全局提交或回滚。
事务管理器:定义全局事务的范围:开始全局事务,提交或回滚全局事务。
资源管理器:管理分支事务处理的资源,与 TC 通信以注册分支事务和报告分支事务的状态,并推动分支事务提交或回滚。
800_auto
Seata管理的分布式事务的典型生命周期:

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

github地址:https://github.com/seata/seata

800_auto


{{collectdata}}

网友评论