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角色的可靠性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了