[发明专利]分布式事务的实现方法及装置在审
申请号: | 201911184934.4 | 申请日: | 2019-11-27 |
公开(公告)号: | CN110888718A | 公开(公告)日: | 2020-03-17 |
发明(设计)人: | 王涛;伍孟轩;陈浩 | 申请(专利权)人: | 武汉虹旭信息技术有限责任公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F16/242 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 张睿 |
地址: | 443000 湖北省武汉市江*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 事务 实现 方法 装置 | ||
本发明实施例提供一种分布式事务的实现方法及装置。其中,方法包括:根据预先配置的代理数据源执行分支事务,并将分支事务的操作记录写入MySQL binlog日志;注册分支事务,释放分支事务的资源锁。本发明实施例提供的分布式事务的实现方法及装置,通过将分支事务的操作记录写入MySQL binlog日志,注册分支事务,释放分支事务的资源锁,能在保证可以实现回滚的情况下,减少锁资源的时间,不会导致在实现全局事务时系统性能显著下降。并且预先配置代理数据源,整个分布式事务的实现过程不侵入原有系统业务代码,不会导致在实现全局事务时系统性能显著下降。
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种分布式事务的实现方法及装置。
背景技术
传统Web系统多为单体应用,一个系统只需要一个数据源,数据库操作的ACID特性由数据库本地事务控制即可,随着互联网的高速发展,系统的业务逻辑越来越复杂,用户量快速增长,单体应用无法满足业务的可维护性,并且面临性能瓶颈,于是出现了业务拆分,数据库的拆分,出现不同业务操作不同数据库的情况,不同的数据库甚至在不同的服务器上,传统的数据库本地事务无法处理这样跨数据库的事务,于是出现了分布式事务。
现有分布式事务的实现主要包括三种方法:一是基于XA协议,要求数据库支持实现了XA接口,使用上无代码入侵,但是业务执行和事务提交全程锁定资源,造成效率低下甚至出现死锁;二是基于可靠消息中间件的最终一致性,只保证最终业务消息凭证可靠保存,需自行实现回滚方法;三是基于TCC框架模式,需所有接口实现try,confirm,cancel方法,对业务入侵较严重。综上,现有分布式事务实现系统,在实现全局事务时系统性能显著下降。
发明内容
本发明实施例提供一种分布式事务的实现方法及装置,用以解决或者至少部分地解决现有技术存在的在实现全局事务时系统性能显著下降的缺陷。
第一方面,本发明实施例提供一种分布式事务的实现方法,包括:
根据预先配置的代理数据源执行分支事务,并将所述分支事务的操作记录写入MySQL binlog日志;
注册所述分支事务,释放所述分支事务的资源锁。
优选地,所述注册所述分支事务之后,还包括:
接收所述分支事务的回滚请求;
获取MySQL binlog日志中所述分支事务的操作记录;
根据所述分支事务的操作记录重新执行所述分支事务。
优选地,所述根据所述分支事务的操作记录重新执行所述分支事务的具体步骤包括:
所述根据所述分支事务的操作记录,生成反向SQL语句;
执行所述反向SQL语句;
根据预先配置的代理数据源执行分支事务。
优选地,所述根据预先配置的代理数据源执行分支事务之前,还包括:
开启MySQL数据库的binlog日志,并将所述MySQL binlog日志的格式设置为ROW模式。
优选地,所述注册所述分支事务的具体步骤包括:
将所述分支事务的标识和所述分支事务所属全局事务的标识发送至事务注册中心模块。
优选地,所述获取MySQL binlog日志中所述分支事务的操作记录的具体步骤包括:
根据所述分支事务的标识查询MySQL binlog日志,获取所述分支事务的操作记录。
第二方面,本发明实施例提供一种分布式事务的实现装置,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉虹旭信息技术有限责任公司,未经武汉虹旭信息技术有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911184934.4/2.html,转载请声明来源钻瓜专利网。