# 一、什么是XA

XA协议是由X/Open组织提出的分布式事务的规范(模型),这个模型中包含了几个角色,分别是AP(Application,应用,说白了就是我们的系统),TM(Transaction Manager,分布式事务管理器),RM(Resource Manager,资源管理器,可以理解成数据库),CRM(Communication Resource Manager,通信资源管理器,可以是消息中间件)

img

# 二、XA与2PC/3PC/TCC的关系

XA协议可以认为是理论支撑和接口规范,从理论上解决分布式环境下多个数据库的数据一致性问题,因为事务是基于数据库(资源管理器)实现的,同个数据库中事务可以控制,但是在分布式系统环境下,服务被拆分成多个,数据库也被拆分成多个(在不同的资源管理器中),所以XA引入TM(事物管理器)对不同RM进行协调。主流的诸如Oracle、MySQL等数据库均已实现了XA接口。

2PC/3PC则是基于XA规范的具体算法实现,详细的划分了每一步操作。

TCC不是基于XA规范实现,他的实现思想跟2PC类似,不过2PC是在数据库层面实现。TCC是在应用层面实现,代码侵入性较强,但是加锁粒度灵活,不阻塞其他事务对数据库的操作(因为有补偿机制)。

Last Updated: 2022-11-23 2:09:07 ├F10: PM┤