深入理解分布式事务-原理与实践-分布式事务原理
在上一章中已经介绍了分布式事务的基础知识了,这一章将会介绍主要的几种分布式事务的原理,包括XA强一致性分布式事务原理、TCC分布式事务原理、可靠消息型分布式事务原理、最大努力通知型分布式事务原理
XA强一致性分布式事务原理
X/Open组织定于的分布式事务标准规划被称为X/Open DTP模型,定义了事务处理的规划和API,具体的实现由各个厂商进行负责实现;
-
DTP模型
主要定义了3个组件,分别是应用程序、资源管理器、事务管理器
应用程序:定义事务边界
资源管理器:提供访问资源的方式
事务管理器:分配事务ID、监控事务的执行进度、负责事务的提交和回滚 -
xa规范
- xa_start:负责开启或恢复一个分支事务
- xa_end:负责暂停或终止一个分支事务
- xa_prepare:负责对一个分支事务进行预提交操作
- xa_commit:负责提交一个分支事务
- xa_rollback:负责回滚一个分支事务
- xa_recover:负责在系统崩溃后,恢复未完成的分支事务
- xa事务的缺陷
- 同步阻塞
MySQl需要配合串行化的事务隔离级别来使用XA事务,这会导致性能下降。 - 单点故障
XA事务的协调者是事务管理器,如果事务管理器出现故障,资源管理器会一直等待,不会主动释放资源; - 数据不一致
在二阶段过程中,如果协调者向一部分资源管理器发送了提交请求,而另一部分资源管理器由于故障未能收到提交请求,就会导致数据不一致。
TCC分布式事务原理
TCC分布式事务最核心的思想就是在应用层将一个完整的事务拆分成三个阶段: Try、Confirm、Cancel。在某种程度上讲,TCC是一种资源,实现了Try-Confirm-Cancel三个操作接口,本质上还是两阶段提交的变种。
TCC分布式事务属于最终一致性下的补偿性事务