TCC+ SAGA事务

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

有两个方案,第一个方案是异步比较数据并修复

搞了一个离线比对数据并修复的方案,就是用来查找这种相关联的数据的,一部分数据还处于初始化状态,但是一部分数据已经处于可用状态,然后修复那部分初始化的数据。

另外一个方案是:在读取数据的时候,如果发现数据不一致,就丢弃这个数据,同时触发修复逻辑

在一些业务场景下,读请求是能够发现这种数据不一致的。那么它就会立刻丢弃这个数据,并且触发修复程序。

到这里 TCC 你已经讨论得比较深入了。接下来你可以考虑尝试把话题引到 SAGA

TCC 整体来说是追求最终一致性的,和它类似的是 SAGA 事务,也是一个追求最终一致性的事务解决方案,也不满足 ACID 的要求。

#
核心思想:把业务分成一个个步骤,当某一个步骤失败的时候,就反向补偿前面的步骤
注意区分下:回滚和反向补偿
举个例子:某个步骤是插入数据,如果是回滚的话,那么是指插入的时候没有提交,然后业务失败的时候回滚;如果是反向补偿的话,那么是插入的时候已经提交了,在业务失败的时候执行删除

SAGA 的核心思想是反向补偿事务中已经成功的步骤。比如说某个业务,需要在数据库 1 和数据库 2 中都插入一条数据,那么在数据库 1 插入之后,数据库 2 插入失败,那么就要删除原本数据库 1 的数据。但是要注意,在最开始数据库 1 插入的时候,事务是已经被提交了的。

目录
相关文章
|
2月前
|
微服务 运维 监控
TCC和本地事务 容错
【8月更文挑战第10天】
45 12
|
2月前
|
微服务 中间件
TCC事务 基本思路
【8月更文挑战第9天】
36 4
|
设计模式 数据库 微服务
使用saga管理事务
使用saga管理事务
117 0
使用saga管理事务
|
存储 Java 数据库
如何在业务中体现TCC事务模型?
在分布式系统设计中,随着微服务的流行,通常一个业务操作被拆分为多个子任务,比如电商系统的下单和支付操作,就涉及到了创建和更新订单、扣减账户余额、扣减库存、发送物流消息等,那么在复杂业务开发中,如何保证最终数据一致性呢?
117 0
|
SQL JSON Java
Seata分布式事务模式(TA、TCC、XA、SAGA)工作机制
分布式应用有一个比较明显的问题就是,一个业务流程通常需要几个服务来完成,业务的一致性很难保证。为了保障业务一致性,每一步都要在 catch 里去处理前面所有的“回滚”操作,可读性及维护性差,开发效率低下。
413 0
|
数据库
Seata中的四种不同的事务模式之一 TCC
TCC模式与AT模式非常相似,每阶段都是独立事务,不同的是TCC通过人工编码来实现数据恢复。
143 0
|
安全 容灾 Nacos
Seata中的四种不同的事务模式之一SAGA模式
Saga 模式是 Seata 即将开源的长事务解决方案,由蚂蚁金服主要贡献
239 0
|
数据库 微服务
|
程序员
分布式事务 TCC
TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,也是一种补偿式的分布式事务。它通过在业务逻辑中嵌入Try-Confirm-Cancel三个阶段的逻辑,来保证分布式事务的一致性和可靠性。TCC协议的核心思想是“补偿机制”,即在分布式事务出现异常或失败时,通过执行相反的操作来补偿之前的操作,从而达到事务的一致性。
400 0
分布式事务之TCC提交协议
分布式事务之TCC提交协议
70 0