一、XA是什么?
XA 协议本就是为一个分布式事务协议,它规定了 XA PREPARE、XA COMMIT、XA ROLLBACK 等命令。XA 协议规定了事务管理器(协调者)和资源管理器(数据节点)如何交互,共同完成分布式 2PC 的过程

XA主要规定了RM与TM之间的交互,下面来看下XA规范中定义的RM 和 TM交互的接口:

-
xa_start负责开启或者恢复一个事务分支,并且管理XID到调用线程
-
xa_end 负责取消当前线程与事务分支的关联
-
xa_prepare负责询问RM 是否准备好了提交事务分支
-
xa_commit通知RM提交事务分支
-
xa_rollback 通知RM回滚事务分支
XA协议是使用了二阶段协议的,其中:
第一阶段TM要求所有的RM准备提交对应的事务分支,询问RM是否有能力保证成功的提交事务分支,RM根据自己的情况,如果判断自己进行的工作可以被提交,那就就对工作内容进行持久化,并给TM回执OK;否者给TM的回执NO。RM在发送了否定答复并回滚了已经的工作后,就可以丢弃这个事务分支信息了。
第二阶段TM根据阶段1各个RM prepare的结果,决定是提交还是回滚事务。如果所有的RM都prepare成功,那么TM通知所有的RM进行提交;如果有RM prepare回执NO的话,则TM通知所有RM回滚自己的事务分支。

最低0.47元/天 解锁文章
1192

被折叠的 条评论
为什么被折叠?



