首页 > 其他分享 >分布式事务(三):Seata之TCC事务模式原理

分布式事务(三):Seata之TCC事务模式原理

时间:2024-02-07 16:55:24浏览次数:28  
标签:事务 Seata 自定义 模式 阶段 TCC

  TCC 模式是 Seata 支持的一种由业务方细粒度控制的侵入式分布式事务解决方案,是继 AT 模式后第二种支持的事务模式。其分布式事务模型直接作用于服务层,不依赖底层数据库,可以灵活选择业务资源的锁定粒度,减少资源锁持有时间,可扩展性好,是为独立部署的 SOA 服务而设计的。

  TCC模式支持把自定义的分支事务纳入到全局事务管理中。

Seata TCC模式,整体是两阶段提交的模型。全局事务由若干分支事务组成,分支事务要满足 两阶段提交 的模型要求,即需要每个分支都具备两阶段:

  一阶段 prepare 行为;

  二阶段 commit 或 rollback 行为。

0

根据两阶段行为模式的不同,分支事务 划分为 Automatic (Branch) Transaction Mode 和 TCC (Branch) Transaction Mode。

TCC模式不依赖于底层数据资源的事务支持:

  一阶段prepare行为:调用自定义的 prepare 逻辑;

  二阶段commit行为:调用自定义的 commit 逻辑;

  二阶段rollback行为:调用自定义的 rollback 逻辑。

 

标签:事务,Seata,自定义,模式,阶段,TCC
From: https://www.cnblogs.com/RunningSnails/p/18011068

相关文章

  • 分布式事务(二):Seata概述
    Seata官方文档地址:https://seata.apache.org/zh-cn/。1、Seata引入 用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:仓储服务:对给定的商品扣除仓储数量。订单服务:根据采购需求创建订单。帐户服务:从用户帐户中扣除余额。在上述架构图中有仓......
  • Jmeter事务控制器
    事务控制器(TransactionController),事务控制器生成一个额外的示例,该示例测量执行嵌套测试元素所花费的总时间GenerateParentSample:生成父例,如果选中则该样本将作为其他样本的父样本生成,如果不选中则该样本将作为独立样本生成Includedurationoftimerandpre-postprocess......
  • 数据库之隔离级别,脏读幻读,事务特性
    目录1事务隔离级别1.1默认隔离级别1.2读未提交1.3读已提交1.4可重复读1.5序列化2事务关键词2.1定义(脏读,不可重复读,虚读)2.2不可重复读与幻读的区别3事务的四个特性3.1原子性3.2一致性3.3隔离性3.4持久性1事务隔离级别1.1默认隔离级别ISOLATION_DEFAULT:默认......
  • 分布式事务Seata
    TC (TransactionCoordinator)-事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。TM (TransactionManager)-事务管理器:定义全局事务的范围,开始全局事务、提交或回滚全局事务。RM (ResourceManager)-资源管理器:管理分支事务处理的资源(Resource),与TC......
  • kettle从入门到精通 第四十一课 kettle 事务(单个转换文件)
    1、大家都知道,我们在平常写java或者C#等代码时,如果涉及操作多个表时为了保持数据一致性需要开启事务,同样kettle也支持事务,今天我们一起来学习下kettle单个转换文件内的事务特性。转换文件中的步骤是并行执行的,每个步骤都打开一个独立的数据库连接并开始一个事务。尽管这样在很多......
  • spring声明式事务(@Transactional)开发常犯的几个错误及解决办法
    目前JAVA的微服务项目基本都是SSM结构(即:springCloud+springMVC+Mybatis),而其中Mybatis事务的管理也是交由spring来管理,大部份都是使用声明式事务(@Transactional)来进行事务一致性的管理,然后在实际日常开发过程中,发现很多开发同学都用错了spring声明式事务(@Transactional)或者说使用......
  • Spring事务的传播行为
    Spring事务的传播行为1.概述当我们遇到下面的情况时,一个service中调用了另一个service中的方法(两个service中都存在事务),此时bservice中的事务就被传播到了aservice中,这样就产生了事务的传播。@SercicepublicclassAservice{@AutoWiredprivateBservicebservice......
  • SpringBoot 整合多数据源的事务问题
    代码先贴代码:核心就是:Spring给我们提供的一个类AbstractRoutingDataSource,然后我们再写一个切面来切换数据源,肯定要有一个地方存储key还要保证上下文都可用,所以我们使用ThreadLocal来存储数据源的keypom.xml<dependency><groupId>org.springframework.boot</gr......
  • Spring 事务管理 基于配置文件
    事务概念:原子性:要么都成功,有一个失败都失败一致性:总量不变(A有100元,B有100元,总量是200元。A把100元转给B,B就有了200元,总量还是200元)隔离性:两人操作同一条数据,不会相互影响持久性:最终提交到数据库后成功搭建事务操作环境进行操作():银行转账例子:1.1、创建数据库,创建表,添加......
  • MySQL事务
    MySQL事务是一个执行单元,在mysql中,对数据的一次操作或多次操作可以组合成一个事务,这些操作要么同时成功执行,要么同时失败。一、事务的性质事务有四个基本特性,通常被称为ACID属性。原子性(Atomicity):如果事务中的所有操作都成功,则事务被提交。如果事务中的任何操作失败,则事务......