栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分布式事务专题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分布式事务专题

分布式事务理论 一、CAP定理

C :Consistency 强一致性
A :Availability 高可用性
P :Partition tolerance 分区容错性

CAP定理强调的各个部分都是强制的。
例如:
1.强一致性可以通过MySQL主从同步时,锁定从库,保证读取数据一定为最新
2.高可用性,允许读出旧数据,但是必须要及时返回
3.网络分区,必须容忍节点有无法通信的情况,而使得整个系统仍旧可以对外服务,实现:使用主从方案和异步方案。

二、BASE理论

我们称满足BASE理论的事务为柔性事务。
BASE理论特点:
1.基本可用性:核心功能正常响应
2.最终一致性
3.软状态:允许存在中间状态(支付中)

分布式事务解决方案


虽然seata四种都有实现,但是它首推AT模式

一、2PC


期间维护undo和redo用于回滚和入库
seata采用before image 和 after image

2PC的问题:
1.同步阻塞问题 ,一阶段,完成了一系列操作,但是仍需要TM的提交命令,这期间资源是被占用的,是阻塞的。
2.单点故障,一阶段结束,TM故障,导致二阶段无法进行,使得资源被一直阻塞。
3.数据不一致问题,一个事务提交,一个未提交

二、Seata对2PC的扩展基本流程

梳理好三者层级关系。(向下,向上的关系)


1)Seata方案—XA

XA:各个数据库厂商遵循的2PC定义的统一接口
特点:
1.性能:低
2.模式:CP,强一致性(第二阶段等各个服务都完成才提交。其他方案是第一阶段先提交,之后通过补偿策略)

应用场景:
1.金融,并发量不大,但是数据重要的场景


2)Seata方案—AT

特点:
1.性能:高(一阶段提交,减少同步阻塞)
2.模式:AP,存在中间数据不一致(因为第一阶段就提交事务了)
3.使用:需要自己能掌控数据库,因为要建立undo log表
RM和TM嵌入应用程序,以jar包形式存在

应用场景:
1.允许数据短时不一致,对账,补录保证最终一致性。

一阶段:

官方:

二阶段提交:

二阶段回滚:

3)Seata方案—TCC





特点:
1.性能:好(不加锁)
2.模式:AP,存在中间数据不一致(有中间状态)
3.使用:需要自己能掌控数据库,因为要自定义字段和规则

应用场景:
1.支持异构数据库,允许短时数据不一致
注意:
1.一般不用,比较复杂,一般采用下面MQ的TCC模式

4)MQ实现—TCC

gulimall 死信队列 实现

5)Seata方案—SAGA

特点:
性能:不一定,取决于三方
模式:AP,有中间状态
1.在架构中引入状态机机制,类似工作流
场景:
1.三方交互考虑,如:调用支付宝接口–>库存扣减失败–>调用支付宝退款接口。
2.一般不用,状态机啥的不会啊

6)柔性事务-最大努力通知型方案

不保证数据一定能通知成功,但会提供可查询操作接口进行核对。这种
方案主要用在与第三方系统通讯时,比如:调用微信或支付宝支付后的支付结果通知。这种方案也是结合 MQ 进行实现,例如:通过 MQ 发送 http 请求,设置最大通知次数。达到通知次数后即不再通知。

三、3PC

3PC基于2PC引入
1.超时重传机制
2.多引入准备阶段
由于3pc不方便实现,并且也不能完全保证一致性,就不细展开。

Seata快速实现–db版




1.seata连接数据库。
1)创建库和三张表
2)数据源地址配置(在seata压缩包内)

2.seata注册进nacos,配置加载进nacos

3.各个服务引入undo表

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/885725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号