当前位置: 首页 > 网络应用技术

SpringCloud高级:四个分布式交易的XA模式(4)

时间:2023-03-06 15:09:37 网络应用技术

  在前几章中,我们谈到了四项分布式交易中的前三个。今天,详细说明了最后一个XA模型。如果您对前三个模型感兴趣,则可以阅读上一篇博客文章。

  让我们看一下百科百科全书中XA的定义:

  XA协议首先是由Tuxedo提出的,并将其作为资源管理器(数据库)和事务管理器的接口标准移交给X/Open组织。Major数据库制造商(例如Oracle,Informix,db2和Sybase)都为XA提供了支持。XA协议采用了两个提交阶段来管理分布式交易。XA接口提供了资源管理器和交易管理器之间通信的标准接口。XA协议包括两组功能,这些功能从XA_开始,从AX_开始开头。

  XA协议主要定义事务管理(TM)和资源管理器(RM)之间的接口。从5.0版本开始,InnoDB存储引擎支持XA协议。

  如果您已经阅读了以前的模式,则更容易理解XA模式。XA模式过程分为提交的两个阶段:

  第一阶段:交易发起人TM TM应用于TC,以打开全球事务。RM从TC注册了各自的本地事务,RM执行本地事务,但并未真正提交,它将向TC报告报告。

  第二阶段:如果每项地方事务已成功执行,TC将发送提交给每个RM的提交指令,并实际提交本地事务。如果当地事务的实施不成功,TC将向RMS发送指令,该指令将指示发送给RMS已经执行了。

  让我们回顾一下AT模式:

  第一阶段:交易发起人TM TM应用于TC,以打开全球事务。每个称为的服务,即RM从TC.RM注册了各自的本地事务,都会生成撤消日志,并将其保存到撤消日志表中。执行执行后,将提交交易,并将执行状态报告给TC报告。

  第二阶段:如果每项本地事务已成功执行,TC将在图像和其他资源之后将删除撤消日志,全局锁,向每个rm发送。

  也就是说,AT模式的RM将在实施本地事务后提交交易,并且不会占用本地资源。XA模型是,在完成所有本地事务后,TC发送指令以允许所有RM提交交易并释放本地锁。

  这样的机制使XA占据了更多的资源,长时间和低性能。全部播放。可以想象一致性。因此,XA模型不会显得肮脏。

  应当指出,XA模型需要数据库本身来支持XA协议。像AT模式一样,它受存储数据库的特征的约束。

  在Seata中实现XA模式非常简单。它与AT模式相同。它也与代码相同。

  唯一要调整的是将数据源代理修改为XA模式:

  XA模型是分布式强一致性的解决方案,但是性能较低且使用较少,因此引入相对简单。

  它适用于需要低性能要求但需要强大一致性的业务场景。

  原始:https://juejin.cn/post/7096770145191723045