mycat的事务支持状况

  中秋国庆一共12天,玩的有点嗨,彻底没想工做的事情- -。回来赶忙补补。看了一下mycat关于事务的支持状况,作一下记录。分布式

 说mycat的事务支持以前,先说说XA协议,即分布式事务。指的是TM(事务管理器)和RM(资源管理器)之间的接口,定义了一些以ax_,xa_开头的接口函数。以下:(来自XA规范文档)函数

  

  从这些函数的定义大体能够看出XA协议作的工做。整个XA协议主要基于二阶段提交的概念。这个概念很好理解,当TM接到一个全局事务请求的时候,TM会把请求告知注册在它身上的全部RM,当全部RM准备就绪后,再执行commit操做。在这个过程当中,若是某个RMcommit失败了,那么TM会进行协调,一能够回滚其它全部RM上的事务,二是等这个失败的RM恢复后,从新进行commit。日志

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

  

  而mycat的事务支持是弱XA的,事务内的SQL在各自分片上执行而且返回状态码,若是某个分片上的返回码为error,mycat就认为本次事务失败了,此时将会一次回滚事务所涉及到的全部分片。反之,若是全部的分片都返回成功的返回码,则当AP(应用程序)提交事务的时候,mycat会同时向事务涉及的全部分片发送提交事务的命令。接口

  之因此说是弱XA,是由于在二阶段提交的工程中,若commit时某个节点出错了,只能回滚,而不会等其恢复后再次提交。事务

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

相关文章
相关标签/搜索