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