SAGA并发调度+ AT事务

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

大部分人没有使用过 SAGA。我这里给出我曾经使用过一个实现比较复杂但是理论很简单的 SAGA 调度机制,你可以用来刷亮点,关键词是并发调度

早期我设计过一个比较复杂的 SAGA 机制,它支持并发调度。也就是说如果整个分布式事务中有可以并发执行的步骤,那么就并发执行,在后续出错的时候,这些并发执行的步骤也可以并发反向补偿

SAGA 本身也是需要考虑容错的,难点就是在反向补偿的时候失败了怎么办?比如说在前面的例子里,你准备删除数据的时候失败了。那么还是没有特别好的办法,无非就是不断重试,这一部分你可以参考 TCC 中讨论的容错内容。
在讲完容错之后,紧接着你可以尝试把话题引导到 AT。

我个人认为最近比较流行的 AT 模式可以看作是 SAGA 的一种特殊形态,或者说简化形态。

#
AT 是指如果你操作很多个数据库,那么分布式事务中间件会帮你生成这些数据库操作的反向操作
这就有点类似于 undo log。比如说你数据库操作是一个 INSERT,那么对应的反向补偿操作就是 DELETE 了。你在回答的时候就可以结合 undo log 一起回答,顺便把话题引导到 undo log 上

AT 模式的核心是分布式事务中间件会帮你生成数据库的反向操作,比如说 INSERT 对应的就是 DELETE,UPDATE 对应的就是 UPDATE,DELETE 对应的就是 INSERT。这个机制有点类似于 undo log。

同样地,AT 事务也有容错的问题,它的容错和 SAGA 一样,都是在反向补偿的时候出错了该怎么办。这里我就不赘述了,你可以参考前面的内容。
在回答了这些内容之后,你还可以进一步强调可以考虑禁用跨库事务。

如果是单纯使用分库分表,不涉及多个服务的分布式事务,可以考虑直接禁用跨库事务,一了百了。

目录
相关文章
|
消息中间件 NoSQL Java
分布式事务之事务实现模式与技术(四)
在分布式系统中实现的事务就是分布式事务,分布式系统的CAP原则是: • 一致性 • 可用性 • 分区容错性 是分布式事务主要是保证数据的一致性,主要有三种不同的原则 • 强一致性 • 弱一致性 • 最终一致性
分布式事务之事务实现模式与技术(四)
原理篇:Seata TCC模式是如何解决幂等性、资源悬挂、空回滚问题的
原理篇:Seata TCC模式是如何解决幂等性、资源悬挂、空回滚问题的
1089 0
|
22天前
|
数据库 微服务
GTS事务执行过程
【8月更文挑战第25天】
26 4
|
1月前
|
微服务 运维 监控
TCC和本地事务 容错
【8月更文挑战第10天】
43 12
|
11月前
|
数据库
【并发事务会产生哪些问题】
【并发事务会产生哪些问题】
113 0
|
设计模式 数据库 微服务
使用saga管理事务
使用saga管理事务
113 0
使用saga管理事务
|
存储 Java 数据库
如何在业务中体现TCC事务模型?
在分布式系统设计中,随着微服务的流行,通常一个业务操作被拆分为多个子任务,比如电商系统的下单和支付操作,就涉及到了创建和更新订单、扣减账户余额、扣减库存、发送物流消息等,那么在复杂业务开发中,如何保证最终数据一致性呢?
112 0
|
4月前
|
关系型数据库 MySQL 数据库
事务和锁:保证数据一致性
事务和锁:保证数据一致性
54 0
|
4月前
|
调度 数据库 数据库管理
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
307 0
|
11月前
|
存储 Java 关系型数据库
ShedLock的4种使用方式(分布式定时任务锁)
ShedLock的4种使用方式(分布式定时任务锁)
198 0