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原则是: • 一致性 • 可用性 • 分区容错性 是分布式事务主要是保证数据的一致性,主要有三种不同的原则 • 强一致性 • 弱一致性 • 最终一致性
分布式事务之事务实现模式与技术(四)
|
2月前
|
微服务 运维 监控
TCC和本地事务 容错
【8月更文挑战第10天】
48 12
|
2月前
|
数据库
TCC+ SAGA事务
【8月更文挑战第12天】
33 0
|
5月前
|
Dubbo 应用服务中间件 微服务
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)(上)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
85 1
|
4月前
|
SQL 存储 数据库
事务的ACID是什么及扁平化事务、链式事务
事务的ACID是什么及扁平化事务、链式事务
|
4月前
|
消息中间件 数据库 RocketMQ
可靠消息最终一致性分布式事务
推荐一个零声教育C/C++后台开发的免费公开课程,个人觉得老师讲得不错,分享给大家:C/C++后台开发高级架构师,内容包括Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习
56 2
|
存储 Java 数据库
如何在业务中体现TCC事务模型?
在分布式系统设计中,随着微服务的流行,通常一个业务操作被拆分为多个子任务,比如电商系统的下单和支付操作,就涉及到了创建和更新订单、扣减账户余额、扣减库存、发送物流消息等,那么在复杂业务开发中,如何保证最终数据一致性呢?
121 0
|
设计模式 数据库 微服务
使用saga管理事务
使用saga管理事务
124 0
使用saga管理事务
|
5月前
|
消息中间件 RocketMQ 微服务
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)(下)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
195 1
|
消息中间件 Oracle 关系型数据库
到底怎么理解分布式事务
到底怎么理解分布式事务
76 1