跳至主要內容

分布式事务

zzz大约 2 分钟后端分布式分布式事务

分布式事务

2PC 两阶段提交

2PC应用之XA

XA是X/Open组织提出的,定义了事务管理器与资源管理器之间通信的接口协议;XA协议由数据库实现,目前支持XA协议的数据库有Oracle、MySql、BD2等;

一个数据库实现XA协议之后,它就可以作为作为一个资源管理器参与到分布式事务中;

2PC应用之TCC

柔性事务

单数据库事务完全遵循ACID规范,属于刚性事务,分布式事务要完全遵循ACID规范比较困难, 分布式事务属于柔性事务,满足BASE理论;

BASE描述: BA(Basic Availability 基本业务可用性)、S(Soft state 柔性状态)、E(Eventual consistency 最终一致性);

柔性事务对ACID的支持:

1、原子性:

严格遵循;

2、一致性:

事务完成后的一致性严格遵循,事务中的一致性可适当放宽;

3、隔离性:

并行事务间不可影响;事务中间结果可见性允许安全放宽;

4、持久性:

严格遵循;

为了可用性、性能的需要,柔性事务降低了一致性(C)与隔离性(I) 的要求,即“基本可用,最终一致”;

柔性事务的分类

柔性事务分为:两阶段型、补偿型、异步确保型、最大努力通知型;

1、两阶段型

就是分布式事务两阶段提交,对应技术上的XA、JTA/JTS,这是分布式环境下事务处理的典型模式。

2、补偿型

TCC型事务(Try/Confirm/Cancel)可以归为补偿型;TCC思路是:尽早释放锁;在Try成功的情况下,如果事务要回滚,Cancel将作为一个补偿机制,回滚Try操作;

TCC各操作事务本地化,且尽早提交 (放弃两阶段约束);当全局事务要求回滚时,通过另一个本地事务实现“补偿”行为;

TCC是将资源层的两阶段提交协议转换到业务层,成为业务模型中的一部分;

3、异步确保型

将一些同步阻塞的事务操作变为异步的操作,避免对数据库事务的争用;比如消息事务机制;

4、最大努力通知型

通过通知服务器(消息通知)进行,允许失败,有补充机制;

所有引用