首页 > 其他分享 >Mycat的事务支持情况

Mycat的事务支持情况

时间:2023-03-23 19:00:27浏览次数:26  
标签:事务 XA 支持 Mycat TM 分片 RM mycat

说mycat的事务支持之前,先说说XA协议,即分布式事务。指的是TM(事务管理器)和RM(资源管理器)之间的接口。

整个XA协议主要基于二阶段提交的概念。这个概念很好理解,当TM接到一个全局事务请求的时候,TM会把请求告知注册在它身上的所有RM,当所有RM准备就绪后,再执行commit操作。在这个过程中,如果某个RMcommit失败了,那么TM会进行协调,一可以回滚其它所有RM上的事务,二是等这个失败的RM恢复后,重新进行commit。

TM是用日志来记录XA事务的状态的,且日志必须存储的很可靠。当然,整个个XA协议,就是建立在可靠的TM和RM之上。

而mycat的事务支持是弱XA的,事务内的SQL在各自分片上执行并且返回状态码,如果某个分片上的返回码为error,mycat就认为本次事务失败了,此时将会一次回滚事务所涉及到的所有分片。反之,如果所有的分片都返回成功的返回码,则当AP(应用程序)提交事务的时候,mycat会同时向事务涉及的所有分片发送提交事务的命令。之所以说是弱XA,是因为在二阶段提交的工程中,若commit时某个节点出错了,只能回滚,而不会等其恢复后再次提交。

关于XA中特别重要的日志存储,mycat未来计划以zookeeper作为XA事务的日志存储手段,依靠zookeeper的可靠性,从而实现了TM角色的可靠性。

标签:事务,XA,支持,Mycat,TM,分片,RM,mycat
From: https://www.cnblogs.com/loquat6/p/17248542.html

相关文章