TCC和本地事务 容错

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

在微服务架构中Try-Confirm-Cancel都对应一个微服务调用,你就可以猜测到,TCC的任何一个步骤都可以是本地事务

在TCC里面,Try可以是一个完整的本地事务,Confirm 也可以是一个完整的本地事务,Cancel 同样可以是一个完整的本地事务。

比如在我的某个业务里面,Try 本身就是插入数据,但是处于初始化状态,还不能使用。后续 Confirm 的时候就是把状态更新为可用,而 Cancel 则是更新为不可用,当然直接删除也是可以的。

不过TCC怎样都是是出错的,比如说在Confirm阶段出错或出现超时,所以你搞不清楚究竟有没有提交的。这里可以补一句,引出下面的亮点。

TCC用起来还是比较简单的,但是要想做好容错还是很不容易的。

容错很多时候就是重试,重试失败之后人工介入或者引入自动故障处理机制,后续尝试修复数据。
面试的时候需要一步步分析,首先要分析出错的场景
正常来说,TCC里面T阶段出错是没有关系的。比如说前面的那个例子里,数据处于初始化状态的时候,其实后续业务是用不了的,也不会有问题。但是如果在Confirm的时候出错了,问题就比较严重了。比如说一部分业务已经将数据更新为可用了,另外一部分业务更新数据为可用失败,那么就会出现不一致的情况。

基本上这里只能考虑不断地重试,确保在Confirm阶段都能提交成功。毫无疑问,不管怎么重试,最终都是要失败的,所以要做好监控和告警的机制

这里我们提到了重试最终都可能失败,所以紧接着你要进一步补充重试失败了以后怎么办。

目录
相关文章
|
消息中间件 NoSQL Java
分布式事务之事务实现模式与技术(四)
在分布式系统中实现的事务就是分布式事务,分布式系统的CAP原则是: • 一致性 • 可用性 • 分区容错性 是分布式事务主要是保证数据的一致性,主要有三种不同的原则 • 强一致性 • 弱一致性 • 最终一致性
分布式事务之事务实现模式与技术(四)
|
7天前
Saga模式在分布式系统中如何保证事务的隔离性
Saga模式在分布式系统中如何保证事务的隔离性
|
8天前
|
数据库 微服务
分布式事务系列(一)
分布式事务系列(一)
|
2月前
|
数据库
TCC+ SAGA事务
【8月更文挑战第12天】
32 0
|
数据库 微服务
|
程序员
分布式事务 TCC
TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,也是一种补偿式的分布式事务。它通过在业务逻辑中嵌入Try-Confirm-Cancel三个阶段的逻辑,来保证分布式事务的一致性和可靠性。TCC协议的核心思想是“补偿机制”,即在分布式事务出现异常或失败时,通过执行相反的操作来补偿之前的操作,从而达到事务的一致性。
400 0
|
消息中间件 SQL 存储
19、分布式事务
分布式事务
111 0
19、分布式事务
分布式事务Seata【四】事务补偿(TCC)
常见的分布式事务解决方案有 TCC、全局消息、基于可靠消息服务的分布式事务、最大努力通知等
952 1
分布式事务Seata【四】事务补偿(TCC)
|
消息中间件 程序员 Go
分布式事务-SAGA与消息
分布式事务分两大类,一类是XA类型的,一类是基于消息通知的事务方案。前些日子写了[分布式事务-2PC与TCC](https://mp.weixin.qq.com/s?__biz=MzUzNzAzMTc3MA==&mid=2247484814&idx=1&sn=e3467cbc3d7ae2149e8ad5c00ede9772&scene=21#wechat_redirect),这次聊一下Saga和基于消息的的事务方案。
|
消息中间件 存储 Oracle
浅析分布式事务
分布式事务的概念讲解以及常用解决方案
160 0
浅析分布式事务