CN109241186A - 分布式事务的管理方法、***、计算机设备及存储介质 - Google Patents
分布式事务的管理方法、***、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109241186A CN109241186A CN201810995734.6A CN201810995734A CN109241186A CN 109241186 A CN109241186 A CN 109241186A CN 201810995734 A CN201810995734 A CN 201810995734A CN 109241186 A CN109241186 A CN 109241186A
- Authority
- CN
- China
- Prior art keywords
- message
- upstream
- transactions
- downstream
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了分布式事务的管理方法、***、设备及存储介质,方法包括:根据第一预设规则将分布式事务拆分为上、下游事务以及将上、下游事务分别对应分配到上、下游事务处理器中;接收来自上游事务处理器发送的处理所述分布式事务的消息;将该消息的状态保存为待确认状态并存储于一消息表中;若上游事务执行完成,接收来自上游事务处理器发送的确认指令;若接收到确认指令,将该消息的状态更新为发送状态并发送至下游事务处理器;若下游事务执行失败,返回所述发送至下游事务处理器的步骤;若没有接收到确认指令,查询消息表中待确认状态的消息并根据消息检查上游事务是否执行成功;若执行成功,返回将所述消息的状态更新为发送状态的步骤。
Description
技术领域
本发明涉及分布式应用领域,尤其涉及一种分布式事务的管理方法、***、 计算机设备及存储介质。
背景技术
由于现代互联网应用的业务量和数据量剧增,需要对应用和数据库进行拆 分,其中,对应用的后台服务做了服务化拆分,对数据库也按照业务功能进行 拆分,因此,一些比较复杂的业务功能就需要涉及到跨服务、跨数据库的业务 处理,即完成一件事务需要访问两个或两个以上数据库或服务器的情况,这就 产生了分布式事务及数据一致性的问题。目前,对于分布式***中存在的一些 长事务,采用同步的方式来调用服务,容易导致这些服务的吞吐量不高,形成 了一些性能瓶颈,且由于不仅对数据库进行了拆分,对应用也进行了拆分,数 据访问变得更加复杂,执行任务时经常需要跨越多个服务器进行调用,难以保证分布式事务问题。
因此,如何在不锁资源,不影响性能的前提下解决分布式事务问题,是本 领域技术人员亟待解决的技术问题。
发明内容
本发明实施例提供了一种分布式事务的管理方法、***、计算机设备以及 存储介质,旨在解决分布式事务及数据一致性问题,且可以在不锁资源,不影 响性能的前提下有效解决分布式事务问题,更好地保证数据一致性。
为了解决上述问题,第一方面,本发明实施例提供了一种分布式事务的管 理方法,其包括:根据第一预设规则将分布式事务拆分为上游事务以及下游事 务以及将上游事务以及下游事务分别对应分配到上游事务处理器以及下游事务 处理器中;接收来自所述上游事务处理器发送的处理所述分布式事务的消息; 将所述消息的状态保存为待确认状态并存储于一消息表中;若所述上游事务执 行完成,接收来自所述上游事务处理器发送的确认指令;若接收到所述确认指 令,将所述消息的状态更新为发送状态并将所述消息发送至所述下游事务处理 器;若所述下游事务执行失败,返回将所述消息发送至所述下游事务处理器的 步骤;若没有接收到所述确认指令,查询所述消息表中待确认状态的消息并根据所查询的消息检查所述上游事务是否执行成功;若所述上游事务执行成功, 返回将所述消息的状态更新为发送状态并将所述消息发送至所述下游事务处理 器的步骤。
第二方面,本发明实施例还提供了一种分布式事务的管理***,其包括: 包括事务拆分子***、消息服务子***、消息恢复子***以及消息中间件;所 述事务拆分子***用于根据第一预设规则将分布式事务拆分为上游事务以及下 游事务以及将上游事务以及下游事务分别对应分配到上游事务处理器以及下游 事务处理器中;所述消息服务子***用于接收来自所述上游事务处理器发送的 处理所述分布式事务的消息;所述消息服务子***用于将所述消息的状态保存 为待确认状态并存储于一消息表中;所述消息服务子***用于若所述上游事务 执行完成,接收来自所述上游事务处理器发送的确认指令;所述消息服务子系 统用于若接收到所述确认指令,将所述消息的状态更新为发送状态并将所述消 息发送至消息中间件;所述消息中间件用于将所述消息发送至所述下游事务处 理器;所述消息恢复子***用于若所述下游事务执行失败,返回将所述消息发 送至所述下游事务处理器的步骤;所述消息恢复子***用于若没有接收到所述 确认指令,查询所述消息表中待确认状态的消息并根据所查询的消息检查所述 上游事务是否执行成功;所述消息恢复子***用于若所述上游事务执行成功, 返回将所述消息的状态更新为发送状态并将所述消息发送至所述下游事务处理 器的步骤。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括 存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算 机程序时实现上述第一方面的方法。
第四方面,本发明实施例还提供了一种存储介质,所述存储介质存储有计 算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可 实现上述第一方面的方法。
本发明实施例提供了一种分布式事务的管理方法、***、计算机设备以及 存储介质。本发明实施例将分布式事务拆分为上游事务以及下游事务,可以有 效提升分布式***的吞吐量,其中,上游事务执行成功,通过消息恢复子*** 的失败重试机制确保下游事务也一定能成功,可以有效实现跨服务、跨数据库 的数据的最终一致性的目的,且可以在不锁资源,不影响性能的前提下有效解 决分布式事务问题,更好地保证数据一致性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要 使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
图1是本发明实施例提供的一种分布式事务的管理方法的场景示意图;
图2是本发明第一实施例提供的一种分布式事务的管理方法的流程示意图;
图3是本发明第二实施例提供的一种分布式事务的管理方法的子流程示意 图;
图4是本发明第三实施例提供的一种分布式事务的管理方法的流程示意图;
图5是本发明实施例提供的一种分布式事务的管理***的示意性框图;以 及
图6是本发明实施例提供的一种计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部 的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳 动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含” 指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个 或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施 例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使 用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该” 意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包 括这些组合。
请参阅图1,其是本发明实施例提供的一种分布式事务的管理方法的场景示 意图。该分布式事务的管理方法应用于一管理服务器中。在一实施例中,该分 布式事务的管理方法可以应用于一分布式***中的一管理服务器中,也可以应 用于多个分布式***。在其他实施例中,该分布式事务的管理方法具体应用于 一移动互联网销售平台的服务器中。另外,该上游事务处理器和下游事务处理 器可以为智能手机(如Android手机、IOS手机等)、平板电脑或个人数字助理 (PDA)等终端设备,也可以为同一分布式***中的不同事务服务器,或者也 可以为不同分布式***中的事务服务器,在此不做具体限制。
如图1所示,管理服务器将分布式事务拆分为上游事务以及下游事务,并 将上游事务以及下游事务分别对应分配到上游事务处理器以及下游事务处理器 中,其中,当该管理服务器接收到上游事务处理器发送的处理分布式事务消息 时,将所述消息的状态保存为待确认状态并存储于一消息表中;然后上游事务 处理器执行上游事务,并发送确认指令到该管理服务器,若接收到该确认指令 则将该消息的状态更新为发送状态并发送至下游事务处理器,触发下游事务处 理器执行下游事务,若下游事务执行失败,则重新发送消息至下游事务处理器 以触发下游事务处理器执行下游事务,若下游事务执行成功,则删除该消息; 另外,若没有接收到该确认指令,则查询待确认的消息,并检索所述上游事务 是否执行成功,若执行成功,则更新该消息的状态并重新发送消息以触发下游 事务处理器执行下游事务。本发明实施例将分布式事务拆分为上游事务以及下 游事务,可以有效提升分布式***的吞吐量,其中,上游事务执行成功,通过 消息恢复子***的失败重试机制确保下游事务也一定能成功,可以有效实现跨 服务、跨数据库的数据的最终一致性的目的,且可以在不锁资源,不影响性能 的前提下有效解决分布式事务问题,更好地保证数据一致性。
下面将结合说明书附图对本发明中分布式事务的管理方法做详细地介绍。
请参阅图2,其是本发明第一实施例提供的一种分布式事务的管理方法的示 意性流程图。具体地,该分布式事务的管理方法可应用于一分布式***中,也 可以应用于多个分布式***中,可包括步骤S110至S180。
S110、根据第一预设规则将分布式事务拆分为上游事务以及下游事务以及 将上游事务以及下游事务分别对应分配到上游事务处理器以及下游事务处理器 中。
具体地,分布式事务是指事务的参与者、支持事务的服务器、资源服务器 以及事务协调器分别位于不同的分布式***的不同节点之上,即一次大的操作 是由不同的小操作组成,所述小操作分别分布在不同的服务器上,该不同的服 务器在物理上属于相互独立的节点,且属于不同的应用,在分布式事务中需要 保证所述小操作要么全部成功,要么全部失败,由于每个所述小操作的成功提 交不仅依赖于其本身操作的成功提交还要依赖于与全局事务相关的其他小操作 是否成功提交,因此,分布式事务就是为了保证不同服务器最终处理结果以及 不同数据库的数据一致性。本发明实施例根据第一预设规则将分布式事务拆分 成上游事务和下游事务,上游事务和下游事务之间的数据一致性可以通过本发明实施例所提供的分布式事务管理方法实现,其中,所述第一预设规则为将分 布式事务中位于相同数据库或相同服务器里的事务拆分为上游事务以及下游事 务,进而将上游事务以及下游事务分别对应分配到上游事务处理器以及下游事 务处理器中,在一实施例中,所述上游事务处理器可以用于进行事务的简单记 录,所述下游事务处理器用于通过消息中间件通知进行异步处理。通过将分布 式事务这一长事务拆分成上下游事务可以有效提升***的吞吐量。
S120、接收来自所述上游事务处理器发送的处理所述分布式事务的消息。
具体地,所述上游事务处理器在执行上游事务前,先发送与该分布式事务 对应的消息。
S130、将所述消息的状态保存为待确认状态并存储于一消息表中。
具体地,当接收到来自所述上游事务处理器发送的处理所述分布式事务的 消息时,将所述消息的状态保存为待确认状态以及存储于一消息表中,其中, 该所述上游事务处理器发送的消息只是存储于一消息表中,并没有真正被发送 以执行完成相应的事务,因此,所述消息为预发布消息,即为预先储存在所述 消息表中,其中,所述消息表存储于一关系型数据库中,便于***读取数据以 及提升读取数据的速度,所述关系型数据库可以配置于一分布式事务管理*** 中,也可以独立配置于一服务器中。
S140、若所述上游事务执行完成,接收来自所述上游事务处理器发送的确 认指令。
具体地,在一实施例中,当将所存储的消息的状态保存为待确认状态后, 发送执行结果到所述上游事务处理器,进而触发所述上游事务处理器执行上游 事务,当上游事务执行完成后,发送确认指令。
S150、若接收到所述确认指令,将所述消息的状态更新为发送状态并将所 述消息发送至所述下游事务处理器。
具体地,根据所接收的确认指令可以确定真正发送所述消息至所述下游事 务处理器,且可以将所述消息的状态更新为发送状态。在一实施例中,所述消 息通过可靠消息中间件发送至所述下游事务处理器,所述消息中间件包括Kafka 以及ActiveMQ,在其他实施例中,所述消息中间件还包括RabbitMQ、RocketMQ 以及HornetQ。所述消息中间件利用高效可靠的消息传递机制进行平台无关的数 据交流,并基于数据通信来进行分布式***的集成。因此,所述消息中间件通 过提供消息传递以及消息排队模型,它可以在分布式环境下扩展进程间的通信。 在分布式事务的管理方法中采用消息中间件机制,可以实现不同的事务之间通 过传递消息来触发相应的事务,进而进行相应的操作。
S160、若所述下游事务执行失败,返回将所述消息发送至所述下游事务处 理器的步骤。
具体地,所述消息通过所述消息中间件发送至所述下游事务处理器,触发 下游事务处理器,以实现执行下游事务的目的。其中,所述消息已接收到业务 确认指令,进而需要将所述消息通过消息中间件发送给下游事务处理器,以执 行完成该下游事务,但当所述下游事务执行失败时,可能存在以下几种情况, 可能所述消息通过消息中间件发送时发送失败,又或者发送超时进而导致该下 游事务执行失败;还有可能由于下游事务处理器自身问题而导致所述下游事务 执行失败,此时,需要再次发送所述消息至所述下游事务处理器,直至下游事 务执行成功,通过这一失败重发消息的步骤可以确保解决分布式事务问题以及 保证最终数据一致性。
S170、若没有接收到所述确认指令,查询所述消息表中待确认状态的消息 并根据所查询的消息检查所述上游事务是否执行成功。
具体地,若没有接收到所述确认指令,则该分布式事务执行出现异常,此 时,可能存在以下几种情况,其中,可能所述上游事务执行成功,但发送确认 指令超时或者发送失败;还有可能所述上游事务执行失败,并未发送所述确认 指令。此时,需要查询所述消息表中待确认状态的消息,进而根据所查询的消 息检查所述上游事务是否执行成功。其中,通过检查所述上游事务是否执行成 功可以实现上游事务的回查功能。
S180、若所述上游事务执行成功,返回将所述消息的状态更新为发送状态 并将所述消息发送至所述下游事务处理器的步骤。
具体地,若所述上游事务执行成功,则将所述消息的状态更新为发送状态 并将所述消息再次发送至所述下游事务处理器,以触发所述下游事务处理器执 行所述下游事务;若所述上游事务执行失败,则回滚已经执行的任务,在所述 消息表中删除所述消息。
在上述实施例中,根据第一预设规则将分布式事务拆分为上游事务以及下 游事务,可以有效提升分布式***的吞吐量,其中,若上游事务执行成功,通 过失败重发消息这一机制确保下游事务执行成功,可以有效实现跨服务、跨数 据库的数据的最终一致性目的,且可以在不锁资源,不影响性能的前提下有效 解决分布式事务问题,更好地保证数据一致性。
请参阅图3,其为本发明第二实施例提供的一种分布式事务的管理方法的子 流程示意图,如图3所示,该分布式事务的管理方法的所述步骤S150中的将所 述消息的状态更新为发送状态并将所述消息发送至所述下游事务处理器的步骤 之后还包括步骤S210-S240,所述步骤S210-S240应用于所述下游事务处理器。 下面详细说明本实施例中所增加的步骤S210-S240。
S210、若所述下游事务处理器接收到所述消息,所述下游事务处理器向预 设幂等表内***与所接收的消息对应的一条记录。
具体地,每条消息均存在与其唯一对应的一条记录,每条记录存在唯一的 一个记录主键,在本实施例中,所述记录主键为每条所述消息的编号(messange ID)。
S220、根据所述记录判断所述预设幂等表内是否存在相同的记录。
具体地,在一实施例中,由于每条记录均存在唯一的一个记录主键,在执 行下游事务前,当向所述幂等表***与所述消息对应对一条记录时,显示记录 主键重复异常,即可判定该下游事务已经执行完成,因此,不需要重复执行下 游事务,采用向幂等表***与每条消息对应的记录的这种方式可以避免下游事 务进行幂等设计,可进一步减少使用可靠消息中间件解决分布式事务以及数据 一致性问题的工作量。
S230、若不存在相同的记录,执行所述下游事务。
S240、若存在相同的记录,不执行所述下游事务。具体地,若所述状态为 发送状态,则上游事务执行成功,只需要通过消息中间件发送所述消息以触发 所述下游事务处理器执行下游事务。其中,需要先判断所述预设幂等表中是否 存在相同的记录,若存在相同的记录,则表明该下游事务已经执行完成,不需 要重复执行该下游事务,若不存在相同的记录,则触发下游事务处理器执行下 游事务,通过所述预设幂等表可以有效防止下游事务重复执行的情况。
请参阅图4,其是本发明第三实施例提供的一种分布式事务的管理方法的流 程示意图。该分布式事务的管理方法可包括步骤S310-S410。其中步骤S310-S370 与所述第一实施例中的步骤S110-S180类似,在此不再赘述。下面详细说明本 实施例中所增加的步骤S380-步骤S410。
S380、判断是否接收到确认指令。
S390、判断所述下游事务是否执行成功。
S400、若所述下游事务执行成功,删除所存储的消息。
S410、若所述上游事务执行不成功,回滚已经执行的任务。
具体地,在本发明实施例,通过调用回滚接口回滚已经执行的任务,即将 所接收的消息在所述关系型数据库中删除,以保证上下游事务处理器的数据一 致性。
请参阅图5,其是本发明实施例提供的一种分布式事务的管理***100的示 意性框图。如图5所示,该分布式事务的管理***100包括用于执行上述实施 例中的分布式事务的管理方法的事务拆分子***、消息服务子***、消息恢复 子***以及消息中间件,该分布式事务的管理***100可以被配置于一分布式 ***的管理服务器中,其中,所述管理服务器可以为独立的服务器,也可以是 多个服务器组成的服务器集群;也可以将该分布式事务的管理***100所包含 的多个子***以及消息中间件分别被配置到多个分布式***的服务器中,其中, 在一实施例中,分布式***包括一管理服务器、上游事务处理器以及下游事务 处理器,所述分布式事务的管理***100被配置于所述管理服务器中。具体地, 该分布式事务的管理***100包括事务拆分子***110、消息服务子***120、 消息恢复子***140以及消息中间件130。
所述事务拆分子***110用于根据第一预设规则将分布式事务拆分为上游 事务以及下游事务以及将上游事务以及下游事务分别对应分配到上游事务处理 器以及下游事务处理器中。
所述消息服务子***120用于接收来自所述上游事务处理器发送的处理所 述分布式事务的消息。
所述消息服务子***120还用于将所述消息的状态保存为待确认状态并存 储于一消息表中以及还用于若所述上游事务执行完成,接收来自所述上游事务 处理器发送的确认指令。
所述消息服务子***120还用于若接收到所述确认指令,将所述消息的状 态更新为发送状态并将所述消息发送至所述消息中间件130。
所述消息中间件130用于将所述消息发送至所述下游事务处理器。
具体地,在一实施例中,所述消息中间件包括Kafka以及ActiveMQ,在其 他实施例中,所述消息中间件还包括RabbitMQ、RocketMQ以及HornetQ。所 述消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于 数据通信来进行分布式***的集成。因此,所述消息中间件通过提供消息传递 以及消息排队模型,它可以在分布式环境下扩展进程间的通信。在分布式事务 的管理方法中采用消息中间件机制,可以实现不同的事务之间通过传递消息来 触发相应的事务,进而进行相应的操作。在本实施例中,上游事务处理器将消 息发送给消息服务子***110,消息服务子***110将消息存放在若干队列中, 在合适的时候再将消息通过消息中间件130转发给下游事务处理器。
所述消息恢复子***140用于判断所述下游事务是否执行成功以及若所述 下游事务执行失败,返回将所述消息发送至所述下游事务处理器的步骤。
所述消息恢复子***140还用于判断是否接收到所述确认指令,以及若没 有接收到所述确认指令,查询所述消息表中待确认状态的消息并根据所查询的 消息检查所述上游事务是否执行成功。
所述消息恢复子***140还用于若所述上游事务执行成功,返回将所述消 息的状态更新为发送状态并将所述消息发送至所述下游事务处理器的步骤。
所述消息恢复子***140还用于若所述下游事务执行成功,删除所存储的 所述消息。
所述消息恢复子***140还用于若所述上游事务执行不成功,回滚已经执 行的任务。
另外,所述下游事务处理器用于若所述下游事务处理器接收到所述消息, 所述下游事务处理器向预设幂等表内***与所接收的消息对应的一条记录;所 述下游事务处理器还用于根据所述记录判断所述预设幂等表内是否存在相同的 记录、用于若不存在相同的记录,执行所述下游事务以及用于若存在相同的记 录,不执行所述下游事务。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述分布式事务 的管理***100以及下游事务处理器的具体实现过程以及效果,可以参考前述 对应方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
请参阅图6,其是本发明实施例提供的一种计算机设备500的示意性框图。 该计算机设备500为配置有事务拆分子***、消息服务子***、消息恢复子系 统以及消息中间件的服务器,该服务器可以是独立的服务器,也可以是多个服 务器组成的服务器集群。如图6所示,计算机设备500包括通过***总线501 连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存 储介质503和内存储器504。
该非易失性存储介质503可存储操作***5031和计算机程序5032。该计算 机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种 分布式事务的管理方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运 行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供 环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种分 布式事务的管理方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解, 图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对 本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可 以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部 件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实 现如下步骤:根据第一预设规则将分布式事务拆分为上游事务以及下游事务以 及将上游事务以及下游事务分别对应分配到上游事务处理器以及下游事务处理 器中;接收来自所述上游事务处理器发送的处理所述分布式事务的消息;将所 述消息的状态保存为待确认状态并存储于一消息表中;若所述上游事务执行完 成,接收来自所述上游事务处理器发送的确认指令;若接收到所述确认指令, 将所述消息的状态更新为发送状态并将所述消息发送至所述下游事务处理器; 若所述下游事务执行失败,返回将所述消息发送至所述下游事务处理器的步骤; 若没有接收到所述确认指令,查询所述消息表中待确认状态的消息并根据所查询的消息检查所述上游事务是否执行成功;若所述上游事务执行成功,返回将 所述消息的状态更新为发送状态并将所述消息发送至所述下游事务处理器的步 骤。
在一实施例中,处理器502在实现所述将所述消息发送至所述下游事务处 理器的步骤之后,具体还实现如下步骤:若所述下游事务处理器接收到所述消 息,所述下游事务处理器向预设幂等表内***与所接收的消息对应的一条记录; 根据所述记录判断所述预设幂等表内是否存在相同的记录;若不存在相同的记 录,执行所述下游事务;若存在相同的记录,不执行所述下游事务。
在一实施例中,处理器502在实现所述将所述消息发送至所述下游事务处 理器的步骤之后,具体还实现如下步骤:若所述下游事务执行成功,删除所存 储的所述消息。
在一实施例中,处理器502在实现所述查询所述消息表中待确认状态的消 息并根据所查询的消息检查所述上游事务是否执行成功的步骤之后,具体还实 现如下步骤:若所述上游事务执行不成功,回滚已经执行的任务。
应当理解,在本发明实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理 器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或 者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中, 通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分 流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程 序指令,计算机程序可存储于一存储介质中,该存储介质为存储介质。该程序 指令被该计算机***中的至少一个处理器执行,以实现上述方法的实施例的流 程步骤。
因此,本发明还提供一种存储介质。该存储介质为计算机可读存储介质, 该计算机可读存储介质存储有计算机程序,其中计算机程序包括程序指令。该 程序指令被处理器执行时使处理器执行如上所述的分布式事务的管理方法。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory, ROM)、磁碟或者光盘等各种可以存储程序代码的存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示 例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现, 为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地 描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决 于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用 来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范 围。
在本发明所提供的几个实施例中,应该理解到,所揭露的***和方法,可 以通过其它的方式实现。例如,以上所描述的***实施例仅仅是示意性的。例 如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划 分方式。例如多个单元或组件可以结合或者可以集成到另一个***,或一些特 征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。 本发明实施例***中的单元可以根据实际需要进行合并、划分和删减。另外, 在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各 个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使 用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质 上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软 件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干 指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等) 执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到 各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。 因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种分布式事务管理方法,其特征在于,包括:
根据第一预设规则将分布式事务拆分为上游事务以及下游事务以及将上游事务以及下游事务分别对应分配到上游事务处理器以及下游事务处理器中;
接收来自所述上游事务处理器发送的处理所述分布式事务的消息;
将所接收的消息的状态保存为待确认状态并存储于一消息表中;
若所述上游事务执行完成,接收来自所述上游事务处理器发送的确认指令;
若接收到所述确认指令,将所述消息的状态更新为发送状态并将所述消息发送至所述下游事务处理器;
若所述下游事务执行失败,返回将所述消息发送至所述下游事务处理器的步骤;
若没有接收到所述确认指令,查询所述消息表中待确认状态的消息并根据所查询的消息检查所述上游事务是否执行成功;
若所述上游事务执行成功,返回将所述消息的状态更新为发送状态并将所述消息发送至所述下游事务处理器的步骤。
2.根据权利要求1所述的分布式事务的管理方法,其特征在于,所述将所述消息发送至所述下游事务处理器的步骤之后,包括:
若所述下游事务处理器接收到所述消息,所述下游事务处理器向预设幂等表内***与所接收的消息对应的一条记录;
根据所述记录判断所述预设幂等表内是否存在相同的记录;
若不存在相同的记录,执行所述下游事务;
若存在相同的记录,不执行所述下游事务。
3.根据权利要求2所述的分布式事务的管理方法,其特征在于,所述记录包括一记录主键,所述记录主键与所述消息的编号一一对应。
4.根据权利要求1所述的分布式事务的管理方法,其特征在于,所述将所述消息发送至所述下游事务处理器的步骤之后还包括:
若所述下游事务执行成功,删除所存储的所述消息。
5.根据权利要求1所述的分布式事务的管理方法,其特征在于,所述查询所述消息表中待确认状态的消息并根据所查询的消息检查所述上游事务是否执行成功的步骤之后还包括:
若所述上游事务执行不成功,回滚已经执行的任务。
6.根据权利要求1所述的分布式事务的管理方法,其特征在于,所述消息表存储于一关系型数据库中。
7.一种分布式事务的管理***,其特征在于,包括:
事务拆分子***,所述事务拆分子***用于根据第一预设规则将分布式事务拆分为上游事务以及下游事务以及将上游事务以及下游事务分别对应分配到上游事务处理器以及下游事务处理器中;
所述消息服务子***用于接收来自所述上游事务处理器发送的处理所述分布式事务的消息;
所述消息服务子***用于将所述消息的状态保存为待确认状态并存储于一消息表中;
所述消息服务子***用于若所述上游事务执行完成,接收来自所述上游事务处理器发送的确认指令;
所述消息服务子***用于若接收到所述确认指令,将所述消息的状态更新为发送状态并将所述消息发送至消息中间件;
所述消息中间件用于将所述消息发送至所述下游事务处理器;
所述消息恢复子***用于若所述下游事务执行失败,返回将所述消息发送至所述下游事务处理器的步骤;
所述消息恢复子***用于若没有接收到所述确认指令,查询所述消息表中待确认状态的消息并根据所查询的消息检查所述上游事务是否执行成功;
所述消息恢复子***用于若所述上游事务执行成功,返回将所述消息的状态更新为发送状态并将所述消息发送至所述下游事务处理器的步骤。
8.根据权利要求7所述的分布式事务的管理***,其特征在于,所述消息中间件包括Kafka以及ActiveMQ。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-6中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序当被处理器执行时可实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810995734.6A CN109241186A (zh) | 2018-08-29 | 2018-08-29 | 分布式事务的管理方法、***、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810995734.6A CN109241186A (zh) | 2018-08-29 | 2018-08-29 | 分布式事务的管理方法、***、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109241186A true CN109241186A (zh) | 2019-01-18 |
Family
ID=65069062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810995734.6A Pending CN109241186A (zh) | 2018-08-29 | 2018-08-29 | 分布式事务的管理方法、***、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241186A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750338A (zh) * | 2019-08-30 | 2020-02-04 | 深圳壹账通智能科技有限公司 | 订单数据的处理方法及装置、存储介质、计算机设备 |
CN110825529A (zh) * | 2019-11-12 | 2020-02-21 | 上海德启信息科技有限公司 | 业务消息管理***及方法 |
CN110995803A (zh) * | 2019-11-22 | 2020-04-10 | 用友网络科技股份有限公司 | 上、下游业务处理方法及***、计算机可读存储介质 |
CN111127088A (zh) * | 2019-12-17 | 2020-05-08 | 深圳前海环融联易信息科技服务有限公司 | 实现最终一致性的方法、装置、计算机设备及存储介质 |
CN111835467A (zh) * | 2020-07-28 | 2020-10-27 | 中国平安财产保险股份有限公司 | 消息发送方法、装置、计算机设备和存储介质 |
CN112527472A (zh) * | 2020-11-18 | 2021-03-19 | 北京邮电大学 | 基于微服务的分布式事务处理***和方法 |
CN113742043A (zh) * | 2021-08-31 | 2021-12-03 | 中企云链(北京)金融信息服务有限公司 | 一种服务器后端任务异步拆分方法 |
CN113783666A (zh) * | 2020-11-27 | 2021-12-10 | 北京京东振世信息技术有限公司 | 一种处理业务的方法和装置 |
CN113867897A (zh) * | 2021-09-30 | 2021-12-31 | 紫光云技术有限公司 | 一种基于Rabbitmq实现分布式事务的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130083008A (ko) * | 2011-12-27 | 2013-07-22 | 현대중공업 주식회사 | 사업장 업무 처리 시스템 |
CN103514028A (zh) * | 2012-06-14 | 2014-01-15 | 北京新媒传信科技有限公司 | 一种处理分布式事务的方法和装置 |
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其*** |
CN106383737A (zh) * | 2016-09-09 | 2017-02-08 | 浪潮软件股份有限公司 | 一种分布式事务处理方法 |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和*** |
-
2018
- 2018-08-29 CN CN201810995734.6A patent/CN109241186A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130083008A (ko) * | 2011-12-27 | 2013-07-22 | 현대중공업 주식회사 | 사업장 업무 처리 시스템 |
CN103514028A (zh) * | 2012-06-14 | 2014-01-15 | 北京新媒传信科技有限公司 | 一种处理分布式事务的方法和装置 |
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其*** |
CN106383737A (zh) * | 2016-09-09 | 2017-02-08 | 浪潮软件股份有限公司 | 一种分布式事务处理方法 |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和*** |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750338A (zh) * | 2019-08-30 | 2020-02-04 | 深圳壹账通智能科技有限公司 | 订单数据的处理方法及装置、存储介质、计算机设备 |
CN110825529A (zh) * | 2019-11-12 | 2020-02-21 | 上海德启信息科技有限公司 | 业务消息管理***及方法 |
CN110825529B (zh) * | 2019-11-12 | 2024-02-27 | 上海德启信息科技有限公司 | 业务消息管理***及方法 |
CN110995803A (zh) * | 2019-11-22 | 2020-04-10 | 用友网络科技股份有限公司 | 上、下游业务处理方法及***、计算机可读存储介质 |
CN111127088A (zh) * | 2019-12-17 | 2020-05-08 | 深圳前海环融联易信息科技服务有限公司 | 实现最终一致性的方法、装置、计算机设备及存储介质 |
CN111835467B (zh) * | 2020-07-28 | 2022-03-29 | 中国平安财产保险股份有限公司 | 消息发送方法、装置、计算机设备和存储介质 |
CN111835467A (zh) * | 2020-07-28 | 2020-10-27 | 中国平安财产保险股份有限公司 | 消息发送方法、装置、计算机设备和存储介质 |
CN112527472A (zh) * | 2020-11-18 | 2021-03-19 | 北京邮电大学 | 基于微服务的分布式事务处理***和方法 |
CN113783666A (zh) * | 2020-11-27 | 2021-12-10 | 北京京东振世信息技术有限公司 | 一种处理业务的方法和装置 |
CN113783666B (zh) * | 2020-11-27 | 2024-07-16 | 北京京东振世信息技术有限公司 | 一种处理业务的方法和装置 |
CN113742043A (zh) * | 2021-08-31 | 2021-12-03 | 中企云链(北京)金融信息服务有限公司 | 一种服务器后端任务异步拆分方法 |
CN113742043B (zh) * | 2021-08-31 | 2024-04-26 | 中企云链股份有限公司 | 一种服务器后端任务异步拆分方法 |
CN113867897A (zh) * | 2021-09-30 | 2021-12-31 | 紫光云技术有限公司 | 一种基于Rabbitmq实现分布式事务的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241186A (zh) | 分布式事务的管理方法、***、计算机设备及存储介质 | |
US9736034B2 (en) | System and method for small batching processing of usage requests | |
CN110069346B (zh) | 多进程间资源共享方法、装置、电子设备 | |
CN110046029A (zh) | 应用于集群内多级缓存的数据处理方法和装置 | |
CN104065636B (zh) | 数据处理方法和*** | |
CN105357042B (zh) | 一种高可用集群***及其主节点和从节点 | |
CN113515531A (zh) | 数据访问方法、装置、客户端及存储介质 | |
CN112671827A (zh) | 一种分布式事务最终一致性方法 | |
CN112650812A (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
CN107920131A (zh) | 一种hdfs存储***的元数据管理方法及装置 | |
CN111385255B (zh) | 一种异步调用实现方法、装置、服务器及服务器集群 | |
CA3065729A1 (en) | Business rules processing framework | |
CN113849320A (zh) | 开发方法、控制方法及计算设备 | |
CN112015563B (zh) | 消息队列切换方法、装置、电子设备及存储介质 | |
CN112632093A (zh) | 工单处理方法、设备、***、存储介质及程序产品 | |
CN113254467B (zh) | 在区块链***中执行交易的方法和区块链节点 | |
US20050188380A1 (en) | Cache control device, and method and computer program for the same | |
CN116542668A (zh) | 一种基于区块链的数据处理方法、设备及可读存储介质 | |
CN110502460B (zh) | 数据处理的方法和节点 | |
CN111752911A (zh) | 一种基于Flume的数据传输方法、***、终端及存储介质 | |
CN109901933B (zh) | 业务***的操作方法及装置、存储介质、电子装置 | |
CN114116732B (zh) | 处理事务的方法、装置、存储装置以及服务器 | |
CN114185996B (zh) | 一种跨链事务处理方法及装置 | |
JP7305898B2 (ja) | 操作応答方法、操作応答装置、電子機器及び記憶媒体 | |
CN111639089B (zh) | 事务处理方法、装置、电子设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190118 |