TCC事务 基本思路

简介: 【8月更文挑战第9天】

一句话总结,就是既想要ACID,又想要分布式事务,以目前的条件来说基本不可能。所以所有解决分布式事务的方案,立足点都是最终一致性。因此不管从哪里提到了分布式事务,如果面试官问起来,你都可以先从理论上强调这一点。

分布式事务或者说跨库事务基本上都只能依赖于最终一致性,ACID 是不太可能的。比如说常见的 TCC、AT、SAGA,又或者比较罕见的延迟事务,其实都是追求最终一致性。

这里提到了 TCC、AT 和 SAGA 这些比较具体的方案,你就可以根据后面的内容来进一步解释,或者等面试官询问。
注意,如果面试官认为 XA 是支持 ACID 的,那么他可能会问:“难道没有什么能够保证 ACID 吗?”通过这种问题你就可以知道面试官的倾向了,那么你就可以抛开个人立场,回答 XA 事务。

有,XA 事务可以看作支持 ACID。

如果面试官直接问 XA,那么你就可以按照自己的真实想法来回答。

TCC是一个追求最终一致性的,而不是严格一致性的事务解决方案,他不满足ACID要求
TCC是Try Confirm Cancel的缩写,他勉强也算是两阶段提交协议的一种实现。

  • Try:对应于两阶段提交协议的准备阶段,执行事务但是不提交
  • Confirm:对应两阶段提交协议第二阶段的提交步骤
  • Cancel:对于两阶段提交协议的回滚步骤

之所以给它一个新名字,完全是因为TCC强调的是业务自定义逻辑。也就是说Try是执行业务自定义逻辑,Confirm也是执行业务自定义逻辑,Cancel也是。

TCC在微服务架构里比较常用,这三个各自对应一个微服务调用。不过一些分库分表中间件也支持TCC模式,但是比较罕见。

目录
相关文章
|
消息中间件 NoSQL Java
分布式事务之事务实现模式与技术(四)
在分布式系统中实现的事务就是分布式事务,分布式系统的CAP原则是: • 一致性 • 可用性 • 分区容错性 是分布式事务主要是保证数据的一致性,主要有三种不同的原则 • 强一致性 • 弱一致性 • 最终一致性
分布式事务之事务实现模式与技术(四)
原理篇:Seata TCC模式是如何解决幂等性、资源悬挂、空回滚问题的
原理篇:Seata TCC模式是如何解决幂等性、资源悬挂、空回滚问题的
1156 0
|
3月前
|
微服务 运维 监控
TCC和本地事务 容错
【8月更文挑战第10天】
53 12
|
3月前
|
数据库
TCC+ SAGA事务
【8月更文挑战第12天】
44 0
|
5月前
|
Apache 开发者
Apache Seata 如何解决 TCC 模式的幂等、悬挂和空回滚问题
【6月更文挑战第8天】Apache Seata 是一款分布式事务框架,解决TCC模式下的幂等、悬挂和空回滚问题。通过记录事务状态处理幂等,设置超时机制避免悬挂,明确标记Try操作成功来处理空回滚。Seata 提供丰富配置和管理功能,确保分布式事务的可靠性和效率,支持复杂事务处理场景,为企业业务发展提供支持。
219 7
|
5月前
|
运维 程序员 数据库
如何用TCC方案轻松实现分布式事务一致性
TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,将事务拆分为尝试、确认和取消三步,确保在分布式系统中实现操作的原子性。它旨在处理分布式环境中的数据一致性问题,通过预检查和资源预留来降低失败风险。TCC方案具有高可靠性和灵活性,但也增加了系统复杂性并可能导致性能影响。它需要为每个服务实现Try、Confirm和Cancel接口,并在回滚时确保资源正确释放。虽然有挑战,TCC在复杂的分布式系统中仍被广泛应用。
236 5
|
6月前
|
缓存 NoSQL Java
事务问题的常用处理思路
事务问题的常用处理思路
|
存储 Java 数据库
如何在业务中体现TCC事务模型?
在分布式系统设计中,随着微服务的流行,通常一个业务操作被拆分为多个子任务,比如电商系统的下单和支付操作,就涉及到了创建和更新订单、扣减账户余额、扣减库存、发送物流消息等,那么在复杂业务开发中,如何保证最终数据一致性呢?
128 0
|
6月前
|
消息中间件 RocketMQ 微服务
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)(下)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
199 1
|
消息中间件 Oracle 关系型数据库
到底怎么理解分布式事务
到底怎么理解分布式事务
80 1