1、概念
本地事务是关系型数据库中,由一组SQL组成的一个执行单元,该单元要么整体成功,要么整体失败。
它有一个缺点:仅支持单库事务,并不支持跨库事务。
分布式事务,是指一个业务需要同时操作多个数据库的情况下,而且必须保持ACID的特性。一般应用于微服务的多服务处理。
2、示例

3、分布式CAP定理

eureka -AP

zookeper-CP



4、分布式BASE定理
什么是分布式BASE定理?
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。
BASE理论是由eBay架构师提出的。
BASE定理来源:是CAP中一致性和可用性的权衡结果,它来自于大规模互联网分布式系统的实践总结,是基于CAP定理逐步演化而来的。
BASE定理的核心思想:即使无法做到强一致性,但是每个应用可以根据自身的业务特定,采用合适的方式来达到最终一致性。
1)、基本可用性
损失响应时间
CAP可用性的服务响应时间可能是10ms,而BASE基本可用性的响应时间1-2s,即允许损失部分可用性的(时间上的损失)。

损失系统功能

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

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

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

4)分布式事务DTP模型
相关组织 opengroup
https://www.opengroup.org/

dtp模型

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


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

两阶段回滚

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

参与者宕机分析