交易事务的处理方法及其装置、计算机可读存储介质与流程

文档序号:30582437发布日期:2022-06-29 13:08阅读:102来源:国知局
交易事务的处理方法及其装置、计算机可读存储介质与流程

1.本发明涉及数据处理领域,具体而言,涉及一种交易事务的处理方法及其装置、计算机可读存储介质。


背景技术:

2.传统的账务处理方法,将转出账户和转入账户放在同一阶段处理,业务处理流程繁重,无法灵活区分转出账户和转入账户的业务流程,并且,如果出现处理错误,会导致没有必要的事务回滚,例如,转账交易中转出账户处理成功,而转入账户处理失败,需要把转出账户和转入账户的已处理步骤均进行回滚。如果对账户数据进行了分库,当转出账户和转入账户不在同一个库时,还会带来分布式事务的问题,导致事务无法回滚的风险。
3.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

4.本发明实施例提供了一种交易事务的处理方法及其装置、计算机可读存储介质,以至少解决针对相关技术中在处理交易事务时采用单一阶段处理方式,导致事务处理容错率较低的技术问题。
5.根据本发明实施例的一个方面,提供了一种交易事务的处理方法,包括:获取交易事务的交易信息,其中,所述交易事务包括至少两个交易阶段;在基于所述交易信息的校验结果确定所述交易事务处于未成功处理状态时,按照所述至少两个交易阶段对应的处理方式处理所述交易事务。
6.可选地,在获取交易事务的交易信息之前,所述方法还包括:对所述交易信息进行初始化。
7.可选地,基于所述交易信息的校验结果确定所述交易事务处于未成功处理状态,包括:对所述交易信息进行校验,得到所述校验结果;在所述校验结果表示所述交易信息为验证成功的情况下,确定所述交易事务处于未成功处理状态。
8.可选地,所述至少两个交易阶段包括:第一交易阶段和第二交易阶段,按照所述至少两个交易阶段对应的处理方式处理所述交易事务,包括:判断所述第一交易阶段是否已经完成,并获取判断结果;在所述判断结果为所述第一交易阶段未成功完成的情况下,对所述第一交易阶段的交易对象进行加锁处理,得到第一加锁处理结果;在所述第一加锁处理结果表示对所述第一交易阶段的交易对象加锁成功后,对所述第一交易阶段对应的交易事务进行处理;在确定所述第一交易阶段的交易事务处理完成后,控制所述交易事务进入所述第二交易阶段,以利用所述第二交易阶段对应的处理方式对所述交易事务进行处理。
9.可选地,控制所述交易事务进入所述第二交易阶段,以利用所述第二交易阶段对应的处理方式对所述交易事务进行处理,包括:对所述第二交易阶段的交易对象进行加锁处理,得到第二加锁处理结果;在所述第二加锁处理结果表示对所述第二交易阶段的交易对象加锁成功后,对所述第二交易阶段对应的交易事务进行处理。
10.可选地,在确定所述第一交易阶段的交易事务处理完成后,所述方法还包括:对所述第一交易阶段的交易对象进行解锁。
11.可选地,在对所述第二交易阶段对应的交易事务进行处理之后,所述方法还包括:对所述第二交易阶段的交易对象进行解锁。
12.可选地,所述方法还包括:在确定对所述第一交易阶段的交易对象或所述第二交易阶段的交易对象加锁处理失败的情况下,基于预定算法重新获取资源锁,其中,所述预定算法至少包括:redisson分布式算法;利用所述资源锁,对第一交易阶段的交易对象或所述第二交易阶段的交易对象重新进行加锁处理。
13.根据本发明实施例的另外一个方面,还提供了一种交易事务的处理装置,包括:获取模块,用于获取交易事务的交易信息,其中,所述交易事务包括至少两个交易阶段;处理模块,用于在基于所述交易信息的校验结果确定所述交易事务处于未成功处理状态时,按照所述至少两个交易阶段对应的处理方式处理所述交易事务。
14.可选地,所述装置还包括:初始化模块,用于在获取交易事务的交易信息之前,对所述交易信息进行初始化。
15.可选地,所述处理模块,包括:检验单元,用于对所述交易信息进行校验,得到所述校验结果;确定单元,用于在所述校验结果表示所述交易信息为验证成功的情况下,确定所述交易事务处于未成功处理状态。
16.可选地,所述处理模块,包括:判断单元,用于判断所述第一交易阶段是否已经完成,并获取判断结果;加锁单元,用于在所述判断结果为所述第一交易阶段未成功完成的情况下,对所述第一交易阶段的交易对象进行加锁处理,得到第一加锁处理结果;处理单元,用于在所述第一加锁处理结果表示对所述第一交易阶段的交易对象加锁成功后,对所述第一交易阶段对应的交易事务进行处理;控制单元,用于在确定所述第一交易阶段的交易事务处理完成后,控制所述交易事务进入所述第二交易阶段,以利用所述第二交易阶段对应的处理方式对所述交易事务进行处理。
17.可选地,所述控制单元,包括:加锁子单元,用于对所述第二交易阶段的交易对象进行加锁处理,得到第二加锁处理结果;处理子单元,用于在所述第二加锁处理结果表示对所述第二交易阶段的交易对象加锁成功后,对所述第二交易阶段对应的交易事务进行处理。
18.可选地,所述装置还包括:第一解锁模块,用于在确定所述第一交易阶段的交易事务处理完成后,对所述第一交易阶段的交易对象进行解锁。
19.可选地,所述装置还包括:第二解锁模块,用于在对所述第二交易阶段对应的交易事务进行处理之后,对所述第二交易阶段的交易对象进行解锁。
20.可选地,所述装置还包括:获取资源锁模块,用于在确定对所述第一交易阶段的交易对象或所述第二交易阶段的交易对象加锁处理失败的情况下,基于预定算法重新获取资源锁,其中,所述预定算法至少包括:redisson分布式算法;重新加锁模块,用于利用所述资源锁,对第一交易阶段的交易对象或所述第二交易阶段的交易对象重新进行加锁处理。
21.根据本发明实施例的另外一个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述计算机可读存储介质所在设备执行上述中任一项所述的交易事务的处理方法。
22.根据本发明实施例的另外一个方面,还提供了一种处理器,所述处理器用于运行计算机程序,其中,所述计算机程序运行时执行上述中任一项所述的交易事务的处理方法。
23.在本发明实施例中,获取交易事务的交易信息,其中,交易事务包括至少两个交易阶段;在基于交易信息的校验结果确定交易事务处于未成功处理状态时,按照至少两个交易阶段对应的处理方式处理交易事务。通过本发明实施例提供的交易事务的处理方法,达到了基于获取到的交易信息来分多个阶段对事务进行处理的目的,从而实现了提升事务处理容错率的技术效果,进而解决了针对相关技术中在处理交易事务时采用单一阶段处理方式,导致事务处理容错率较低的技术问题。
附图说明
24.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
25.图1是根据本发明实施例的交易事务的处理方法的流程图;
26.图2是根据本发明实施例的优选的交易事务的处理方法的流程图;
27.图3是根据本发明实施例的交易事务的处理装置的示意图。
具体实施方式
28.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
29.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
30.实施例1
31.根据本发明实施例,提供了一种交易事务的处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
32.图1是根据本发明实施例的交易事务的处理方法的流程图,如图1所示,该方法包括如下步骤:
33.步骤s102,获取交易事务的交易信息,其中,交易事务包括至少两个交易阶段。
34.可选的,在上述步骤中,交易事务包括但不限于:所有的交易主体与其他交易主体的交易事务,并且其交易可以被分为至少两个阶段完成;交易信息指的是交易的标识信息、
交易的完成状态信息(即交易是否开始进行,如果已经开始交易进行到了哪个阶段)。
35.步骤s104,在基于交易信息的校验结果确定交易事务处于未成功处理状态时,按照至少两个交易阶段对应的处理方式处理交易事务。
36.可选的,在上述步骤中,在获取交易信息后,基于交易信息对交易事务进行校验,以确定交易事务是否已经成功处理过,若未曾成功处理过,则校验通过,继续按照多个交易阶段对应的处理方式来处理交易事务。
37.由上可知,在本发明实施例中,首先可以获取交易事务的交易信息,其中,交易事务包括至少两个交易阶段;接着可以在基于交易信息的校验结果确定交易事务处于未成功处理状态时,按照至少两个交易阶段对应的处理方式处理交易事务。通过本发明实施例提供的交易事务的处理方法,达到了基于获取到的交易信息来分多个阶段对事务进行处理的目的,从而实现了提升事务处理容错率的技术效果,进而解决了针对相关技术中在处理交易事务时采用单一阶段处理方式,导致事务处理容错率较低的技术问题。
38.作为一种可选的实施例,在获取交易事务的交易信息之前,该交易事务的处理方法还包括:对交易信息进行初始化。
39.在上述可选的实施例中,在获取交易信息时,由于不确定数据是否被用作其他处理时导致其格式等方面受到影响而影响对数据的接下来验证与处理,则对交易信息进行初始化,接着继续对交易信息进行处理,以增加数据的可靠性。
40.作为一种可选的实施例,基于交易信息的校验结果确定交易事务处于未成功处理状态,包括:对交易信息进行校验,得到校验结果;在校验结果表示交易信息为验证成功的情况下,确定交易事务处于未成功处理状态。
41.在上述可选的实施例中,首先可以对交易信息进行校验,当校验结果显示交易事务没有被成功处理完成过的时候则校验通过;反之则校验不通过。
42.作为一种可选的实施例,至少两个交易阶段包括:第一交易阶段和第二交易阶段,按照至少两个交易阶段对应的处理方式处理交易事务,包括:判断第一交易阶段是否已经完成,并获取判断结果;在判断结果为第一交易阶段未成功完成的情况下,对第一交易阶段的交易对象进行加锁处理,得到第一加锁处理结果;在第一加锁处理结果表示对第一交易阶段的交易对象加锁成功后,对第一交易阶段对应的交易事务进行处理;在确定第一交易阶段的交易事务处理完成后,控制交易事务进入第二交易阶段,以利用第二交易阶段对应的处理方式对交易事务进行处理。
43.在上述可选的实施例中,首先可以判断第一交易阶段是否已经完成,如果已经完成,则进入第二阶段的处理;如果未完成,则对第一交易阶段的交易对象进行加锁处理,在加锁完成后,对交易事务进行交易事务的处理(例如,包括但不限于:对转出账户的处理、对主动发起交易对象的事务进行处理等),处理完成后,控制交易事务进入第二交易阶段,并以第二交易阶段对应的处理方式对交易事务进行处理。
44.作为一种可选的实施例,控制交易事务进入第二交易阶段,以利用第二交易阶段对应的处理方式对交易事务进行处理,包括:对第二交易阶段的交易对象进行加锁处理,得到第二加锁处理结果;在第二加锁处理结果表示对第二交易阶段的交易对象加锁成功后,对第二交易阶段对应的交易事务进行处理。
45.在上述可选的实施例中,当事务进行到第二交易阶段的时候,对交易事务进行加
锁处理,确认加锁成功后,对交易事务进行第二交易阶段处理。
46.作为一种可选的实施例,在确定第一交易阶段的交易事务处理完成后,该交易事务的处理方法还包括:对第一交易阶段的交易对象进行解锁。
47.在上述可选的实施例中,在对第一交易阶段的交易事务处理完成后对第一交易阶段的交易对象进行接触资源锁。
48.作为一种可选的实施例,在对第二交易阶段对应的交易事务进行处理之后,该交易事务的处理方法还包括:对第二交易阶段的交易对象进行解锁。
49.在上述可选的实施例中,在对第二交易阶段的交易事务处理完成后对第二交易阶段的交易对象进行接触资源锁。
50.作为一种可选的实施例,该交易事务的处理方法还包括:在确定对第一交易阶段的交易对象或第二交易阶段的交易对象加锁处理失败的情况下,基于预定算法重新获取资源锁,其中,预定算法至少包括:redisson分布式算法;利用资源锁,对第一交易阶段的交易对象或第二交易阶段的交易对象重新进行加锁处理。
51.需要说明的是,在对本发明实施例中提供的交易事务的处理方法实现时,选择了redisson分布式锁实现账务处理中对账户资源的加锁及释放锁操作,redisson分布式锁支持锁重入,支持阻塞等待,并通过lua脚本保障原子操作,满足本发明实施例提供的交易处理方法的要求。同时,选择了sharding-jdbc实现账务数据的平行分库。redisson是一个在redis的基础上实现的java驻内存数据网格(in-memorydatagrid)。
52.图2是根据本发明实施例的优选的交易事务的处理方法的流程图,如图2所示,本发明实施例提供的方法以两个账户之间进行转账为例,对两阶段账务处理流程进行说明,具体转账处理流程如下:
53.首先,进行交易参数的校验及初始化。
54.然后,根据处理流程的唯一标识及当前状态,进行幂等校验,如果成功则继续,失败则直接结束。
55.最后,判断一阶段是否已处理:已处理则进行一阶段中间状态的现场恢复,并进入二阶段,未处理则进入一阶段。
56.其中,一阶段具体流程为:
57.(1)、当前线程尝试获取转出账户资源锁,加锁成功则进行下一步,加锁失败则按照redisson分布式锁方式重试获取锁。
58.(2)、转出账户相关事务处理。
59.(3)、当前线程释放转出账户锁,并记录一阶段已成功执行。
60.(4)、一阶段中间状态现场保留。
61.二阶段具体流程为:
62.(1)、当前线程尝试获取转入账户资源锁,加锁成功则进行下一步,加锁失败则按照redisson分布式锁方式重试获取锁。
63.(2)、转入账户相关事务处理。
64.(3)、当前线程释放转入账户锁。
65.需要说明的是,除了上述处理流程,本发明实施例提供的交易事务的处理方法还提供其他保障措施,以确保账户处理的成功高效进行,具体措施如:(1)失败重试机制:当一
阶段或二阶段中账户事务处理失败时,根据预先设定的重试次数,启动重试机制。(2)定时任务补偿机制:对重试后仍未成功处理的流程,通过定时任务对其重新推动,可根据实际业务需求,对定时任务的触发频率、执行数据条数和查询时间范围进行配置。
66.由上可知,通过本发明实施例提供的交易事务的处理方法提出一种高可靠可重试的两阶段账务处理方法及装置,结合分布式锁、数据库分库、幂等校验及失败重试补偿等技术手段,满足了账务处理的高并发性、数据一致性,并实现了异常失败账务处理交易可重试推动成功的要求。
67.并且,本发明实施例提供的交易事务的处理方法还具备以下优势:
68.(1)、账户资源加锁:为了保证账户不被其他请求影响数据的准确性,在进行记账处理时,需要先对账户的资源加锁,保证并发线程中只有一个线程能够持有当前账户的资源锁,相关记账处理完毕后会再释放锁。
69.(2)、账户数据水平分库:在账务系统中,账户数据的数据量会很庞大,为了提高账户记账处理的并发性,将账户数据进行数据库水平分库。
70.(3)、幂等校验:针对每一笔账务处理交易,通过唯一标识进行幂等校验,保证同一笔账务处理交易被多次执行时,仅成功执行一次。在此基础上,通过重试机制,保证失败的账务处理交易可被重新正确推动。
71.(4)、中间状态现场保留与恢复:通过两阶段对账务进行处理时,可能会出现第一阶段成功,第二价段失败的情况,例如,转账交易中转出账户处理成功,而进行转入账户处理时加锁失败,导致第二阶段转入处理失败。虽然此时服务端已经处理了账户余额信息,用户对此失败情况不感知,但需要在消费端将此交易继续处理成功,此时,需要将第一阶段处理成功的中间状态进行现场保留,以便交易重新推动时,对中间状态进行现场恢复。
72.(5)、定时任务补偿:对于上文表述的第一阶段成功但第二阶段的交易,以及第一阶段失败的交易,均通过定时任务重新推动,以确保账务流程的最终成功处理。
73.实施例2
74.根据本发明实施例的另外一个方面,还提供了一种交易事务的处理装置,图3是根据本发明实施例的交易事务的处理装置的示意图,如图3所示,包括:获取模块31以及处理模块33。
75.获取模块31,用于获取交易事务的交易信息,其中,交易事务包括至少两个交易阶段。
76.处理模块33,用于在基于交易信息的校验结果确定交易事务处于未成功处理状态时,按照至少两个交易阶段对应的处理方式处理交易事务。
77.此处需要说明的是,上述获取模块31以及处理模块33对应于实施例1中的步骤s102至s104,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
78.由上可知,在本发明实施例中,首先可以借助获取模块31获取交易事务的交易信息,其中,交易事务包括至少两个交易阶段;接着借助处理模块33在基于交易信息的校验结果确定交易事务处于未成功处理状态时,按照至少两个交易阶段对应的处理方式处理交易事务。通过本发明实施例提供的交易事务的处理装置,达到了基于获取到的交易信息来分
多个阶段对事务进行处理的目的,从而实现了提升事务处理容错率的技术效果,进而解决了针对相关技术中在处理交易事务时采用单一阶段处理方式,导致事务处理容错率较低的技术问题。
79.可选地,该交易事务的处理装置还包括:初始化模块,用于在获取交易事务的交易信息之前,对交易信息进行初始化。
80.可选地,处理模块,包括:检验单元,用于对交易信息进行校验,得到校验结果;确定单元,用于在校验结果表示交易信息为验证成功的情况下,确定交易事务处于未成功处理状态。
81.可选地,处理模块,包括:判断单元,用于判断第一交易阶段是否已经完成,并获取判断结果;加锁单元,用于在判断结果为第一交易阶段未成功完成的情况下,对第一交易阶段的交易对象进行加锁处理,得到第一加锁处理结果;处理单元,用于在第一加锁处理结果表示对第一交易阶段的交易对象加锁成功后,对第一交易阶段对应的交易事务进行处理;控制单元,用于在确定第一交易阶段的交易事务处理完成后,控制交易事务进入第二交易阶段,以利用第二交易阶段对应的处理方式对交易事务进行处理。
82.可选地,控制单元,包括:加锁子单元,用于对第二交易阶段的交易对象进行加锁处理,得到第二加锁处理结果;处理子单元,用于在第二加锁处理结果表示对第二交易阶段的交易对象加锁成功后,对第二交易阶段对应的交易事务进行处理。
83.可选地,该交易事务的处理装置还包括:第一解锁模块,用于在确定第一交易阶段的交易事务处理完成后,对第一交易阶段的交易对象进行解锁。
84.可选地,该交易事务的处理装置还包括:第二解锁模块,用于在对第二交易阶段对应的交易事务进行处理之后,对第二交易阶段的交易对象进行解锁。
85.可选地,该交易事务的处理装置还包括:获取资源锁模块,用于在确定对第一交易阶段的交易对象或第二交易阶段的交易对象加锁处理失败的情况下,基于预定算法重新获取资源锁,其中,预定算法至少包括:redisson分布式算法;重新加锁模块,用于利用资源锁,对第一交易阶段的交易对象或第二交易阶段的交易对象重新进行加锁处理。
86.实施例3
87.根据本发明实施例的另外一个方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序被处理器运行时控制计算机可读存储介质所在设备执行上述中任一项的交易事务的处理方法。
88.实施例4
89.根据本发明实施例的另外一个方面,还提供了一种处理器,处理器用于运行计算机程序,其中,计算机程序运行时执行上述中任一项的交易事务的处理方法。
90.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
91.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
92.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互
之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
93.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
94.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
95.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
96.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1