分布式事务处理方法及系统与流程

文档序号:24073453发布日期:2021-02-26 16:16阅读:122来源:国知局
分布式事务处理方法及系统与流程

[0001]
本申请涉及分布式服务技术领域,尤其涉及一种分布式事务处理方法及系统。


背景技术:

[0002]
分布式事务是指,事务的发起方、参与者、支持事务的服务器、资源服务器以及事务管理器位于分布式系统的不同节点上,针对复杂的业务场景,存在分层嵌套的子事务,即子事务会调用下层的其它子事务。
[0003]
在分布式事务处理过程中,在事务信息传递部分,通常通过定义事务信息的公共输入和输出,采用这种方式业务接口的入参和出参必须继承自公共输入和输出,侵入性大,破坏了开闭原则;在事务信息存储部分,一种解决方案是,主事务侧存储链路上所有子事务的事务信息,统一由主事务发起所有子事务的二阶段调用,这种解决方案需要冗余保存分层嵌套的子事务服务的消费方引用。


技术实现要素:

[0004]
针对上述背景技术中的至少一个技术问题,本申请提出了一种分布式事务处理方法及系统,能够提高分布式事务处理的可靠性。
[0005]
为了解决上述技术问题,本申请提供以下技术方案:
[0006]
第一方面,本申请提供一种分布式事务处理方法,包括:
[0007]
应用目标分布式事务中的各个事务对应的直接子事务表,确定该目标分布式事务中的主事务对应的底层子事务,每个所述直接子事务表包括:事务和该事务的下一层事务之间的对应关系;
[0008]
对所述底层子事务执行分布式处理操作;所述分布式处理操作包括:执行当前层的事务并判断上一层事务是否为主事务;
[0009]
若确定所述上一层事务并非主事务,则对该上一层事务进行所述分布式处理操作;
[0010]
若确定所述上一层事务为主事务,则完成所述目标分布式事务的处理。
[0011]
进一步地,所述应用目标分布式事务中的各个事务对应的直接子事务表,确定该目标分布式事务中的主事务对应的底层子事务,包括:
[0012]
对所述主事务执行判断操作;所述判断操作包括:获取当前层的事务对应的直接子事务表;基于所述当前层的事务对应的直接子事务表和所述主事务,判断是否存在下一层事务;
[0013]
若确定存在下一层事务,则对该下一层事务进行所述判断步骤;
[0014]
若确定不存在下一层事务,则将当前层的事务作为底层子事务。
[0015]
进一步地,所述基于所述当前层的事务对应的直接子事务表和所述主事务,判断是否存在下一层事务,包括:
[0016]
将所述当前层的事务对应的事务标识和所述主事务对应的主事务标识写入
rpccontext上下文中;
[0017]
应用filter机制,从所述rpccontext上下文中获取所述事务标识和主事务标识;
[0018]
根据所述当前层的事务对应的直接子事务表、所述事务标识和主事务标识,判断是否存在下一层事务。
[0019]
进一步地,在所述执行当前层的事务之后,还包括:
[0020]
将所述当前层的事务对应的状态标记为已成功;
[0021]
相对应的,所述若确定所述上一层事务为主事务,则完成所述目标分布式事务的处理,包括:
[0022]
若确定所述上一层事务为主事务,则将所述主事务的状态标记为已成功,完成所述目标分布式事务的处理。
[0023]
第二方面,本申请提供一种分布式事务处理系统,包括:
[0024]
确定装置,用于应用目标分布式事务中的各个事务对应的直接子事务表,确定该目标分布式事务中的主事务对应的底层子事务,每个所述直接子事务表包括:事务和该事务的下一层事务之间的对应关系;
[0025]
执行装置,用于对所述底层子事务执行分布式处理操作;所述分布式处理操作包括:执行当前层的事务并判断上一层事务是否为主事务;
[0026]
处理装置,用于若确定所述上一层事务并非主事务,则对该上一层事务进行所述分布式处理操作;
[0027]
确定主事务装置,用于若确定所述上一层事务为主事务,则完成所述目标分布式事务的处理。
[0028]
进一步地,所述确定装置,包括:
[0029]
判断模块,用于对所述主事务执行判断操作;所述判断操作包括:获取当前层的事务对应的直接子事务表;基于所述当前层的事务对应的直接子事务表和所述主事务,判断是否存在下一层事务;
[0030]
下一次判断模块,用于若确定存在下一层事务,则对该下一层事务进行所述判断步骤;
[0031]
确定底层子事务模块,用于若确定不存在下一层事务,则将当前层的事务作为底层子事务。
[0032]
进一步地,所述判断模块,包括:
[0033]
写入单元,用于将所述当前层的事务对应的事务标识和所述主事务对应的主事务标识写入rpccontext上下文中;
[0034]
获取单元,用于应用filter机制,从所述rpccontext上下文中获取所述事务标识和主事务标识;
[0035]
事务判断单元,用于根据所述当前层的事务对应的直接子事务表、所述事务标识和主事务标识,判断是否存在下一层事务。
[0036]
进一步地,所述执行装置,还包括:
[0037]
标记单元,用于将所述当前层的事务对应的状态标记为已成功;
[0038]
相对应的,所述确定主事务装置,包括:
[0039]
确定主事务单元,用于若确定所述上一层事务为主事务,则将所述主事务的状态
标记为已成功,完成所述目标分布式事务的处理。
[0040]
第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的分布式事务处理方法。
[0041]
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现所述的分布式事务处理方法。
[0042]
由上述技术方案可知,本申请提供一种分布式事务处理方法及系统。其中,该方法包括:应用目标分布式事务中的各个事务对应的直接子事务表,确定该目标分布式事务中的主事务对应的底层子事务,每个所述直接子事务表包括:事务和该事务的下一层事务之间的对应关系;对所述底层子事务执行分布式处理操作;所述分布式处理操作包括:执行当前层的事务并判断上一层事务是否为主事务;若确定所述上一层事务并非主事务,则对该上一层事务进行所述分布式处理操作;若确定所述上一层事务为主事务,则完成所述目标分布式事务的处理。,能够提高分布式事务处理的可靠性;能够隐式传递事务信息,无需业务接口改造输入和输出,做到业务无感;采用分层自治的思想,在分层嵌套的子事务的本地数据库,存储下一层所有子事务的事务信息,能够消除服务消费方冗余的引用,可以降低系统中的单点压力,同时可以及时感知主事务整个链路的执行结果;具体地,其优点如下:1.业务侵入性小。基本分布式服务的rpccontext上下文,隐式完成事务信息的传递,无需业务接口改造输入和输出,做到业务无感。2.二阶段结果快速感知。基于本地数据库,存储下一层所有子事务的事务信息,快速感知主事务整个链路的执行结果。
附图说明
[0043]
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044]
图1是本申请实施例中分布式事务处理方法的流程示意图;
[0045]
图2是本申请另一实施例中分布式事务处理方法的流程示意图;
[0046]
图3是本申请实施例中分布式事务处理方法的步骤301至步骤303的流程示意图;
[0047]
图4是本申请应用实例中分布式事务处理方法的流程示意图;
[0048]
图5是本申请实施例中分布式事务处理系统的结构示意图;
[0049]
图6为本申请实施例的电子设备的系统构成示意框图。
具体实施方式
[0050]
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0051]
为了便于理解本申请提供的技术方案,下面先对本申请技术方案的相关内容进行
说明。
[0052]
tcc(try-confirm-cancel)是业界主流的一种两阶段分布式事务模型。通过对业务逻辑的分解,tcc模型将业务逻辑分解为两个阶段,一阶段是try阶段,二阶段是confirm或cancel阶段:
[0053]
try:完成所有的业务检查,预留必须的业务资源,需要保证try完成后,confirm一定能成功。
[0054]
confirm:真正执行的业务逻辑,不做任何业务检查,只使用try阶段预留的业务资源。
[0055]
cancel:释放try阶段预留的业务资源。
[0056]
其中,一阶段try操作,通过事务发起方,显式完成整个事务链路中的调用,以及上下层事务信息的传递。
[0057]
对于二阶段confirm/cancel操作,事务发起方和参与者之间不存在显示的调用链路,上下层之前的事务信息如何传递,事务参与者之前的上下层关系如何存储。如何在业务逻辑无感的情况下,实现事务信息的传递以及上下层关系的存储。
[0058]
本申请实施例提供的分布式事务处理方法及系统,可用于解决上述两阶段分布式事务模型中,分层嵌套的子事务,上下层之间的事务信息传递和存储问题,本申请实施例提供的分布式事务处理方法及系统,通过分布式服务dubbo协议的rpccontext上下文机制,隐式传递事务信息,无需业务接口改造输入和输出,能够做到业务无感;基于分布式服务dubbo协议的filter机制,采用分层自治的思想,在分层嵌套的子事务的本地数据库,存储下一层所有子事务的事务信息,消除服务消费方冗余的引用,同时可以及时感知主事务整个链路的执行结果。
[0059]
基于此,为了降低系统中的单点存储压力,进而提高分布式事务处理的可靠性,本申请实施例提供一种分布式事务处理系统,该系统可以是一服务器或客户端设备,所述客户端设备可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(pda)、车载设备和智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表和智能手环等。
[0060]
在实际应用中,进行分布式事务处理的部分可以在如上述内容所述的服务器侧执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器。
[0061]
上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
[0062]
所述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括tcp/ip协议、udp/ip协议、http协议、https协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的rpc协议(remote procedure call protocol,远程过程调用协议)、rest协议
(representational state transfer,表述性状态转移协议)等。
[0063]
需要说明的是,本申请公开的分布式事务处理方法及系统可用于金融技术领域,也可用于除金融技术领域之外的任意领域,本申请公开的分布式事务处理方法及系统的应用领域不做限定。
[0064]
具体通过下述各个实施例进行说明。
[0065]
为了降低系统中的单点存储压力,进而提高分布式事务处理的可靠性,本实施例提供一种执行主体是分布式事务处理系统的分布式事务处理方法,该分布式事务处理系统包括但不限于服务器,如图1所示,该方法具体包含有如下内容:
[0066]
步骤101:应用目标分布式事务中的各个事务对应的直接子事务表,确定该目标分布式事务中的主事务对应的底层子事务,每个所述直接子事务表包括:事务和该事务的下一层事务之间的对应关系。
[0067]
具体地,各个事务对应的直接子事务表可以不同,同一应用的多个事务可以对应的同一直接子事务表,每个事务对应的直接子事务表可以存储在该事务对应的数据库中,每个直接子事务表中的数据可以根据实际需要进行设置;可以将事务直接调用的子事务,作为该事务对应的下一层事务,即下一层事务可以相当于直接子事务;所述底层子事务为主事务对应的叶子节点,不存在下一层事务,可以开始执行底层子事务的二阶段逻辑。主事务可以嵌套多个子事务,可以是至少一层的子事务;可以在接收到客户端发送的所述目标分布式事务对应的事务处理请求后,应用目标分布式事务中的各个事务对应的直接子事务表,确定该目标分布式事务中的主事务对应的底层子事务;若事务不存在下一层事务,则该事务和该事务的下一层事务之间的对应关系可以为空;所述目标分布式事务中的各个事务可以包含有主事务。
[0068]
步骤102:对所述底层子事务执行分布式处理操作;所述分布式处理操作包括:执行当前层的事务并判断上一层事务是否为主事务。
[0069]
具体地,可以判断当前层的事务对应的上一层事务的事务标识与主事务标识是否相同,若是,则上一层事务为主事务,否则上一层事务为主事务对应的直接子事务或间接子事务。
[0070]
步骤103:若确定所述上一层事务并非主事务,则对该上一层事务进行所述分布式处理操作。
[0071]
步骤104:若确定所述上一层事务为主事务,则完成所述目标分布式事务的处理。
[0072]
由上述描述可知,本实施例提供的分布式事务处理方法,能够提高分布式事务处理的可靠性;采用分层自治的思想,设置各个事务对应的直接子事务表,在分层嵌套的子事务的本地数据库,存储下一层所有子事务的事务信息,能够消除服务消费方冗余的引用,同时可以及时感知主事务整个链路的执行结果。
[0073]
为了进一步提高分布式事务处理的可靠性,参见图2,在本申请一个实施例中,步骤101,包括:
[0074]
步骤201:对所述主事务执行判断操作;所述判断操作包括:获取当前层的事务对应的直接子事务表;基于所述当前层的事务对应的直接子事务表和所述主事务,判断是否存在下一层事务。
[0075]
具体地,可以从当前层的事务对应的数据库中,获取当前层的事务对应的直接子
事务表;可以根据当前层的事务对应的事务标识和主事务标识查询当前层的事务对应的直接子事务表,判断该直接子事务表中是否存在所述事务标识和主事务标识对应的事务记录,若是,则若确定存在下一层事务,否则不存在。
[0076]
步骤202:若确定存在下一层事务,则对该下一层事务进行所述判断步骤。
[0077]
步骤203:若确定不存在下一层事务,则将当前层的事务作为底层子事务。
[0078]
为了实现隐式传递事务信息,避免业务接口改造输入和输出,做到业务无感,参见图3,在本申请一个实施例中,步骤201中所述的基于所述当前层的事务对应的直接子事务表和所述主事务,判断是否存在下一层事务,包括:
[0079]
步骤301:将所述当前层的事务对应的事务标识和所述主事务对应的主事务标识写入rpccontext上下文中。
[0080]
具体地,可以应用分布事务调用,将当前层的事务对应的事务标识和主事务标识写入rpccontext上下文中;在写入事务标识和主事务标识的同时,还可以将二阶段标识写入rpccontext上下文中,二阶段标识可以用以判断是否执行判断步骤,能够进一步提高分布式事务处理的可靠性;所述事务标识用于区分不同的事务,可以是一串字符串,如事务id;所述主事务标识可以是主事务的事务标识。
[0081]
步骤302:应用filter机制,从所述rpccontext上下文中获取所述事务标识和主事务标识。
[0082]
具体地,可以应用分布式服务dubbo协议的rpccontext上下文机制,隐式传递事务信息,无需业务接口改造输入和输出,能够避免对业务过程的影响,进而能够提高事务信息传递过程的安全性。在获取所述事务标识和主事务标识的同时,还可以获取二阶段标识。
[0083]
步骤303:根据所述当前层的事务对应的直接子事务表、所述事务标识和主事务标识,判断是否存在下一层事务。
[0084]
可以理解的是,若所述当前层的事务对应的直接子事务表中存在所述事务标识和主事务标识对应的事务记录,则存在下一层事务,否则不存在。
[0085]
为了在消除服务消费方冗余的引用同时,及时感知主事务整个链路的执行结果,在本申请一个实施例中,步骤102所述的执行当前层的事务之后,还包括:
[0086]
步骤401:将所述当前层的事务对应的状态标记为已成功;相对应的,步骤104包括:
[0087]
步骤402:若确定所述上一层事务为主事务,则将所述主事务的状态标记为已成功,完成所述目标分布式事务的处理。
[0088]
具体地,所述直接子事务表中还可以包含有下一层事务的状态标识,若主事务对应的各个下一层事务的状态标识为已成功,则将预设的主事务表中主事务的状态标记为已成功。
[0089]
为了解决两阶段分布式事务模型中,分层嵌套的子事务,上下层之间的事务信息传递和存储问题,本申请提供一种应用场景为tcc两阶段分布式事务模型的分布式事务处理方法的应用实例,包括:基于分布式服务调用的rpccontext上下文、filter机制以及本地数据库存储,具体描述如下:
[0090]
一阶段try,事务信息的存储:
[0091]
s11:事务的发起方和参与者,均需要设置对应的本地数据库,且本地数据库存在
两种表:主事务表和直接子事务表。
[0092]
s12:主事务表仅在事务发起方写记录,记录整个主事务的执行情况。主要包含:主事务id和主事务状态等字段。其中,主事务状态包含中间状态。
[0093]
s13:直接子事务表在事务发起方和事务参与者,均会写记录,记录当前事务的下一层事务关系数据。主要包含:主事务id、子事务id、当前事务id和子事务状态等字段。其中,主事务id在整个事务调用链路中保持不变,子事务id则随着参与者的变化而不同,当前事务id则表示子事所归属的上一层事务id,可能为主事务id也可能是上一层的子事务id。
[0094]
s14:子事务id,均通过事务管理器,在分布式服务的消费方进行生成,同时写入消费方所在的数据库进行存储。
[0095]
s15:直接子事务表,仅需要记录当前事务的直接子事务,不记录非直接子事务。
[0096]
举例来说,若主事务a,有3个子事务b、c和d。其中子事务d和主事务a属于同一个应用,子事务b调用嵌套的子事务e和f,子事务d调用嵌套的子事务g,那么,在主事务a和子事务d的数据库记录中的主事务表如表1所示,表1中create表示主事务的状态为创建状态,主事务a和子事务d的数据库记录中的直接子事务表如表2所示,即主事务a对应的直接子事务表如表2所示,子事务d对应的直接子事务表也如表2所示,子事务b和子事务c的数据库记录中的主事务表分别如表3所示,即均为空表;子事务b的数据库记录中的直接子事务表如表4所示;子事务c的数据库记录中的直接子事务表如表5所示,为空表。其中,表1至表5中的a1至g1依次表示a事务至g子事务的id,表1中的create表示主事务a状态为创建状态,表2和表4中的create表示子事务id列对应的事务的状态为创建状态。
[0097]
表1
[0098][0099]
表2
[0100][0101]
表3
[0102][0103]
表4
[0104][0105]
表5
[0106][0107]
二阶段confirm/cancel,事务信息的传递和使用:
[0108]
s21:发起方开始执行二阶段confirm。
[0109]
s22:发起方根据主事务id和当前事务id(此时等于主事务id),查询本地数据库的直接子事务表,获取当前的直接子事务列表b、c和d,子事务列表可以表示一条子事务记录。
[0110]
s23:发起方的循环处理每一笔子事务的二阶段confirm调用:通过分布事务调用,将表中每一笔子事务id、主事务id和二阶段标志,放入到rpccontext上下文中的globaltxid、localtxid和methodtype属性中。
[0111]
s24:通过服务提供侧的filter机制,获取rpccontext上下文中的主事务id、子事务id和二阶段标志,判断是否为tcc模型的二阶段调用。
[0112]
s25:二阶段标志,设置当前事务id为获取的子事务id,查询本地数据库的直接子事务表,获取当前的直接子事务列表e和f。
[0113]
s26:如果获取的子事务列表不为空,则继续设置上下文,先调用下一层的子事务;如果获取的子事务列表为空,则说明该子事务为叶子节点,开始执行子事务的二阶段逻辑。
[0114]
s27:子事务的二阶段confirm执行完成后,分布式服务调用结束,将执行结果返回给消费方——上一层子事务,上一层子事务开始执行二阶段confirm。
[0115]
s28:当所有子事务的二阶段confirm执行完成后,更新主事务的状态为已成功,整个事务执行成功。
[0116]
由上述描述可知,本应用实例提供的分布式事务处理方法,对于二阶段confirm/cancel操作,事务发起方和参与者之间不存在显示的调用链路,能够实现上下层之间的事务信息传递,事务参与者之间的上下层关系的存储,能够在业务逻辑无感的情况下,实现事务信息的传递以及上下层关系的存储。
[0117]
参见图4,在一个举例中,分布式事务处理方法包含有如下内容:
[0118]
s31:task任务锁;应用task任务锁。
[0119]
s32:调用子事务x1的confirm。
[0120]
s33:查询当前事务的子事务。
[0121]
s34:调用子事务x2的confirm。
[0122]
s35:执行子事务x2的confirm。
[0123]
s36:子事务x2的confirm返回。
[0124]
s37:执行子事务x2的状态为confirm_success;即将子事务x2的状态为标记为已成功confirm_success。
[0125]
s38:执行子事务x1的confirm。
[0126]
s39:子事务x1的confirm返回。
[0127]
s40:更新子事务x1的状态为confirm_success。
[0128]
s41:调用子事务y1接口。
[0129]
s42:查询当前子事务的下一层子事务;即查询当前层子事务的数据库,获取直接子事务列表。
[0130]
s43:执行子事务y1的confirm。
[0131]
s44:子事务y1接口返回。
[0132]
s45:更新子事务y1的状态为confirm_success。
[0133]
s46:更新主事务状态为confirm_success。
[0134]
s47:释放task任务锁,且删除task任务锁。
[0135]
从软件层面来说,为了降低系统中的单点存储压力,进而提高分布式事务处理的可靠性,本申请提供一种用于实现所述分布式事务处理方法中全部或部分内容的分布式事务处理系统的实施例,参见图5,所述分布式事务处理系统具体包含有如下内容:
[0136]
确定装置01,用于应用目标分布式事务中的各个事务对应的直接子事务表,确定该目标分布式事务中的主事务对应的底层子事务,每个所述直接子事务表包括:事务和该事务的下一层事务之间的对应关系。
[0137]
执行装置02,用于对所述底层子事务执行分布式处理操作;所述分布式处理操作包括:执行当前层的事务并判断上一层事务是否为主事务。
[0138]
处理装置03,用于若确定所述上一层事务并非主事务,则对该上一层事务进行所述分布式处理操作。
[0139]
确定主事务装置04,用于若确定所述上一层事务为主事务,则完成所述目标分布式事务的处理。
[0140]
在本申请一个实施例中,所述确定装置,包括:
[0141]
判断模块,用于对所述主事务执行判断操作;所述判断操作包括:获取当前层的事务对应的直接子事务表;基于所述当前层的事务对应的直接子事务表和所述主事务,判断是否存在下一层事务。
[0142]
下一次判断模块,用于若确定存在下一层事务,则对该下一层事务进行所述判断步骤。
[0143]
确定底层子事务模块,用于若确定不存在下一层事务,则将当前层的事务作为底层子事务。
[0144]
在本申请一个实施例中,所述判断模块,包括:
[0145]
写入单元,用于将所述当前层的事务对应的事务标识和所述主事务对应的主事务标识写入rpccontext上下文中。
[0146]
获取单元,用于应用filter机制,从所述rpccontext上下文中获取所述事务标识和主事务标识。
[0147]
事务判断单元,用于根据所述当前层的事务对应的直接子事务表、所述事务标识和主事务标识,判断是否存在下一层事务。
[0148]
在本申请一个实施例中,所述执行装置,还包括:
[0149]
标记单元,用于将所述当前层的事务对应的状态标记为已成功;相对应的,所述确定主事务装置,包括:
[0150]
确定主事务单元,用于若确定所述上一层事务为主事务,则将所述主事务的状态标记为已成功,完成所述目标分布式事务的处理。
[0151]
本说明书提供的分布式事务处理系统的实施例具体可以用于执行上述分布式事务处理方法的实施例的处理流程,其功能在此不再赘述,可以参照上述分布式事务处理方法实施例的详细描述。
[0152]
由上述描述可知,本申请提供的分布式事务处理方法及系统,能够提高分布式事务处理的可靠性;能够隐式传递事务信息,无需业务接口改造输入和输出,做到业务无感;采用分层自治的思想,在分层嵌套的子事务的本地数据库,存储下一层所有子事务的事务信息,能够消除服务消费方冗余的引用,同时可以及时感知主事务整个链路的执行结果;具体地,其优点如下:1.业务侵入性小。基本分布式服务的rpccontext上下文,隐式完成事务信息的传递,无需业务接口改造输入和输出,做到业务无感。2.二阶段结果快速感知。基于本地数据库,存储下一层所有子事务的事务信息,快速感知主事务整个链路的执行结果。
[0153]
从硬件层面来说,为了降低系统中的单点存储压力,进而提高分布式事务处理的可靠性,本申请提供一种用于实现所述分布式事务处理方法中的全部或部分内容的电子设备的实施例所述电子设备具体包含有如下内容:
[0154]
处理器(processor)、存储器(memory)、通信接口(communications interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现所述分布式事务处理系统以及用户终端等相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例用于实现所述分布式事务处理方法的实施例及用于实现所述分布式事务处理系统的实施例进行实施,其内容被合并于此,重复之处不再赘述。
[0155]
图6为本申请实施例的电子设备9600的系统构成的示意框图。如图6所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图6是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
[0156]
在本申请一个或多个实施例中,分布式事务处理功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:
[0157]
步骤101:应用目标分布式事务中的各个事务对应的直接子事务表,确定该目标分布式事务中的主事务对应的底层子事务,每个所述直接子事务表包括:事务和该事务的下一层事务之间的对应关系。
[0158]
步骤102:对所述底层子事务执行分布式处理操作;所述分布式处理操作包括:执行当前层的事务并判断上一层事务是否为主事务。
[0159]
步骤103:若确定所述上一层事务并非主事务,则对该上一层事务进行所述分布式处理操作。
[0160]
步骤104:若确定所述上一层事务为主事务,则完成所述目标分布式事务的处理。
[0161]
从上述描述可知,本申请的实施例提供的电子设备,能够降低系统中的单点压力,进而提高分布式事务处理的可靠性。
[0162]
在另一个实施方式中,分布式事务处理系统可以与中央处理器9100分开配置,例如可以将分布式事务处理系统配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现分布式事务处理功能。
[0163]
如图6所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图6中所示的所有部件;此外,电子设备9600还可以包括图6中没有示出的部件,可以参考现有技术。
[0164]
如图6所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
[0165]
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
[0166]
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。
[0167]
该存储器9140可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
[0168]
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
[0169]
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
[0170]
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
[0171]
上述描述可知,本申请的实施例提供的电子设备,能够降低系统中的单点压力,进而提高分布式事务处理的可靠性。
[0172]
本申请的实施例还提供能够实现上述实施例中的分布式事务处理方法中全部步
骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的分布式事务处理方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
[0173]
步骤101:应用目标分布式事务中的各个事务对应的直接子事务表,确定该目标分布式事务中的主事务对应的底层子事务,每个所述直接子事务表包括:事务和该事务的下一层事务之间的对应关系。
[0174]
步骤102:对所述底层子事务执行分布式处理操作;所述分布式处理操作包括:执行当前层的事务并判断上一层事务是否为主事务。
[0175]
步骤103:若确定所述上一层事务并非主事务,则对该上一层事务进行所述分布式处理操作。
[0176]
步骤104:若确定所述上一层事务为主事务,则完成所述目标分布式事务的处理。
[0177]
从上述描述可知,本申请实施例提供的计算机可读存储介质,能够降低系统中的单点压力,进而提高分布式事务处理的可靠性。
[0178]
本申请中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。
[0179]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0180]
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0181]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0182]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0183]
本申请中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1