Seata
2023-05-23 21:07:54 18 举报
AI智能生成
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。它为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。Seata将为用户提供高效、可靠且对业务无侵入的分布式事务服务,推进微服务架构的落地与推广。 希望这能回答您的问题。如果您还有其他问题,请随时问我。
作者其他创作
大纲/内容
Seata 是⼀款开源的分布式事务框架。
微服务框架支持
提供⽆侵⼊⾃动补偿的事务模式,⽬前已⽀持 MySQL、 Oracle 、PostgreSQL和 TiDB的AT模式, H2 开发中
AT(Automatic Transaction)模式
⽀持 TCC 模式并可与 AT 混⽤,灵活度更⾼
TCC模式
为⻓事务提供有效的解决⽅案
SEGA模式
⽀持已实现 XA 接⼝的数据库的 XA 模式
XA模式
⽀持基于数据库存储的集群模式,⽔平扩展能⼒强
高可用
特点(Feature)
介绍
AT 模式是⼀种⽆侵⼊的分布式事务解决⽅案(官方推荐)
AT模式的特点就是对业务无入侵式,整体机制分二阶段提交
一阶段
⼆阶段如果是提交的话,因为“业务 SQL”在⼀阶段已经提交⾄数据库, 所以 Seata 框架只需将 ⼀阶段保存的快照数据和⾏锁删掉,完成数据清理即可。
提交
⼆阶段如果是回滚的话,Seata 就需要回滚⼀阶段已经执⾏的“业务 SQL”,还原业务数据。回滚⽅式便是⽤“before image”还原业务数据;但在还原前要⾸先要校验脏写,对⽐“数据库当前业务数据”和 “after image”,如果两份数据完全⼀致就说明没有脏写,可以还原业务数据,如果不⼀致就说明有脏写,出现脏写就需要转⼈⼯处理。
回滚
二阶段
Seata具体的实现步骤
原理
RM/TM端整合 Seata 步骤
Seata AT模式(推荐)
TCC 模式需要⽤户根据⾃⼰的业务场景实现 Try、Confirm 和 Cancel 三个操作;事务发起⽅在⼀阶段 执⾏ Try ⽅式,在⼆阶段提交执⾏ Confirm ⽅法,⼆阶段回滚执⾏ Cancel ⽅法。
RM/TM整合 Seata步骤
允许空回滚
防悬挂控制
幂等控制
TCC设计
Seata TCC模式
Saga 模式是 Seata 开源的⻓事务解决⽅案。在 Saga 模式下,分布式事务 内有多个参与者,每⼀个参与者都是⼀个冲正补偿服务,需要⽤户根据业务场景实现其正向操作和逆向回滚操作。
分布式事务执⾏过程中,依次执⾏各参与者的正向操作,如果所有正向操作均执⾏成功,那么分布式事务提交。如果任何⼀个正向操作执⾏失败,那么分布式事务会去退回去执⾏前⾯各参与者的逆向回 滚操作,回滚已提交的参与者,使分布式事务回到初始状态。
事务执行流程
业务流程⻓、业务流程多
参与者包含第三⽅公司或遗留系统服务,⽆法提供 TCC 模式要求的三个接⼝。典型业务系统:如⾦融⽹络(与外部⾦融机构对接)、互联⽹微贷、渠道整合等业务系统
适用场景
一阶段提交本地数据库事务,无锁,高性能
参与者可以采用事务驱动异步执行,高吞吐;
补偿服务即正向服务的“反向”,易于理解,易于实现;
优势
Saga 模式由于一阶段已经提交本地数据库事务,且没有进行“预留”动作,所以不能保证隔离性。
劣势
Saga模式优/劣势
Saga设计
Seata Saga模式
三种模式比较
TM / RM 初始化与服务注册TC
TM开启全局事务
RM分事务的创建
TM / RM事务提交
AT源码
TCC源码
源码流程
Seata
0 条评论
回复 删除
下一页