首页 > 其他分享 >谈谈分布式事务TCC

谈谈分布式事务TCC

时间:2024-03-30 09:58:22浏览次数:12  
标签:事务 Confirm Try 谈谈 阶段 一致性 TCC 分布式

TCC(Try-Confirm-Cancel)是一种分布式事务处理模型,用于解决在分布式系统中执行跨服务或跨资源的事务时的一致性问题。与传统的两阶段提交(2PC)和三阶段提交(3PC)相比,TCC提供了一种更为灵活和适应性更强的解决方案,尤其适用于长事务处理和需要高度一致性保证的业务场景。

### 工作原理

TCC模型将事务分为三个阶段:尝试(Try)、确认(Confirm)和取消(Cancel)。

1. **Try 阶段**:在这个阶段,事务的各个参与者检查事务请求的有效性,并预留必要的资源以保证事务可以被成功执行。这个阶段不会实际修改数据,只是做好准备工作,确保Confirm阶段可以顺利完成。

2. **Confirm 阶段**:如果Try阶段所有参与者都成功预留了资源,则进入Confirm阶段。在这个阶段,实际执行事务操作,修改数据,并释放在Try阶段预留的资源。如果所有参与者都成功执行了Confirm操作,那么整个事务被认为是成功的。

3. **Cancel 阶段**:如果在Try阶段的任何时刻发现事务无法成功完成(比如某个参与者无法预留足够的资源),或者在Confirm阶段之前发生了其他错误,那么事务将进入Cancel阶段。在这个阶段,所有参与者将撤销在Try阶段所做的准备工作,释放预留的资源,确保系统回到事务开始前的状态。

### 特点

- **强一致性**:TCC通过明确的业务逻辑分阶段处理,确保了事务的强一致性。
- **灵活性**:TCC模型允许开发者根据具体业务需求设计Try、Confirm和Cancel这三个阶段的逻辑,提供了较高的灵活性。
- **适用于长事务**:由于TCC不是基于锁的机制,而是通过业务逻辑来保留和释放资源,因此更适合处理执行时间较长的事务。
- **系统复杂度增加**:实现TCC模型需要在业务层面上进行细致的设计和编码,会增加系统的复杂度。

### 应用场景

TCC模型特别适用于分布式系统中那些需要强一致性保证,且参与者之间相互独立、事务执行时间可能较长的场景。例如,电商平台的下单操作,可能需要同步更新库存、记录订单、扣减用户余额等,这些操作跨多个服务或系统,使用TCC模型可以有效确保事务的一致性和完整性。

总的来说,TCC是一种通过业务逻辑来确保分布式事务一致性的模型,虽然实现复杂,但提供了高度的灵活性和强一致性保证,适用于复杂的分布式系统场景。

标签:事务,Confirm,Try,谈谈,阶段,一致性,TCC,分布式
From: https://blog.csdn.net/hellozhuaizhuai/article/details/137164765

相关文章

  • openGauss 使用kubernetes部署分布式数据库
    使用kubernetes部署分布式数据库可获得性本特性自openGauss2.1.0版本开始引入。特性简介一键式部署分布式数据库。客户价值快速完成分布式数据库搭建,验证和使用分布式能力。特性描述通过patroni实现计划内switchover和故障场景自动failover,通过haproxy实现openGauss主备......
  • openGauss 分布式数据库能力
    分布式数据库能力可获得性本特性自openGauss2.1.0版本开始引入。特性简介基于分布式中间件shardingsphere使openGauss具备分布式数据库能力。使用32个鲲鹏920(128核)节点组网(1*shardingsphere-proxy,11*shardingsphere-jdbc,20*openGauss)时,完美sharding性能>2100万tpmc。......
  • openGauss 分布式分析能力
    分布式分析能力可获得性本特性自openGauss3.1.0版本开始引入。特性简介基于openLookeng实现分布式分析能力,与shardingsphere配合openGauss组成HTAP数据库。客户价值通过openLookeng快速实现海量数据分析。特性描述openLookeng复用shardingsphere中间件的分库分表能力,使op......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-2 zk会话重连机制
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12718 1重点关注1.1本节内容验证了使用sessionid和sessionPassword重连的session和之前的session一致,详见3.1   2课程内容2.1扩展之:echodump|nclocalhost2181......
  • .NET分布式Orleans - 8 - 贪吃蛇项目实战(准备阶段)
    到目前为止,Orleans7的核心概念基本已经学完,我准备使用Orleans7做一个项目实战,来总结自己的学习效果。项目效果通过Orleans7来完成一个贪吃蛇游戏,要求如下:可以多人在线玩贪吃蛇可以上/下/左/右改方向贪吃蛇吃完食物,身体长度+1项目暂定架构初步设想,此游戏包括一个Orleans7......
  • hadoop-3.1.1分布式搭建与常用命令
    一、准备工作1.首先需要三台虚拟机:master、node1、node22.时间同步ntpdatentp.aliyun.com3.调整时区cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime 4.jdk1.8java-version5.修改主机名三台分别执行vim/etc/hostn......
  • Cisco ISE 分布式部署
       分布式部署就是将ISE组件剥离出来,一台Primary的PAN+MnT,一台Secondary的PAN+MnT其他都是PSN,这种模型最多5台PSN。   ISE主要的角色如下:   PAN(PolicyAdministrationNode)            策略管理点   MnT(MonitoringandTrouble......
  • .NET分布式Orleans - 7 - Streaming
    概念在Orleans中,Streaming是一组API和功能集,它提供了一种构建、发布和消费数据流的方式。这些流可以是任何类型的数据,从简单的消息到复杂的事件或数据记录。StreamingAPI允许你定义、发布和消费这些流,而无需关心底层的传输机制或数据存储。每个流都有一个唯一的标识符,称为Stre......
  • Sentinel 对分布式服务进行流量控制
    可以下载sentinel的jar包,用java-jar命令直接启动 默认端口就是8080,这里随便写一下演示,其他修改还是直接看Sentinel网站吧java-jar-Dserver.port=8080sentinel的jar包名.jar 对需要进行流量控制的服务进行依赖导入(这个依赖直接在父工程引入似乎无效,不知为何)<dependency>......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-1 建立客户端与zk服务端的连接
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12717 1重点关注1.1本节内容使用STS开发工具作为客户端连接zk服务端,详见3.1  1.2连接方式参数说明如下段zk原生class标注:connectString:连接zk服务端的ip和端口(比如案例......