分布式子事务处理方法及装置与流程

文档序号:26142251发布日期:2021-08-03 14:27阅读:102来源:国知局
分布式子事务处理方法及装置与流程

本发明公开了一种分布式子事务处理方法及装置,可应用于金融领域,也可应用于除金融领域以外的任意领域,本发明公开的分布式子事务处理方法及装置的应用领域不作限定。



背景技术:

近年来,随着it架构转型的不断推进,分布式架构成为大型企业信息系统建设的标准方案,分布式服务也成为系统服务设计的主流。分布式服务与传统服务相比,技术架构更加开放灵活,技术复杂度和不确定因素增加,对服务性能也有更高的要求。对要求事务一致性分布式服务,涉及主事务和各子事务的多个系统的协同处理,分布式服务的性能受到子事务性能的直接影响,提升分布式子事务性能,有利于提升系统的整体对外服务质量。

传统分布式服务受普通联机交易设计思维的影响,通常都是按串行方式对包含的多个子事务逐一执行,分布式服务总的执行时间由各子事务执行时间自然叠加,子事务数量越多,分布式服务总的执行时间就越长。在子事务数量非常多的业务场景下,如银行多借多贷业务场景,现有的分布式子事务处理方法的事务执行效率非常低,服务总体性能无法满足业务要求,严重影响客户使用体验。

因此,亟需一种可以克服上述问题的分布式子事务处理方案。



技术实现要素:

本发明实施例提供一种分布式子事务处理方法,用以提高事务执行效率,使服务总体性能满足业务要求,提升客户使用体验,该方法包括:

接收外围系统发送的交易指令;

根据所述交易指令,生成对应的子事务集合,所述子事务集合中包含多个子事务;

根据所述多个子事务之间的业务逻辑关系对所述多个子事务进行分组,得到业务逻辑相关子事务组和业务逻辑不相关子事务组;

采用串行方式执行所述业务逻辑相关子事务组中的子事务,采用并行方式执行所述业务逻辑不相关子事务组中的子事务,得到子事务的执行结果;

向外围系统发送所述执行结果。

本发明实施例提供一种分布式子事务处理装置,用以提高事务执行效率,使服务总体性能满足业务要求,提升客户使用体验,该装置包括:

指令接收模块,用于接收外围系统发送的交易指令;

集合生成模块,用于根据所述交易指令,生成对应的子事务集合,所述子事务集合中包含多个子事务;

事务分组模块,用于根据所述多个子事务之间的业务逻辑关系对所述多个子事务进行分组,得到业务逻辑相关子事务组和业务逻辑不相关子事务组;

事务执行模块,用于采用串行方式执行所述业务逻辑相关子事务组中的子事务,采用并行方式执行所述业务逻辑不相关子事务组中的子事务,得到子事务的执行结果;

结果发送模块,用于向外围系统发送所述执行结果。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述分布式子事务处理方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述分布式子事务处理方法的计算机程序。

相比于现有技术中按串行方式对包含的多个子事务逐一执行实现分布式子事务处理的方案而言,本发明实施例通过接收外围系统发送的交易指令;根据所述交易指令,生成对应的子事务集合,所述子事务集合中包含多个子事务;根据所述多个子事务之间的业务逻辑关系对所述多个子事务进行分组,得到业务逻辑相关子事务组和业务逻辑不相关子事务组;采用串行方式执行所述业务逻辑相关子事务组中的子事务,采用并行方式执行所述业务逻辑不相关子事务组中的子事务,得到子事务的执行结果;向外围系统发送所述执行结果。本发明实施例根据子事务之间的业务逻辑关系对子事务进行分组,对于业务逻辑不相关的子事务采用并行方式执行,有效提升服务的执行性能,减少服务超时概率,有效提升系统对客服务能力,使服务总体性能满足业务要求,提升客户使用体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中分布式子事务处理方法示意图;

图2~图3为本发明实施例中子事务分组方法示意图;

图4为本发明实施例中串行方式执行子事务流程图;

图5为本发明实施例中并行方式执行子事务流程图;

图6为本发明实施例中事务同步流程图;

图7为本发明具体实施例中分布式子事务处理方法示意图;

图8为本发明实施例中分布式子事务处理装置结构图;

图9是本发明实施例的计算机设备结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

如前所述,针对银行多借多贷等传统多子事务业务场景,子事务间的执行效率是必须要关注的问题,否则服务总体性能可能无法满足业务要求,进而影响客户使用体验。

为了提高事务执行效率,使服务总体性能满足业务要求,提升客户使用体验,本发明实施例提供一种分布式子事务处理方法,如图1所示,该方法可以包括:

步骤101、接收外围系统发送的交易指令;

步骤102、根据所述交易指令,生成对应的子事务集合,所述子事务集合中包含多个子事务;

步骤103、根据所述多个子事务之间的业务逻辑关系对所述多个子事务进行分组,得到业务逻辑相关子事务组和业务逻辑不相关子事务组;

步骤104、采用串行方式执行所述业务逻辑相关子事务组中的子事务,采用并行方式执行所述业务逻辑不相关子事务组中的子事务,得到子事务的执行结果;

步骤105、向外围系统发送所述执行结果。

由图1所示可以得知,本发明实施例通过接收外围系统发送的交易指令;根据所述交易指令,生成对应的子事务集合,所述子事务集合中包含多个子事务;根据所述多个子事务之间的业务逻辑关系对所述多个子事务进行分组,得到业务逻辑相关子事务组和业务逻辑不相关子事务组;采用串行方式执行所述业务逻辑相关子事务组中的子事务,采用并行方式执行所述业务逻辑不相关子事务组中的子事务,得到子事务的执行结果;向外围系统发送所述执行结果。本发明实施例根据子事务之间的业务逻辑关系对子事务进行分组,对于业务逻辑不相关的子事务采用并行方式执行,有效提升服务的执行性能,减少服务超时概率,有效提升系统对客服务能力,使服务总体性能满足业务要求,提升客户使用体验。

实施例中,接收外围系统发送的交易指令;根据所述交易指令,生成对应的子事务集合,所述子事务集合中包含多个子事务;根据所述多个子事务之间的业务逻辑关系对所述多个子事务进行分组,得到业务逻辑相关子事务组和业务逻辑不相关子事务组。

本实施例中,在接收外围系统发送的交易指令之后,对交易数据进行合法性检查。

本实施例中,如图2所示,根据所述多个子事务之间的业务逻辑关系对所述多个子事务进行分组,包括:

步骤201、获得每个子事务的交易方账号;

步骤202、对每个子事务,若该子事务的交易方账号出现在其余子事务的交易方账号集合中,则将该子事务归为业务逻辑相关子事务组,若该子事务的交易方账号未出现在其余子事务的交易方账号集合中,则将该子事务归为业务逻辑不相关子事务组。

具体实施时,如图3所示,在子事务分组执行开始后,判断子事务是否已全部识别,若已全部识别则执行结束,若未全部识别,则生成除当前子事务外其他子事务的交易方账号集合,若该子事务的交易方账号出现在其余子事务的交易方账号集合中,则将该子事务归为业务逻辑相关子事务组,若该子事务的交易方账号未出现在其余子事务的交易方账号集合中,则将该子事务归为业务逻辑不相关子事务组。

需要说明的是,应用于不同业务场景,交易方账号有所不同,例如对于多借多贷业务场景,则交易方账号为收付方账号(收款账号和付款账号)。“多借多贷”业务场景可看作由多笔一对一转账子事务构成的交易,各笔一对一转账的付款账号与收款账号可能相同,也可能不同。对付款账号或收款账号相同的和付款账号、收款账号均不相同的子事务则可以分别编组,付款账号或收款账号相同的组成“业务逻辑相关子事务”组,该组内的子事务仍然保持串行执行;付款账号、收款账号均不相同的组成“业务逻辑不相关子事务”组,该组内的子事务并行执行。

实施例中,采用串行方式执行所述业务逻辑相关子事务组中的子事务,采用并行方式执行所述业务逻辑不相关子事务组中的子事务,得到子事务的执行结果。

本实施例中,采用串行方式执行所述业务逻辑相关子事务组中的子事务,包括:采用串行方式对业务逻辑相关子事务组中的子事务进行交易处理。

具体实施时,如图4所示,串行子事务执行开始后判断是否有子事务未处理,若有子事务为处理则调起一对一转账子事务,对子事务进行交易处理,然后返回子事务处理结果,直至所有子事务处理完成。

本实施例中,采用并行方式执行所述业务逻辑不相关子事务组中的子事务,包括:按如下方式处理业务逻辑不相关子事务组中未处理的子事务,直至所述业务逻辑不相关子事务组中全部子事务处理完成:若业务逻辑不相关子事务组中未处理的子事务的个数大于预设数量,则从所述未处理的子事务中取预设数量的子事务;采用并行方式对所述预设数量的子事务进行交易处理;根据所述预设数量,更新业务逻辑不相关子事务组中未处理的子事务的个数。

具体实施时,如图5所示,并行子事务执行开始后全段是否有未处理的子事务,若有未处理的子事务,也即子事务的个数大于零,则判断未处理子事务的个数是否大于预设数量,若未处理子事务的个数大于预设数量则从未处理的子事务中取预设数量的子事务进行并行交易处理,然后从未处理的子事务个数中减去预设数量后作为更新后的业务逻辑不相关子事务组中未处理的子事务的个数,返回继续处理剩下的未处理子事务,直至所述业务逻辑不相关子事务组中全部子事务处理完成。若未处理子事务的个数小于或等于预设数量则取出全部未处理的子事务进行并行交易处理。

本实施例中,所述交易处理包括:余额更新处理,明细生成处理,日志登记处理其中之一或任意组合。

本实施例中,分布式子事务处理方法还包括:

在采用并行方式执行所述业务逻辑不相关子事务组中的子事务的过程中,进行业务逻辑不相关子事务组中子事务之间的同步处理。

本实施例中,分布式子事务处理方法还包括:

在采用串行方式执行所述业务逻辑相关子事务组中的子事务以及采用并行方式执行所述业务逻辑不相关子事务组中的子事务的过程中,进行业务逻辑相关子事务组与业务逻辑不相关子事务组之间的同步处理。

具体实施时,检测同步空间内子事务是否已全部执行,全部执行完才允许程序往后执行。同步处理分为:业务逻辑相关子事务与业务逻辑不相关子事务间同步以及业务逻辑不相关子事务内并行事务同步。如图6所示,判断是否开始事务同步,若开始则设置待处理子事务数及标识,在未开始事务同步时判断已处理事务是否等于设置的待处理子事务数,若等于则结束,若不等于则继续进行判断直至满足等于的要求后结束判断。

实施例中,向外围系统发送所述执行结果。

具体实施时,对子事务的执行结果进行整理后返回给服务调用方,会根据业务需求的不同进行不同的处理。

本发明提供了一种基于并行式子事务的分布服务设计方案,通过对服务内子事务重新设计,使无业务相关性的子事务可以并行执行,从而提升分布式式服务的整体性能,可以保障多借多贷等多子事务交易高效执行,进而提升对客服务能力。其改变了现有联机服务子事务串行执行设计模式,首先对服务内的子事务进行分类,分别划分为“业务逻辑相关子事务”和“业务逻辑不相关子事务”,对“业务逻辑不相关子事务”进行并行执行,然后通过子事务同步装置实现与“业务逻辑相关子事务”的同步。当包含多组“业务逻辑相关子事务”和“业务逻辑不相关子事务”时,各子事务组可以交替执行。本发明实施例可实现服务整体业务逻辑的高效执行,保证服务整体性能,减少服务超时概率,进而提升系统对客服务能力。

本发明实施例提供的分布式子事务处理方案通过识别逻辑不相关子事务并以并行方式执行,以此提升分布式服务的整体性能,具有如下的效果与优点:

1、通过设计并行子事务,有效提升服务的执行性能,类似多借多贷等复杂服务在平台系统也可实现,能在对客服务水平不降低的前提下,保障主机系统架构转型工程顺利进行。

2、借鉴通用并行程序设计思想,简单易懂,易于接受。不仅对分布式服务的设计有指导意义,对非分布式服务的设计也可参考。

下面给出一个具体实施例,说明本发明实施例中分布式子事务处理方案。在本具体实施例中,以“多借多贷”的业务场景为例进行详细说明。“多借多贷”可看作由多笔一对一转账子事务构成的交易,各笔一对一转账的付款账号与收款账号可能相同,也可能不同。对付款账号或收款账号相同的和付款账号、收款账号均不相同的子事务则可以分别编组,付款账号或收款账号相同的组成“业务逻辑相关子事务”组,该组内的子事务仍然保持串行执行;付款账号、收款账号均不相同的组成“业务逻辑不相关子事务”组,该组内的子事务并行执行。为方便说明,假设多借多贷业务为包含a1->b1(表示会计分录为借a1贷b1的一对一转账子事务)、a1->b2、a2->b1、a3->b3、a4->b4、a5->b5的交易。如图7所示,按如下步骤进行处理:

1、接收外围系统上送的多借多贷指令,在完成数据合法性检查之后,生成一对一转账的子事务集合,最后子事务集合交由事务识别单元进行业务逻辑相关性检查。

2、根据一对一转账的子事务集合,完成“业务逻辑相关子事务”和“业务逻辑不相关子事务”的识别,识别逻辑为:检查转账子事务中的收付方账号,若其没在其它的子事务的收付方账号集合中出现,则认为该子事务为业务逻辑不相关子事务,否则为业务逻辑相关子事务。对上述例子,则可以识别出(a1->b1、a1->b2、a2->b1)的“业务逻辑相关子事务”和(a3->b3、a4->b4、a5->b5)的“业务逻辑不相关子事务”。

3.、对“业务逻辑相关子事务”组的子事务进行执行,执行方式为串行方式,即(a1->b1、a1->b2、a2->b1)逐笔执行。

4、对“业务逻辑不相关子事务”组的子事务进行执行,执行方式为并行方式。在执行前需开启事务并行机制,事务执行完后需进行事务同步。即对(a3->b3、a4->b4、a5->b5)并行执行。

5、检测同步空间内子事务是否已全部执行,全部执行完才允许程序往后执行。共包含2个子单元,分别为业务逻辑相关子事务与业务逻辑不相关子事务间同步子单元(子单元1)及业务逻辑不相关子事务内并行事务同步子单元(子单元2)。子单元1实现(a1->b1、a1->b2、a2->b1)与(a3->b3、a4->b4、a5->b5)之间的同步;子单元2实现(a3->b3、a4->b4、a5->b5)内的同步。

6、对子事务的处理结果进行整理,然后返回给服务调用方,其根据业务需求的不同可进行不同的处理。

7、实现子事务逻辑的处理,即一对一转账处理,包括余额更新、明细、日志登记等。

基于同一发明构思,本发明实施例还提供了一种分布式子事务处理装置,如下面的实施例所述。由于这些解决问题的原理与分布式子事务处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

图8为本发明实施例中分布式子事务处理装置的结构图,如图8所示,该装置包括:

指令接收模块801,用于接收外围系统发送的交易指令;

集合生成模块802,用于根据所述交易指令,生成对应的子事务集合,所述子事务集合中包含多个子事务;

事务分组模块803,用于根据所述多个子事务之间的业务逻辑关系对所述多个子事务进行分组,得到业务逻辑相关子事务组和业务逻辑不相关子事务组;

事务执行模块804,用于采用串行方式执行所述业务逻辑相关子事务组中的子事务,采用并行方式执行所述业务逻辑不相关子事务组中的子事务,得到子事务的执行结果;

结果发送模块805,用于向外围系统发送所述执行结果。

一个实施例中,事务分组模块803进一步用于:

获得每个子事务的交易方账号;

对每个子事务,若该子事务的交易方账号出现在其余子事务的交易方账号集合中,则将该子事务归为业务逻辑相关子事务组,若该子事务的交易方账号未出现在其余子事务的交易方账号集合中,则将该子事务归为业务逻辑不相关子事务组。

一个实施例中,事务执行模块804进一步用于:

采用串行方式对业务逻辑相关子事务组中的子事务进行交易处理。

一个实施例中,事务执行模块804进一步用于:

按如下方式处理业务逻辑不相关子事务组中未处理的子事务,直至所述业务逻辑不相关子事务组中全部子事务处理完成:若业务逻辑不相关子事务组中未处理的子事务的个数大于预设数量,则从所述未处理的子事务中取预设数量的子事务;采用并行方式对所述预设数量的子事务进行交易处理;根据所述预设数量,更新业务逻辑不相关子事务组中未处理的子事务的个数。

一个实施例中,所述交易处理包括:余额更新处理,明细生成处理,日志登记处理其中之一或任意组合。

一个实施例中,所述的分布式子事务处理方法还包括:

第一同步模块,用于在采用并行方式执行所述业务逻辑不相关子事务组中的子事务的过程中,进行业务逻辑不相关子事务组中子事务之间的同步处理。

一个实施例中,所述的分布式子事务处理方法还包括:

第二同步模块,用于在采用串行方式执行所述业务逻辑相关子事务组中的子事务以及采用并行方式执行所述业务逻辑不相关子事务组中的子事务的过程中,进行业务逻辑相关子事务组与业务逻辑不相关子事务组之间的同步处理。

综上所述,本发明实施例通过接收外围系统发送的交易指令;根据所述交易指令,生成对应的子事务集合,所述子事务集合中包含多个子事务;根据所述多个子事务之间的业务逻辑关系对所述多个子事务进行分组,得到业务逻辑相关子事务组和业务逻辑不相关子事务组;采用串行方式执行所述业务逻辑相关子事务组中的子事务,采用并行方式执行所述业务逻辑不相关子事务组中的子事务,得到子事务的执行结果;向外围系统发送所述执行结果。本发明实施例根据子事务之间的业务逻辑关系对子事务进行分组,对于业务逻辑不相关的子事务采用并行方式执行,有效提升服务的执行性能,减少服务超时概率,有效提升系统对客服务能力,使服务总体性能满足业务要求,提升客户使用体验。

基于前述发明构思,如图9所示,本发明还提出了一种计算机设备900,包括存储器910、处理器920及存储在存储器910上并可在处理器920上运行的计算机程序930,所述处理器920执行所述计算机程序930时实现前述分布式子事务处理方法。

基于前述发明构思,本发明提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现前述分布式子事务处理方法。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1