[发明专利]分布式事务一致性实现方法及装置有效
申请号: | 201610356714.5 | 申请日: | 2016-05-26 |
公开(公告)号: | CN107436799B | 公开(公告)日: | 2020-11-03 |
发明(设计)人: | 徐会卿 | 申请(专利权)人: | 创新先进技术有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F9/50;G06F16/23 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 李辉;刘飞 |
地址: | 开曼群岛大开曼岛*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 事务 一致性 实现 方法 装置 | ||
本申请实施例提供了一种分布式事务一致性实现方法及装置,该方法包括:获取发起方发起的事务启动请求;为所述事务启动请求分配事务号及数据库连接,并向所述发起方返回所述事务号;在收到所述发起方调用各个参与方的调用请求时,基于所述调用请求中携带的事务号将所述调用请求路由至所述数据库连接中,以根据对应的调用请求执行相应的数据库操作;在收到所述发起方的事务提交请求时,基于所述事务提交请求中携带的事务号将所述事务提交请求路由至所述数据库连接中,以执行事务提交。本申请实施例可保证分布式事务一致性的及时性。
技术领域
本申请涉及分布式事务一致性保证技术领域,尤其是涉及一种分布式事务一致性实现方法及装置。
背景技术
在分布式系统中,一个分布式事务的业务逻辑往往需要多个系统进行处理,但最终要保证多个系统处理的一致性。如计算密集型的业务场景,为了加快计算的速度,会将计算拆分到多个系统进行并行计算,多个系统计算完毕后需要汇总到数据库,因此,业务上会要求多个系统的计算结果要正确的体现到数据库中,不应出现遗漏等错误。再比如同时存在两个系统A和B,A是积分系统,B是订单系统。B系统在下订单时需要调用A系统进行积分扣减,业务要求订单使用积分时,若订单成功,积分必须扣减,若订单失败,积分不得扣减。
目前常采用两阶段提交(two phase commit protocol,2PC)的方式来实现分布式事务的一致性。两阶段提交主要流程包括:首先发起一阶段操作,调用所有参与方,然后根据参与方返回结果发起二阶段。然而,由于每个参与方都是在发起方的协调下,各自直接与数据库进行交互的,这样,每个参与方对数据库的操作本质上都是一个单独的事务,因此,在一阶段时,可能会出现一部分参与方提交成功,而另一部分参与方提交失败的情况,这时就会出现事务中间状态,需要通过重试机制重试,待重试成功,分布式事务最终才可能达到一致。
因此,现有的两阶段提交方式容易出现事务中间状态,难以及时保证分布式事务的一致性。
发明内容
本申请实施例的目的在于提供一种避免出现事务中间状态的分布式事务一致性实现方法及装置,以达到及时保证分布式事务一致性的目的。
为达到上述目的,一方面,本申请实施例提供了一种分布式事务一致性实现方法,包括以下步骤:
获取发起方发起的事务启动请求;
为所述事务启动请求分配事务号及数据库连接,并向所述发起方返回所述事务号;
在收到所述发起方调用各个参与方的调用请求时,基于所述调用请求中携带的事务号将所述调用请求路由至所述数据库连接中,以根据对应的调用请求执行相应的数据库操作;
在收到所述发起方的事务提交请求时,基于所述事务提交请求中携带的事务号将所述事务提交请求路由至所述数据库连接中,以执行事务提交。
另一方面,本申请实施例还提供了一种分布式事务一致性实现装置,包括:
事务启动请求获取模块,用于获取发起方发起的事务启动请求;
事务启动请求启动模块,用于为所述事务启动请求分配事务号及数据库连接,并向所述发起方返回所述事务号;
调用请求处理模块,用于在收到所述发起方调用各个参与方的调用请求时,基于所述调用请求中携带的事务号将所述调用请求路由至所述数据库连接中,以根据对应的调用请求执行相应的数据库操作;
提交请求处理模块,用于在收到所述发起方的事务提交请求时,基于所述事务提交请求中携带的事务号将所述事务提交请求路由至所述数据库连接中,以执行事务提交。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于创新先进技术有限公司,未经创新先进技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610356714.5/2.html,转载请声明来源钻瓜专利网。