TCC和本地事务 容错

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

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

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

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

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

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

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

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

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

目录
相关文章
|
消息中间件 NoSQL Java
分布式事务之事务实现模式与技术(四)
在分布式系统中实现的事务就是分布式事务,分布式系统的CAP原则是: • 一致性 • 可用性 • 分区容错性 是分布式事务主要是保证数据的一致性,主要有三种不同的原则 • 强一致性 • 弱一致性 • 最终一致性
428 0
分布式事务之事务实现模式与技术(四)
|
3月前
分布式事务
CAP定理指出,分布式系统在一致性(C)、可用性(A)和分区容错性(P)中最多只能同时满足两项。而BASE理论则提供了一种解决思路,通过基本可用、软状态和最终一致性来设计系统,以适应分布式环境下的挑战。
46 6
|
4月前
|
监控
Saga模式在分布式系统中保证事务的隔离性
Saga模式在分布式系统中保证事务的隔离性
|
6月前
Saga模式在分布式系统中如何保证事务的隔离性
Saga模式在分布式系统中如何保证事务的隔离性
114 7
|
6月前
|
消息中间件 数据库
分布式事务(二)
分布式事务(二)
|
6月前
|
数据库 微服务
分布式事务系列(三)
分布式事务系列(三)
|
7月前
|
微服务 中间件
TCC事务 基本思路
【8月更文挑战第9天】
66 4
|
7月前
|
数据库
TCC+ SAGA事务
【8月更文挑战第12天】
62 0
|
设计模式 数据库 微服务
使用saga管理事务
使用saga管理事务
197 0
使用saga管理事务
|
存储 Java 数据库
如何在业务中体现TCC事务模型?
在分布式系统设计中,随着微服务的流行,通常一个业务操作被拆分为多个子任务,比如电商系统的下单和支付操作,就涉及到了创建和更新订单、扣减账户余额、扣减库存、发送物流消息等,那么在复杂业务开发中,如何保证最终数据一致性呢?
170 0