分布式事务处理方法和框架技术

技术编号:23787302 阅读:45 留言:0更新日期:2020-04-15 00:36
本发明专利技术公开了一种分布式事务处理方法和框架,涉及计算机技术领域。该方法包括:事务管理器在本地事务分支启动后,记录与本地事务分支执行相关的元数据,并将本地事务分支的执行结果发送至事务协调器;事务协调器在接收到一个事务分支执行失败的信息后,向全局事务中执行成功的事务分支所对应的事务管理器发送补偿指令;事务管理器在接收到补偿指令后,根据所述与本地事务分支执行相关的元数据对本地事务分支进行补偿。通过以上步骤,能够实现分布式事务自动补偿功能,尽量保证线上数据的一致性,使得开发人员只需要开发各应用的业务逻辑,无需考虑分布式事务出现异常应该如何补偿,进而提高开发效率、降低开发成本。

Distributed transaction processing method and framework

【技术实现步骤摘要】
分布式事务处理方法和框架
本专利技术涉及计算机
,尤其涉及一种分布式事务处理方法和框架。
技术介绍
随着互联网的发展,单应用已经无法满足业务场景需求。目前,业界的普遍做法是将应用进行垂直或水平拆分,以实现多应用。在多应用情况下,原来一个应用内部的调用变成多个应用之间的调用,从而对应的单应用事务变成了分布式事务。分布式事务解决方案主要分为以下几种:两段式提交、三段式提交、TCC(一种分布式事务解决方案,其包括三个阶段:Try、Confirm、Cancel,因此被称为TCC)以及基于消息的分布式事务。目前,两段式提交、三段式提交在互联网中的应用比较少,TCC和基于消息的分布式事务在互联网中应用较多。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:无论是基于TCC还是基于消息的分布式事务,都需要开发人员在业务出现异常时自行实现事务补偿(或称为“事务回滚”)机制。而这对于开发人员来说是一件非常头疼的事,非常考验研发人员对业务逻辑的把控能力。如果事务补偿(或称为“事务回滚”)逻辑出现问题,不仅会导致线上数据不一致的本文档来自技高网...

【技术保护点】
1.一种分布式事务处理方法,其特征在于,所述方法包括:/n事务管理器在本地事务分支启动后,记录与本地事务分支执行相关的元数据,并将本地事务分支的执行结果发送至事务协调器;所述执行结果为执行成功的信息或执行失败的信息;/n事务协调器在接收到一个事务分支执行失败的信息后,向全局事务中执行成功的事务分支所对应的事务管理器发送补偿指令;/n事务管理器在接收到所述补偿指令后,根据所述与本地事务分支执行相关的元数据对本地事务分支进行补偿。/n

【技术特征摘要】
1.一种分布式事务处理方法,其特征在于,所述方法包括:
事务管理器在本地事务分支启动后,记录与本地事务分支执行相关的元数据,并将本地事务分支的执行结果发送至事务协调器;所述执行结果为执行成功的信息或执行失败的信息;
事务协调器在接收到一个事务分支执行失败的信息后,向全局事务中执行成功的事务分支所对应的事务管理器发送补偿指令;
事务管理器在接收到所述补偿指令后,根据所述与本地事务分支执行相关的元数据对本地事务分支进行补偿。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
事务管理器在本地事务分支执行成功后,将全局事务标识透传至下一事务管理器的上下文中,以启动下一事务分支。


3.根据权利要求1所述的方法,其特征在于,所述事务管理器记录与本地事务分支执行相关的元数据的步骤包括:
对本地事务分支的数据库操作语句进行拦截、解析,以得到所述与本地事务分支执行相关的元数据;并将所述与本地事务分支执行相关的元数据进行本地存储。


4.根据权利要求3所述的方法,其特征在于,所述数据库操作语句为SQL语句;所述与本地事务分支执行相关的元数据包括:本地事务分支中每条SQL语句的元数据;
所述对本地事务分支的数据库操作语句进行拦截、解析,以得到所述与本地事务分支执行相关的元数据的步骤包括:在本地事务分支的SQL语句执行前,解析出SQL语句的类型;在所述SQL语句的类型为update语句时,根据生成的镜像查询语句查询得到SQL语句执行前的镜像数据,并将所述SQL语句和所述SQL语句执行前的镜像数据作为该条SQL语句的元数据;在所述SQL语句的类型为insert语句时,将所述SQL语句作为该条SQL语句的元数据。


5.根据权利要求4所述的方法,其特征在于,
所述对本地事务分支的数据库操作语句进行拦截、解析,以得到所述与本地事务分支执行相关的元数据的步骤还包括:在所述SQL语句的类型为update语句时,根据生成的镜像查询语句查询得到SQL语句执行后的镜像数据,并将所述SQL语句执行后的镜像数据也作为该条SQL语句的元数据;
所述方法还包括:在执行所述根据所述与本地事务分支执行相关的元数据对本地事务分支进行补偿的步骤之前,先根据所述SQL语句执行后的镜像数据对当前镜像数据进行一致性校验,并确定所述一致性校验通过。


6.根据权利要求1所述的方法,其特征在于,所述将本地事务分支的执行结果发送至事务协调器的步骤,和/或,所述根据所述与本地事务分支执行相关的元数据对本地事务分支进行补偿的步骤,是通过异步线程执行的。


7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
事务协调器在接收到的每个事务分支的执行结果均为执行成功的信息的情况下,向所述每个事务分支对应的事务管理器发送提交指令;
事务管理器在接收到所述提交指令后,将所述与本地事务分支执行相关的元数据发送至数据收集器,并将所述与本地事务分支执行相关的元数据从本地删除。


8.一种分布式事务处理框架,其特征在于,所述框架包括:多个事务管理器、事务协调器;
所述事务管理器,用于在本地事务分支启动后,记录与本地事务分支执行相关...

【专利技术属性】
技术研发人员:胡博
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1