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原则是: • 一致性 • 可用性 • 分区容错性 是分布式事务主要是保证数据的一致性,主要有三种不同的原则 • 强一致性 • 弱一致性 • 最终一致性
378 0
分布式事务之事务实现模式与技术(四)
|
4月前
|
数据库 微服务
GTS事务执行过程
【8月更文挑战第25天】
57 4
|
7月前
|
Dubbo 应用服务中间件 微服务
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)(上)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
101 1
|
6月前
|
SQL 存储 数据库
事务的ACID是什么及扁平化事务、链式事务
事务的ACID是什么及扁平化事务、链式事务
|
存储 Java 数据库
如何在业务中体现TCC事务模型?
在分布式系统设计中,随着微服务的流行,通常一个业务操作被拆分为多个子任务,比如电商系统的下单和支付操作,就涉及到了创建和更新订单、扣减账户余额、扣减库存、发送物流消息等,那么在复杂业务开发中,如何保证最终数据一致性呢?
134 0
|
7月前
|
缓存 NoSQL Java
事务问题的常用处理思路
事务问题的常用处理思路
|
7月前
|
消息中间件 RocketMQ 微服务
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)(下)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
209 1
|
SQL 消息中间件 数据库
带你读懂事务(下)、分布式事务
带你读懂事务(下)、分布式事务
97 0
|
数据库 微服务
分布式事务和事务的基本概念
分布式事务和事务的基本概念
113 0