分布式事务

[复制链接]
发表于 2025-3-12 11:46:35 | 显示全部楼层 |阅读模式

1、概念

本地事务是关系型数据库中,由一组SQL组成的一个执行单元,该单元要么整体成功,要么整体失败。
它有一个缺点:仅支持单库事务,并不支持跨库事务。

分布式事务,是指一个业务需要同时操作多个数据库的情况下,而且必须保持ACID的特性。一般应用于微服务的多服务处理。

2、示例

image.png

3、分布式CAP定理

image.png

eureka -AP

image.png

zookeper-CP

image.png

image.png

image.png

4、分布式BASE定理

什么是分布式BASE定理?

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。
BASE理论是由eBay架构师提出的。

BASE定理来源:是CAP中一致性和可用性的权衡结果,它来自于大规模互联网分布式系统的实践总结,是基于CAP定理逐步演化而来的。
BASE定理的核心思想:即使无法做到强一致性,但是每个应用可以根据自身的业务特定,采用合适的方式来达到最终一致性。

1)、基本可用性

损失响应时间
CAP可用性的服务响应时间可能是10ms,而BASE基本可用性的响应时间1-2s,即允许损失部分可用性的(时间上的损失)。

image.png
损失系统功能

image.png

2)、软状态

什么是硬状态
什么硬状态?指ACID的原子性。
硬状态只有在订单改状态、积分发送成功、仓库出单成功,即3者同时成功的情况才算支付成功。

image.png

什么软状态?不要完全符合ACID的原子性。
先把订单状态改成已支付成功,然后告诉用户已经支付成功了剩下在异步发送mq消息通知积分服务和仓库服务。即使消费失败,MO消息也会重新发送(重试)。

image.png

3)最终一致性

什么是强一致性?指ACID的原子性 和硬状态一样
什么是最终一致性?和强一致性相反,数据不用即时一致。如何实现最终一致性?一般是通过异步来实现,失败了就重试。在不影响用户体验的情况下,可以延时,即使失败了采用重试处理。

image.png

4)分布式事务DTP模型

相关组织 opengroup

https://www.opengroup.org/

image.png

dtp模型

image.png

5) 分布式通信协议XA规范

在DTP分布式事务模型中,XA规范除了定义的RM-TM交互的接口,即TM与数据库之间的接口规范,TM用它来通知数据库事务的开始、结束以及提交、回滚等。而XA接口函数由数据库厂商提供(例如 mysql、oracle)。

image.png

image.png

基于XA协议 实现一个二阶段分布式事务

两阶段提交

image.png

两阶段回滚

image.png

Atomikos

刚性事务(全局事务)的缺陷、

协调者宕机分析

1.如果在第一阶段,协调者宕机,那么所有参与者将无法再收到协调者第二阶段的commit 或rollback命令,故会一直阻寨下去,本地事务无法结束。
解决方案:所有参与者统-rollback(因为还未进入第二阶段,所有参与者都不会接收到提交或回滚的命令,当前事务是无法继续提交的,故只能回滚。)
2.如果在第二阶段,协调者宕机,那么可能部分参与者没有接收到Commit、rollback,那么这部分没有接收到命令的参与者都会一直阻塞下去。

image.png

参与者宕机分析

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

GMT+8, 2025-4-20 17:37 , Processed in 0.072610 second(s), 35 queries Archiver|手机版|小黑屋|Attic ( 京ICP备2020048627号 )

快速回复 返回顶部 返回列表