mycat的事务支持情况

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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之上。

⽽mycat的事务⽀持是弱XA的,事务内的SQL在各⾃分⽚上执⾏并且返回状态码,如果某个分⽚上的返回码为error,mycat就认为本次事务失败了,此时将会⼀次回滚事务所涉及到的所有分⽚。

反之,如果所有的分⽚都返回成功的返回码,则当AP(应⽤程序)提交事务的时候,mycat会同时向事务涉及的所有分⽚发送提交事务的命令。

之所以说是弱XA,是因为在⼆阶段提交的⼯程中,若commit时某个节点出错了,只能回滚,⽽不会等其恢复后再次提交。

关于XA中特别重要的⽇志存储,mycat未来计划以zookeeper作为XA事务的⽇志存储⼿段,依靠zookeeper的可靠性,从⽽实现了TM⾓⾊的可靠性。

相关文档
最新文档