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原则是: • 一致性 • 可用性 • 分区容错性 是分布式事务主要是保证数据的一致性,主要有三种不同的原则 • 强一致性 • 弱一致性 • 最终一致性
386 0
分布式事务之事务实现模式与技术(四)
|
9天前
|
SQL 安全 关系型数据库
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
|
2月前
|
监控
Saga模式在分布式系统中保证事务的隔离性
Saga模式在分布式系统中保证事务的隔离性
|
4月前
Saga模式在分布式系统中如何保证事务的隔离性
Saga模式在分布式系统中如何保证事务的隔离性
|
5月前
|
数据库 微服务
GTS事务执行过程
【8月更文挑战第25天】
58 4
|
5月前
|
微服务 运维 监控
TCC和本地事务 容错
【8月更文挑战第10天】
62 12
|
5月前
|
微服务 中间件
TCC事务 基本思路
【8月更文挑战第9天】
53 4
|
数据库
【并发事务会产生哪些问题】
【并发事务会产生哪些问题】
148 0
|
设计模式 数据库 微服务
使用saga管理事务
使用saga管理事务
140 0
使用saga管理事务
|
8月前
|
调度 数据库 数据库管理
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
数据库事务中调度串行化、冲突可串行化、前趋图(优先图)
591 0

热门文章

最新文章