掌桥专利:专业的专利平台
掌桥专利
首页

一种分布式事务交易的控制方法、装置、设备及存储介质

文献发布时间:2023-06-19 18:37:28


一种分布式事务交易的控制方法、装置、设备及存储介质

技术领域

本发明涉及分布式技术领域,具体而言,涉及一种分布式事务交易的控制方法、装置、设备及存储介质。

背景技术

为了提升银行等金融系统的运行效率,目前金融系统的核心业务系统一般采用微服务架构,对核心业务系统进行拆分,使得针对渠道的一笔事务交易请求对应的多个操作,可以通过分布式的多个微服务之间的调用实现。

利用多个相互独立的微服务(节点)组成的分布式系统,由于系统中的多个节点可以并行运行,因而,在同一时刻,可能存在多个节点或一个节点中的多个进程对同一事务交易进行操作的请求,这样,容易导致事务交易处理的异常,使得事务交易处理的一致性较低,影响其它基于该事务交易处理的其他事务交易的处理。

发明内容

有鉴于此,本发明的目的在于提供分布式事务交易的控制方法、装置、设备及存储介质,以提高事务处理的一致性。

第一方面,本发明实施例提供了分布式事务交易的控制方法,包括:

接收分布式事务交易处理请求,获取所述分布式事务交易处理请求的事务交易对应的交易标识,确定预先设置的事务锁配置表中是否配置有所述交易标识;

若是,则提取所述事务交易包含的多个账户,查询所述事务锁配置表中的加锁表名,基于提取的账户以及加锁表名确定加锁的目标账户;

对所述目标账户进行加锁,将所述目标账户对应的流水信息添加至所述事务锁配置表中;

按照所述事务交易对应的流程,对所述事务交易进行处理;

在所述事务交易结束后,对所述目标账户进行解锁。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述基于提取的账户以及加锁表名确定加锁的目标账户,包括:

针对每一提取的账户,判断所述加锁表名中是否存在该账户;

若存在,判断所述加锁表名中是否记录有所述该账户的流水信息;

若未记录,确定该账户为所述目标账户。

结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述方法还包括:

若所述加锁表名中记录有所述该账户的流水信息,获取所述该账户中记录的流水号以及所述该账户的当前流水号;

判断记录的流水号是否与所述当前流水号相一致;

若相一致,执行所述事务交易对应的流程;

若不相一致,依据所述事务锁配置表中的等待时间进行等待,以等待所述记录的流水号对应的账户解锁。

结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述依据所述事务锁配置表中的等待时间进行等待,包括:

读取存储的所述事务锁配置表中记录的所述当前流水号的当前已重试次数;

若当前已重试次数超过所述事务锁配置表中的重试次数,输出异常信息;

若未超过,在等待所述等待时间后,查询记录的流水号对应的账户是否已解锁,若是,执行所述事务交易对应的流程,确定所述记录的流水号对应的账户为所述目标账户;若否,将存储的所述事务锁配置表中记录的当前已重试次数加1,执行所述读取存储的所述事务锁配置表中记录的所述当前流水号的当前已重试次数的步骤。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述在所述事务交易结束后,对所述目标账户进行解锁,包括:

若所述事务交易的运行结果为成功或失败,清除所述事务锁配置表中所述目标账户对应的流水信息,所述运行结果包括:成功、失败或异常;

若所述事务交易的运行结果为异常,对所述事务交易进行终态处理,若终态处理成功,清除所述事务锁配置表中所述目标账户对应的流水信息,所述终态包括成功或失败。

结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述方法还包括:

若监测到未能清除所述事务锁配置表中所述事务交易对应的流水信息,等待预设的清除时间阈值后,确定所述事务交易的运行结果为成功或失败后,执行所述清除所述事务锁配置表中所述目标账户对应的流水信息。

结合第一方面、第一方面的第一种可能的实施方式至第五种可能的实施方式中的任一种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述方法还包括:

对加锁时间进行计时,若计时时间是否超过事务锁配置表中设置的计时时间阈值,所述目标账户还未解锁,向预先设置的终端输出异常信息。

第二方面,本发明实施例还提供了一种分布式事务交易的控制装置,包括:

交易码匹配模块,用于接收分布式事务交易处理请求,获取所述分布式事务交易处理请求的事务交易对应的交易标识,确定预先设置的事务锁配置表中是否配置有所述交易标识;

账户匹配模块,用于若是,则提取所述事务交易包含的账户,查询所述事务锁配置表中的加锁表名,基于提取的账户以及加锁表名确定加锁的目标账户;

加锁模块,用于对所述目标账户进行加锁,将所述目标账户对应的流水信息添加至所述事务锁配置表中;

解锁模块,用于按照所述事务交易对应的流程,对所述事务交易进行处理,在所述事务交易结束后,对所述目标账户进行解锁。

第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的方法的步骤。

本发明实施例提供的分布式事务交易的控制方法、装置、设备及存储介质,通过接收分布式事务交易处理请求,获取所述分布式事务交易处理请求的事务交易对应的交易标识,确定预先设置的事务锁配置表中是否配置有所述交易标识;若是,则提取所述事务交易包含的账户,查询所述事务锁配置表中的加锁表名,基于提取的账户以及加锁表名确定加锁的目标账户;对所述目标账户进行加锁,将所述目标账户对应的流水信息添加至所述事务锁配置表中;在所述事务交易结束后,对所述目标账户进行解锁。由此,通过预先设置事务锁配置表,在事务锁配置表中,配置需要进行锁控制的事务交易的交易标识,以及,事务交易中需要锁控制的加锁表名,以对目标账户进行锁控制,使得目标账户在进行该事务交易的处理时,防止其它账户对该事务交易进行操作的请求,避免该事务交易处理的异常,从而实现分布式事务交易的一致性,有效提高事务交易处理的一致性。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例所提供的分布式事务交易的控制方法流程示意图;

图2示出了本发明实施例所提供的分布式事务交易的控制方法具体流程示意图;

图3示出了本发明实施例所提供的分布式事务交易的解锁流程示意图;

图4示出了本发明实施例所提供的分布式事务交易的控制装置结构示意图;

图5为本申请实施例提供的一种计算机设备500的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前的分布式事务交易处理,一般基于单节点方式实现事务交易的一致性,以事务交易为数据处理操作为例,若该单节点中具有多个并发进程对该事务交易的数据处理操作请求,可通过对该事务交易设置锁的方式,获取相应的数据处理操作,从而实现单节点的同步、互斥等操作。但由于分布式系统具有多个节点,各节点间相互独立,每一节点独立处理一分布式事务交易。因而,单节点锁的方式不能实现对分布式系统的操作管理。

本发明实施例中,考虑到分布式系统中的多个节点并行运行,需要对对多个并行运行的节点进行管理和控制,以免造成数据破坏、进程间死锁等问题,导致不能实现事务交易的一致性,针对分布式事务交易的账务交易(账户)增加全局锁机制,使得同一个账户,在整个账务交易操作未完成之前,触发的并发操作只能等待或重试,并支持同一账户在整个账务交易操作过程中的可重入。

本发明实施例提供了一种分布式事务交易的控制方法、装置、设备及存储介质,下面通过实施例进行描述。

图1示出了本发明实施例所提供的分布式事务交易的控制方法流程示意图。如图1所示,该方法包括:

步骤101,接收分布式事务交易处理请求,获取所述分布式事务交易处理请求的事务交易对应的交易标识,确定预先设置的事务锁配置表中是否配置有所述交易标识;

本发明实施例中,以金融系统的核心业务系统为例,即核心业务系统运行本方法,核心业务系统通过微服务进行实现交易处理。核心业务系统需要对所有微服务发生的事务交易进行交易处理,微服务可以部署在智能终端中,如电脑。例如,账务交易进行实时借贷平衡检查,则电脑上的微服务向核心业务系统发送分布式事务交易处理请求,请求借贷平衡检查。若在该时刻,已发生入账的存款客户,在进行补偿时,因超时等原因未实现补偿,而另一个并发的账务交易进行了该存款客户的支取操作,因而,在进行事务交易补偿时,由于该存款客户超时未进行补偿,在并发的账务交易进行支取操作时,可能会因余额不足导致失败,无法达成最终一致状态。其中,核心业务系统可以是服务器,或者其集群,或者分布式集群,从而实现智能终端和服务器之间的交互。

本发明实施例中,通过对金融系统在事务交易处理中涉及的各种处理流程进行统计分析,确定出需要进行事务锁配置的事务交易以及各事务交易包含的需要进行事务锁配制的表,或者,在进行事务交易开发时,预先确定该事务交易是否需要进行事务锁控制,例如,对于事务交易中的账务交易,确定需要进行事务锁(加锁)控制。其中,表是事务处理的各流程中涉及的需要进行加锁的表,填写至事务锁配置表中,并针对每一事务,或每一表,或针对所有事务,设置用于等待解锁的等待时间、重试次数、超时时间。例如,基于核心业务系统、和/或,分布式系统所运行处理的分布式事务,进行聚类分析,结合人工对聚类结果的流程分析,确定出需要进行事务锁配置的事务及表,填写至事务锁配置表中。

本发明实施例中,作为一可选实施例,事务锁配置表包括:交易标识、加锁表名、等待时间、重试次数、超时时间等信息,其中,交易标识用于标识事务,作为一可选实施例,交易标识包括交易码,例如,对于存款、取款、转账等事务,银行都会预先为每一事务设置唯一对应的交易码,加锁表名为需要进行事务锁配置的表的名称,等待时间为若存在事务锁冲突,当前事务交易继续执行需要等待的时间,重试次数为在存在事务锁冲突的情形下,当前事务交易可以尝试执行的次数,超时时间为事务交易设置的加锁时间,不能超过该超时时间,若超过,则自动解锁该事务交易。

本发明实施例中,作为一可选实施例,加锁表名为账户表的名称。其中,账户表为事务交易中需要设置加锁的账户组成的表,表中,对于加锁的账户,记录有该账户的流水信息,作为一可选实施例,每一事务交易对应一账户表。

本发明实施例中,对于分布式事务交易处理请求的事务交易对应的交易标识,未在事务锁配置表中配置的情形,表明无需进行事务锁控制,直接依据分布式事务交易处理请求进行相应处理。

本发明实施例中,作为一可选实施例,事务锁配置表存储在缓存或内存中,这样,可以快速实现事务锁配置的实时变更、且能最大化提升查询性能。

步骤102,若是,则提取所述事务交易包含的多个账户,查询所述事务锁配置表中的加锁表名,基于提取的账户以及加锁表名确定加锁的目标账户;

本发明实施例中,作为一可选实施例,基于提取的账户以及加锁表名确定加锁的目标账户,包括:

针对每一提取的账户,判断所述加锁表名中是否存在该账户;

若存在,判断所述加锁表名中是否记录有所述该账户的流水信息;

若未记录,确定该账户为所述目标账户。

本发明实施例中,作为另一可选实施例,该方法还包括:

若所述加锁表名中记录有所述该账户的流水信息,获取所述该账户中记录的流水号以及所述该账户的当前流水号;

判断记录的流水号是否与所述当前流水号相一致;

若相一致,执行所述事务交易对应的流程;

若不相一致,依据所述事务锁配置表中的等待时间进行等待,以等待所述记录的流水号对应的账户解锁。

本发明实施例中,在需要对事务交易的账户进行加锁后,由于事务交易可能涉及多个账户,需要确定事务交易对应的多个账户是否已被加锁,若加锁表中未存在对应的流水信息记录,则表明该账户无加锁记录,即此时该账户不存在针对该事务交易的并发操作,因而,在对该事务交易进行处理时,为该账户设置加锁,以防止后续对该事务交易的操作请求导致的事务交易不一致。若存在记录,说明该事务交易已被加锁,在加锁的事务交易下,当前事务交易对应的流程能不能执行,还需获取当前事务交易的流水号以及存储在事务锁配置表的加锁表名中的流水信息,以确定是否为同一流水,若流水号一致(相同),表明是相同事务交易的多次操作,执行事务交易处理;若不为同一流水,说明为账户的并发事务交易操作,需要根据事务锁配置表中的信息,确定是否等待重试或直接报错,等待重试时检查重试次数,直至次数消耗完毕仍无法加锁时报错退出。

本发明实施例中,作为一可选实施例,流水信息包括但不限于:流水号、锁创建时间。

本发明实施例中,作为一可选实施例,依据所述事务锁配置表中的等待时间进行等待,包括:

读取存储的所述事务锁配置表中记录的所述当前流水号的当前已重试次数;

若当前已重试次数超过所述事务锁配置表中的重试次数,输出异常信息;

若未超过,在等待所述等待时间后,查询记录的流水号对应的账户是否已解锁,若是,执行所述事务交易对应的流程,确定所述记录的流水号对应的账户为所述目标账户;若否,将存储的所述事务锁配置表中记录的当前已重试次数加1,执行所述读取存储的所述事务锁配置表中记录的所述当前流水号的当前已重试次数的步骤。

步骤103,对所述目标账户进行加锁,将所述目标账户对应的流水信息添加至所述事务锁配置表中;

本发明实施例中,以转账为例,假设一事务交易为账户A向账户B转账,同时,账户C需要从账户B中收取一定的转账手续费,该事务交易涉及的流程包括:扣减账户A,增加账户B,扣减账户B,增加账户C,其中,账户A和账户B为需要加锁的账户,在该事务交易中,对账户A和账户B进行加锁,并将相应的信息写入事务锁配置表中;若在账户A向账户B转账的同时或之后,另一事务交易为账户A向账户C转账,通过查询事务锁配置表,该事务交易为事务锁配置表中配置的事务交易,且对应账户A在事务锁配置表中有相应记录,由于两个事务交易的流水号不相同,在账户A未解锁的情况下,因而,账户A向账户C转账,需要在账户A向账户B转账的事务交易完成后,才能执行,即依据事务锁配置表中设置的等待时间,进行检查,若在该等待时间过后,为账户A设置的锁已被释放,则可以执行账户A向账户C转账的流程,并将相应的信息更新至事务锁配置表中。

本发明实施例中,为了避免加锁的事务交易由于其他原因一直占用加锁,从而导致后续基于该事务交易的其它事务交易一直处于等待以及重试,作为另一可选实施例,在对所述目标账户进行加锁,将所述目标账户对应的流水信息添加至所述事务锁配置表中之后,该方法还包括:

对加锁时间进行计时,若计时时间是否超过事务锁配置表中设置的计时时间阈值,所述目标账户还未解锁,向预先设置的终端输出异常信息。

本发明实施例中,依据事务锁配置表中的信息,计算总的加锁时间,确定总的加锁时间是否超过计时时间阈值,若超过计时时间阈值还未解锁,抛出异常,以进行人工处理。

本发明实施例中,作为一可选实施例,锁为互斥锁,互斥锁可以有效保证在任一时刻,只能有一个线程进行访问。

步骤104,按照所述事务交易对应的流程,对所述事务交易进行处理;

本发明实施例中,对于每一事务交易,有对应的事务处理流程,依据事务处理流程,对事务交易进行处理,将该事务交易的运行结果存储在预先设置的存储区。

步骤105,在所述事务交易结束后,对所述目标账户进行解锁。

本发明实施例中,作为一可选实施例,在所述事务交易结束后,对所述目标账户进行解锁,包括:

若所述事务交易的运行结果为成功或失败,清除所述事务锁配置表中所述目标账户对应的流水信息,所述运行结果包括:成功、失败或异常。

本发明实施例中,对于有明确交易状态,例如,成功或失败的事务交易的解锁,在事务交易运行结束后,清除事务锁配置表中该事务交易对应的数据。作为一可选实施例,通过异步线程对事务锁配置表中的数据(流水信息)进行删除。

本发明实施例中,对于事务交易的运行结果,为成功、失败或异常中的一种,对于事务交易能够在预设的执行时间阈值内被执行完毕的情形,对应的运行结果为成功或失败,对于事务交易在预设的执行时间阈值内没能被执行完毕的情形,例如,在执行过程中网络异常或服务器宕机,对应的运行结果为异常。

本发明实施例中,作为另一可选实施例,该方法还包括:

若监测到未能清除所述事务锁配置表中所述事务交易对应的流水信息,等待预设的清除时间阈值后,确定所述事务交易的运行结果为成功或失败后,执行所述清除所述事务锁配置表中所述目标账户对应的流水信息。

本发明实施例中,如因系统异常等各种情况导致无法删除事务锁配置表中事务交易(目标账户)对应的流水信息,则定时线程每隔一段时间(清除时间阈值)进行异步清理,在异步清理前,还需根据事务交易的流水号,检查事务交易的业务状态,确保事务交易的运行结果为终态(成功或失败)时才进行清理。对于因非系统异常导致流水信息无法删除的情况,可对接告警平台转人工处理。

本发明实施例中,作为一可选实施例,在所述事务交易结束后,对所述目标账户进行解锁,包括:

若所述事务交易的运行结果为异常,对所述事务交易进行终态处理,若终态处理成功,清除所述事务锁配置表中所述目标账户对应的流水信息,所述终态包括成功或失败。

本发明实施例中,在事务交易无明确状态(运行结果)返回时,例如,在进行事务交易处理时,调用微服务超时等情况,可以利用预设的差错对账处理机制,对该事务交易进行终态处理,若事务交易的终态处理成功,可进行数据清理,若事务交易的终态处理未成功,且需要进一步处理,可延长该事务交易的加锁时间(超时时间),并按照预先设置的策略进行处理。

图2示出了本发明实施例所提供的分布式事务交易的控制方法具体流程示意图。如图2所示,该方法包括:

步骤201,判断事务锁配置表是否加锁,若是,执行步骤202,若否,执行步骤212;

本发明实施例中,依据接收的分布式事务交易处理请求,判断事务锁配置表中,是否存储有该分布式事务交易处理请求对应的交易标识,若有,确定事务锁配置表需要加锁。

步骤202,判断事务交易是否加锁,若是,执行步骤203,若否,执行步骤212;

本发明实施例中,查询事务锁配置表是否存储有加锁表名,若存储有,则确定事务交易需要加锁。

步骤203,判断全局事务表锁信息中是否存储有对应账号的数据,若是,执行步骤204,若否,执行步骤211;

本发明实施例中,判断加锁表名中是否存储有分布式事务交易处理请求的账户,若存储有,表明全局事务表锁信息中存储有对应账号的数据。

步骤204,判断流水号是否一致,若否,执行步骤205,若是,执行步骤212;

本发明实施例中,判断加锁表名中是否记录的账户的流水信息与该账户的当前流水信息是否一致,若不一致,则需要加锁控制。

步骤205,获取全局表锁配置信息;

本发明实施例中,全局表锁配置信息包括:等待时间、重试次数、超时时间、重试时间等。

步骤206,判断是否超过超时时间,若否,执行步骤207,若是,执行步骤210;

本发明实施例中,在超时时间内,可以等待事务交易的解锁,以在解锁后,对该事务交易进行操作。

步骤207,判断是否需重试或超过重试次数,若否,执行步骤208,若是,执行步骤209;

本发明实施例中,从存储的事务锁配置表中读取记录的当前流水信息的当前已重试次数,判断当前已重试次数是否超过事务锁配置表中的重试次数。

步骤208,抛出异常信息;

本发明实施例中,抛出异常信息转人工处理。

步骤209,等待重试时间后,执行步骤207;

本发明实施例中,在等待重试时间后,再次判断是否需重试或超过重试次数。

步骤210,更新全局事务表锁信息中的流水号、创建时间,执行步骤212;

步骤211,插入全局表锁信息;

本发明实施例中,更新信息写入事务锁配置表中。

步骤212,结束流程。

图3示出了本发明实施例所提供的分布式事务交易的解锁流程示意图。如图3所示,该流程包括:

步骤300,判断事务交易的运行结果,若未有运行结果且未超时,执行步骤301,若运行结果为成功或失败,执行步骤306,若未有运行结果且超时,执行步骤307;

步骤301,启动定时解锁线程;

本发明实施例中,在加锁后,启动定时解锁线程进行加锁时间的计时以及解锁处理。

步骤302,判断是否超时,若是,执行步骤303,若否,执行步骤311;

本发明实施例中,若计时的总加锁时间超时,定时解锁线程执行解锁流程。

步骤303,根据流水号删除全局事务表锁信息;

本发明实施例中,依据事务交易对应的流水号,清除事务锁配置表中该事务交易对应的全局事务表锁信息。

步骤304,判断是否删除成功,若是,执行步骤311,若否,执行步骤305;

本发明实施例中,由于系统异常等各种情况,可能会导致无法删除事务锁配置表中事务交易对应的全局事务表锁信息,因而,需要确定是否删除成功,以在删除不成功时及时采取措施。

步骤305,告警转人工;

本发明实施例中,对于因非系统异常导致全局事务表锁信息无法删除的情况,可对接告警平台转人工处理。

步骤306,确定全局事务状态成功或失败,执行步骤303;

本发明实施例中,在超时时间内,事务交易有明确的运行结果。

步骤307,确定全局事务状态超时未知,执行步骤308;

本发明实施例中,事务交易运行时间超时、且未有明确的运行结果。

步骤308,进行技术差错对账处理;

本发明实施例中,对该事务交易进行差错对账处理。

步骤309,判断是否成功,若是,执行步骤303,若否,执行步骤310;

本发明实施例中,若差错对账处理成功,进行解锁。

步骤310,更新全局事务表锁信息中的创建时间,执行步骤308;

步骤311,结束流程。

本发明实施例中,通过预先设置事务锁配置表,在事务锁配置表中,配置需要进行锁控制的事务交易的交易标识,以及,事务交易中需要锁控制的加锁表名,对于一个分布式事务交易处理请求,先判断是否是事务锁配置表中预先设置的事务交易,如果是,则根据事务锁配置表中该事务交易对应的加锁表名,确定需要进行加锁的目标账户,在确定了需要加锁的目标账户后,再判断该目标账户是否已被锁定,若被锁定,则通过记录的流水信息检查是否为同一流水,若是相同流水,则无需对该目标账户进行二次锁定,可直接进行后续交易处理;若不是相同流水,则需进行等待至锁定的目标账户解锁;若未锁定,则对该目标账户加锁并登记该目标账户的流水信息。这样,通过对目标账户增加锁控制,可以确保同一目标账户并发交易操作时的隔离性,防范极端情况下产生的资金风险,从而实现分布式SAGA事务交易的一致性,避免影响其它基于该事务交易处理的其他事务交易的处理,有效提高事务处理的一致性。进一步地,在目标账户已加锁的情况下,若当前事务交易的流水号与存储的目标账户的流水号不相同,进行等待重试的操作,能够有效避免分布式系统中多节点间并发操作导致的冲突、死锁等问题。

图4示出了本发明实施例所提供的分布式事务交易的控制装置结构示意图。如图4所示,该装置包括:

交易码匹配模块401,用于接收分布式事务交易处理请求,获取所述分布式事务交易处理请求的事务交易对应的交易标识,确定预先设置的事务锁配置表中是否配置有所述交易标识;

本发明实施例中,作为一可选实施例,事务锁配置表包括:交易标识、加锁表名、等待时间、重试次数、超时时间,存储在缓存或内存中。

本发明实施例中,作为一可选实施例,加锁表名包括但不限于:账户表。

账户匹配模块402,用于若是,则提取所述事务交易包含的账户,查询所述事务锁配置表中的加锁表名,基于提取的账户以及加锁表名确定加锁的目标账户;

本发明实施例中,作为一可选实施例,账户匹配模块402包括:

提取单元(图中未示出),用于提取所述事务交易包含的账户;

查询单元,用于查询所述事务锁配置表中的加锁表名;

第一判断单元,用于针对每一提取的账户,判断所述加锁表名中是否存在该账户;若存在,通知第二判断单元;

第二判断单元,用于判断所述加锁表名中是否记录有所述该账户的流水信息;若未记录,确定该账户为所述目标账户。

本发明实施例中,作为另一可选实施例,账户匹配模块402还包括:第三判断单元,

第二判断单元,还用于若所述加锁表名中记录有所述该账户的流水信息,通知第三判断单元;

第三判断单元,用于获取所述该账户中记录的流水号以及所述该账户的当前流水号;判断记录的流水号是否与所述当前流水号相一致;若相一致,执行所述事务交易对应的流程;若不相一致,依据所述事务锁配置表中的等待时间进行等待,以等待所述记录的流水号对应的账户解锁。

本发明实施例中,作为一可选实施例,流水信息包括但不限于:流水号、锁创建时间。

本发明实施例中,作为一可选实施例,依据所述事务锁配置表中的等待时间进行等待,包括:

读取存储的所述事务锁配置表中记录的所述当前流水号的当前已重试次数;

若当前已重试次数超过所述事务锁配置表中的重试次数,输出异常信息;

若未超过,在等待所述等待时间后,查询记录的流水号对应的账户是否已解锁,若是,执行所述事务交易对应的流程,确定所述记录的流水号对应的账户为所述目标账户;若否,将存储的所述事务锁配置表中记录的当前已重试次数加1,执行所述读取存储的所述事务锁配置表中记录的所述当前流水号的当前已重试次数的步骤。

加锁模块403,用于对所述目标账户进行加锁,将所述目标账户对应的流水信息添加至所述事务锁配置表中;

解锁模块404,用于按照所述事务交易对应的流程,对所述事务交易进行处理,在所述事务交易结束后,对所述目标账户进行解锁。

本发明实施例中,作为一可选实施例,解锁模块404包括:

第一解锁单元(图中未示出),若所述事务交易的运行结果为成功或失败,清除所述事务锁配置表中所述目标账户对应的流水信息,所述运行结果包括:成功、失败或异常;

第二解锁单元,若所述事务交易的运行结果为异常,对所述事务交易进行终态处理,若终态处理成功,清除所述事务锁配置表中所述目标账户对应的流水信息,所述终态包括成功或失败。

本发明实施例中,作为一可选实施例,解锁模块404还包括:

第三解锁单元,若监测到未能清除所述事务锁配置表中所述事务交易对应的流水信息,等待预设的清除时间阈值后,确定所述事务交易的运行结果为成功或失败后,执行所述清除所述事务锁配置表中所述目标账户对应的流水信息。

本发明实施例中,作为一可选实施例,该装置还包括:

锁超时处理模块(图中未示出),用于对加锁时间进行计时,若计时时间是否超过事务锁配置表中设置的计时时间阈值,所述目标账户还未解锁,向预先设置的终端输出异常信息。

本发明实施例中,作为一可选实施例,锁为互斥锁。

如图5所示,本申请一实施例提供了一种计算机设备500,用于执行图1中的分布式事务交易的控制方法,该设备包括存储器501、与存储器501通过总线相连的处理器502及存储在该存储器501上并可在该处理器502上运行的计算机程序,其中,上述处理器502执行上述计算机程序时实现上述分布式事务交易的控制方法的步骤。

具体地,上述存储器501和处理器502能够为通用的存储器和处理器,这里不做具体限定,当处理器502运行存储器501存储的计算机程序时,能够执行上述分布式事务交易的控制方法。

对应于图1中的分布式事务交易的控制方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述分布式事务交易的控制方法的步骤。

具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述分布式事务交易的控制方法。

在本申请所提供的实施例中,应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

技术分类

06120115636784