分布式事务系列05--阿里开源分布式事务解决方案—Fescar/Seata

https://github.com/seata/seata/wiki/%E6%A6%82%E8%A7%88

https://blog.csdn.net/F8qG7f9YD02Pe/article/details/89089842

https://www.jianshu.com/p/16b5900bb484

https://blog.csdn.net/turbo_zone/article/details/86485129

FESCAR: 快速简单的提交和回滚

FESCAR是什么?

A distributed transaction solution with high performance and ease of use for microservices architecture.

一种高性能、易使用的微服务架构分布式事务解决方案。

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

让我门想象一下一个传统的单体应用,它的业务由三个模块构建而成,他们使用了一个单一本地数据源。

很显然,本地事务可以保证数据一致性

安装Fescar环境

首先去Fescar官方的Github上下载源码或者成果物。

Github下载链接

分布式事务系列05--阿里开源分布式事务解决方案—Fescar/Seata_第1张图片

微服务架构中一些事情需要被改变,这三个被上文提及到的模块,被设计为三个不同数据源之上的三个服务,在本地事务能够保证数据一致性。

但是对于真个业务逻辑范围如何保证数据一致性呢?

分布式事务系列05--阿里开源分布式事务解决方案—Fescar/Seata_第2张图片

FESCAR是怎么做的?

FESCAR只是一个上述提及问题的解决方案

分布式事务系列05--阿里开源分布式事务解决方案—Fescar/Seata_第3张图片

首先,如何明确这个分布式事务呢?

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

分布式事务系列05--阿里开源分布式事务解决方案—Fescar/Seata_第4张图片

FESCAR有三个基础组件:

  • Transaction Coordinator(TC): 全局和分支事务的状态的保持,驱动这个全局的提交和回滚.
  • Transaction Manager(TM): 明确全局事务的范围:开始一个全局事务,提交或者回滚一个全局事务.
  • Resource Manager(RM): 管理分支事务工作资源,告诉TC,注册这个分支事务和上报分支事务的状态,驱动分支事务的的提交和回滚。

分布式事务系列05--阿里开源分布式事务解决方案—Fescar/Seata_第5张图片

一个典型的FESCAR管理分布式事务的生命周期:

1、TM询问TC开启一个新的全局事务,TC生成一个XID,代表这个全局事务

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

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

3、TM要求TC提交或回滚XID的对应的全局事务。

4、TC驱动整个分支在XID对应的全局事务下,去完成分支的提交或者回滚

分布式事务系列05--阿里开源分布式事务解决方案—Fescar/Seata_第6张图片

 

你可能感兴趣的:(数据库,分布式事务)