发明内容
有鉴于此,本说明书提供一种分布式事务的实现方法,应用于分支事务服务提供方,所述分支事务服务提供方提供用来访问至少两个参与者的通用接口,每个参与者具有各自的标识,所述方法包括:
基于通用接口和参与者各自的标识为每个参与者发布分支事务服务;
在收到发起者采用某个参与者标识对通用接口的一阶段调用指令后,由具有所述标识的参与者根据一阶段调用指令执行一阶段服务,向所述发起者返回携带有所述参与者标识的一阶段执行结果;
在收到事务管理者采用某个参与者标识对通用接口的二阶段调用指令后,由具有所述标识的参与者根据二阶段调用指令执行二阶段服务,向所述事务管理者返回携带有所述参与者标识的二阶段执行结果。
本说明书提供的一种分布式事务的实现方法,应用于发起者,所述方法包括:
确定执行某个分布式事务的若干个参与者的标识和所属的通用接口;所述通用接口用来访问至少两个参与者;
采用所属的通用接口和参与者标识,向事务管理者注册所述分布式事务的所述参与者;
采用参与者标识对所属的通用接口发出对每个所述参与者的一阶段调用指令,接收参与者返回的带有参与者标识的一阶段执行结果;
根据所有参与者的一阶段执行结果向事务管理者发送所述分布式事务的二阶段处理指令。
本说明书提供的一种分布式事务的实现方法,应用于事务管理者,所述方法包括:
根据某个分布式事务发起者的注册请求,采用所述分布式事务的参与者的标识和所属的通用接口注册所述参与者;所述通用接口用来访问至少两个参与者;
在收到所述分布式事务的二阶段处理指令后,按照二阶段处理指令采用参与者标识对所属的通用接口发出对每个所述参与者的二阶段调用指令,接收参与者返回的带有参与者标识的二阶段执行结果。
本说明书还提供了一种分布式事务的实现装置,应用于分支事务服务提供方,所述分支事务服务提供方提供用来访问至少两个参与者的通用接口,每个参与者具有各自的标识,所述装置包括:
分支事务服务发布单元,用于基于通用接口和参与者各自的标识为每个参与者发布分支事务服务;
一阶段服务单元,用于在收到发起者采用某个参与者标识对通用接口的一阶段调用指令后,由具有所述标识的参与者根据一阶段调用指令执行一阶段服务,向所述发起者返回携带有所述参与者标识的一阶段执行结果;
二阶段服务单元,用于在收到事务管理者采用某个参与者标识对通用接口的二阶段调用指令后,由具有所述标识的参与者根据二阶段调用指令执行二阶段服务,向所述事务管理者返回携带有所述参与者标识的二阶段执行结果。
本说明书提供的一种分布式事务的实现装置,应用于发起者,所述装置包括:
参与者确定单元,用于确定执行某个分布式事务的若干个参与者的标识和所属的通用接口;所述通用接口用来访问至少两个参与者;
参与者注册请求单元,用于采用所属的通用接口和参与者标识,向事务管理者注册所述分布式事务的所述参与者;
一阶段调用单元,用于采用参与者标识对所属的通用接口发出对每个所述参与者的一阶段调用指令,接收参与者返回的带有参与者标识的一阶段执行结果;
二阶段处理单元,用于根据所有参与者的一阶段执行结果向事务管理者发送所述分布式事务的二阶段处理指令。
本说明书提供的一种分布式事务的实现装置,应用于事务管理者,所述装置包括:
参与者注册单元,用于根据某个分布式事务发起者的注册请求,采用所述分布式事务的参与者的标识和所属的通用接口注册所述参与者;所述通用接口用来访问至少两个参与者;
二阶段调用单元,用于在收到所述分布式事务的二阶段处理指令后,按照二阶段处理指令采用参与者标识对所属的通用接口发出对每个所述参与者的二阶段调用指令,接收参与者返回的带有参与者标识的二阶段执行结果。
本说明书提供的一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述应用于分支事务服务提供方的分布式事务的实现方法所述的步骤。
本说明书提供的一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述应用于发起者的分布式事务的实现方法所述的步骤。
本说明书提供的一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述应用于事务管理者的分布式事务的实现方法所述的步骤。
本说明书提供的一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述应用于分支事务服务提供方的分布式事务的实现方法所述的步骤。
本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述应用于发起者的分布式事务的实现方法所述的步骤。
本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述应用于事务管理者的分布式事务的实现方法所述的步骤。
由以上技术方案可见,本说明书的实施例中,由分支事务服务提供方提供用来访问至少两个参与者的通用接口,以参与者标识和通用接口来发布分支事务服务,发起者和事务管理者通过以参与者标识调用通用接口,来进行具有该标识的参与者对应的分支事务操作,当业务所需的分支事务的操作发生变化时,通过配置参数修改调用通用接口的参与者标识即可满足业务要求,而无需修改代码,极大的加快了对业务变化的适应速度,减少了业务需求变化时开发人员的工作。
具体实施方式
本说明书的实施例提出一种新的分布式事务的实现方法,由若干个实现分支事务具体操作的参与者采用通用接口来提供服务,以参与者标识来区分属于同一个通用接口的参与者,发起者和事务管理者采用参与者标识调用通用接口,来使具有该标识的参与者执行分支事务的一阶段操作和二阶段操作,从而能够基于配置参数改变分布式事务中分支事务的具体操作,而无需编写代码和上线新的模块,能够以更快的速度匹配业务需求的变化,并减少了开发人员的工作量。
本说明书的实施例中,一个通用接口用来访问至少两个参与者,即一个通用接口是至少两个参与者的调用接口;以下将只能调用一个参与者的接口称为非通用接口。通过同一个通用接口调用的各个参与者(以下称为属于该通用接口的参与者)具有各自的参与者标识,参与者标识能够在所属通用接口的范围内唯一的代表一个参与者;换言之,通用接口和参与者标识的组合唯一的对应于一个参与者。
每个参与者用来实现分布式事务中一项分支事务的一种具体操作。属于同一个通用接口的两个以上的参与者通常用来实现同一项分支事务的不同具体操作,这些具体操作之间具有一些共同点,例如共同的业务处理参数、共同的处理对象(即被处理的数据相同)等,这些共同点使得不同的参与者适于共享同一个通用接口。
可以将应用场景中一项分支事务可能进行的每种具体操作分别由一个参与者来实现,这些参与者共享一个通用接口,这样该分支事务可以通过调用相同的通用接口来进行,指定该通用接口下的不同参与者即可执行不同的具体操作。这些参与者进行具体操作所需的参数可以通过通用接口传递,也可以通过读取配置文件、动态加载配置等方式获得,不做限定。
另外,一个通用接口的所属参与者可以直接基于该通用接口传递的参数、配置文件等来实现该分支事务的该具体操作;也可以提供不同于通用接口的其他调用接口,由分支事务服务提供方将通用接口传递的参数、配置文件等转换与为该参与者的调用接口匹配的形式,不做限定。参与者执行分支事务具体操作的一阶段Try(尝试)方法、二阶段Confirm(确认)方法和二阶段Cancel(取消)方法的方式可参照现有技术实现。
本说明书的实施例中,通用接口由分支事务服务提供方提供。分支事务服务提供方负责发布其提供的每个通用接口下的所有参与者的分支事务服务,将对每个通用接口的调用由指定的参与者执行,并回复对通用接口的调用结果。分支事务服务提供方可以和其提供通用接口下的所有参与者、或部分参与者运行在同一个物理设备或逻辑节点上,也可以独立运行在一个物理设备或逻辑节点上,不做限定。
本说明书实施例中的发起者、事务管理者、或分支事务服务提供方可以运行在任何具有计算和存储能力的设备上,如手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本、服务器等设备;还可以由运行在两个或两个以上设备的逻辑节点来实现本说明书实施例中的各项功能。上述三方可以分别运行在不同的物理设备或逻辑节点上,也可以以任意的组合运行在一个物理设备或逻辑节点上,不做限定。
本说明书的实施例中,分布式事务的实现方法应用于分支事务服务提供方的流程如图1所示,应用于发起者的流程如图2所示,应用于事务管理者的流程如图3所示。
在分支事务服务提供方,步骤110,基于通用接口和参与者各自的标识为每个参与者发布分支事务服务。
本说明书的实施例中,分布式事务采用TCC(Try/Confirm/Cancel,尝试/确认/取消)模式。每个参与者实现自己的一阶段Try方法、二阶段Confirm和二阶段Cancel方法,由分支事务服务提供方发布为服务,供发起者和事务管理者调用。
对每个通用接口下的参与者,分支事务服务提供方以该通用接口和该参与者的标识来进行该参与者的分支事务服务发布。其中,参与者标识可以作为通用接口传递的参数,也可以作为所发布服务的参数,不做限定。具体的服务发布方式参照现有技术实现,不再赘述。
在发起者,步骤210,确定执行某个分布式事务的若干个参与者的标识和所属的通用接口。
发起者可以从保存在预定位置的配置文件中读取执行某个分布式事务的参与者标识和通用接口,也可以基于动态配置系统,如DRM(Distributed Resource Manager,分布式资源管理器)等来获取参与者标识和通用接口,还可以采用其他形式,不做限定。
在发起者,步骤220,采用所属的通用接口和参与者标识,向事务管理者注册分布式事务的参与者。
在事务管理者,步骤310,根据某个分布式事务发起者的注册请求,采用分布式事务的参与者的标识和所属的通用接口注册该参与者。
在TCC模式下,当发起者确定执行一项分布式事务的各个参与者后,向事务管理者发送该项分布式事务的注册请求,注册该项分布式事务和执行该分布式事务的每个参与者。这样,当二阶段提交或取消该项分布式事务时,事务管理者能够指令所有该项分布式事务的参与者提交或取消其负责的分支事务,以满足分布式事物执行的原子性。
对属于某个通用接口的参与者,发起者采用该参与者所属的通用接口和该参与者的标识,来向事务管理者发起参与者注册请求,进行该参与者的注册。事务管理者接收某个分布式事务的发起者的注册请求,以注册请求中携带的某个参与者所属的通用接口和参与者标识来进行该参与者的注册。
对一项分布式事务,在调用通用接口执行某些分支事务的同时,发起者可以调用提供非通用接口的参与者来执行其他的分支事务。由于提供非通用接口的参与者可以由非通用接口本身来与其他的参与者区分开来,在这样的应用场景中,可以采用通用接口标签来识别通用接口所属的参与者和提供非通用接口的参与者。
具体而言,在注册通用接口所属的参与者时,发起者可以采用通用接口标签、通用接口和参与者标识,向事务管理者注册该参与者;在注册提供非通用接口的参与者时,发起者可以采用非通用接口来向事务管理者进行注册。对事务管理者,当注册请求中某个参与者带有通用接口标签时,采用参与者标识和所属通用接口来注册该参与者;当注册请求中某个参与者不带有通用接口标签时,采用注册请求中的非通用接口来注册该参与者。其中,通用接口标签可以是任何能够区分通用接口与非通用接口的形式,例如可以是注册请求中某个标志字段(以一个值表明带有通用接口标签,以另一个值表明不带有通用接口标签),也可以是通用接口区别于非通用接口的命名规则(从接口名称即可得知是否带有通用接口标签)等等。
发起者上进行分布式事务的具体过程和方式,可以根据实际应用场景的需要、发起者的具体实现等因素来确定,本说明书的实施例不做限定。在一种实现方式中,发起者在确定执行一项分布式事务的各个参与者后,为该项分布式事务的每个参与者在本地创建对应的代理。其中,为属于通用接口的参与者所创建的代理对应于所属的通用接口和参与者标识,为提供非通用接口的参与者所创建的代理对应于该非通用接口。在发起者进行参与者注册时,属于通用接口的参与者的代理采用各自对应的通用接口和参与者标识,向事务管理者进行参与者注册(在发起者可能同时使用属于通用接口的参与者和提供非通用接口的参与者来进行分布式事务的场景中,属于通用接口的参与者的代理采用通用接口标签、各自对应的通用接口和参与者标识进行参与者注册);提供非通用接口的参与者的代理采用各自对应的非通用接口,向事务管理者进行参与者注册。
在发起者,步骤230,采用参与者标识对所属的通用接口发出对每个所述参与者的一阶段调用指令,接收参与者返回的带有参与者标识的一阶段执行结果。
在分支事务服务提供方,步骤120,在收到发起者采用某个参与者标识对通用接口的一阶段调用指令后,由具有该标识的参与者根据一阶段调用指令执行一阶段服务,向该发起者返回携带有该参与者标识的一阶段执行结果。
在调用属于通用接口的参与者执行某项分布式事务的一阶段方法时,发起者采用该参与者的标识调用其所属的通用接口,向该通用接口发出一阶段调用指令,由通用接口和参与者标识指定执行一阶段方法的具体参与者,通过一阶段调用指令把执行该一阶段方法所需的各种配置信息和参数值传递给该参与者。
本说明书实施例对采用参与者标识调用通用接口的形式(包括发起者的一阶段调用指令和后续事务管理器的二阶段调用)不做限定,例如参与者标识可以是通用接口的参数,也可以通过由通用接口传递的配置文件中的内容。
分支事务服务提供方在收到某个发起者采用某个参与者标识对通用接口的一阶段调用指令后,按照参与者标识确定执行一阶段方法的参与者,将一阶段调用指令传递的各种配置信息和参数值通知该参与者,由该参与者根据这些配置信息和参数值执行一阶段服务的具体操作,并将操作结果通知分支事务服务提供方。分支事务服务提供方向该发起者返回一阶段执行结果,即该参与者的一阶段服务的操作结果,并且在返回一阶段执行结果时携带该参与者的标识,使得发起者可以根据该参与者标识和该返回结果是调用哪个通用接口的响应,来确定该返回结果来自哪个参与者。
要通过一阶段调用指令传递给参与者的各种配置信息和参数根据实际应用场景的业务需求来确定,本说明书的实施例同样不做限定,在一些应用场景中,可以通过通用接口传递数据寻址参数和业务处理参数,参与者在执行一阶段服务时,按照数据寻址参数确定一阶段服务所使用的数据的存储位置,按照业务处理参数对该存储位置的数据进行业务操作。其中,数据寻址参数包括能够在该应用场景中确定被操作数据的各种参数,例如,在数据采用分片存储的场景中,数据寻址参数可以包括分片参数,用于确定一阶段服务所使用的数据所在的数据分片;在数据所在的数据库采用弹性存储技术时,可以通过弹性参数来确定所使用数据的存储位置。
在发起者为分布式事务的每个参与者创建代理的实现方式中,可以为每个代理添加一阶段活动拦截器,由每个属于通用接口的参与者的代理(即对应于该参与者标识和所属通用接口的代理)的一阶段活动拦截器接收在调用通用接口后返回的带有各自参与者标识的一阶段执行结果。
在发起者,步骤240,根据所有参与者的一阶段执行结果向事务管理者发送该分布式事务的二阶段处理指令。
在发起者收到一项分布式事务的所有参与者返回的一阶段执行结果后,如果所有参与者的一阶段执行结果为成功,则向事务管理者发送提交该分布式事务的二阶段处理指令;如果有参与者的一阶段执行结果是失败,则向事务管理者发送取消该分布式事务的二阶段处理指令。
在事务管理者,步骤320,在收到该分布式事务的二阶段处理指令后,按照二阶段处理指令采用参与者标识对所属的通用接口发出对参与者的二阶段调用指令,接收参与者返回的带有参与者标识的二阶段执行结果。
在分支事务服务提供方,步骤130,在收到事务管理者采用某个参与者标识对通用接口的二阶段调用指令后,由具有该标识的参与者根据二阶段调用指令执行二阶段服务,向事务管理者返回携带有该参与者标识的二阶段执行结果。
事务管理者接收某个分布式事务的二阶段处理指令,查询该分布式事务注册的所有参与者,对以所属通用接口和参与者标识注册的参与者,采用该参与者标识调用该所属通用接口,向该通用接口发出二阶段调用指令,由通用接口和参与者标识指定执行二阶段方法的具体参与者。如果二阶段处理指令为提交事务,二阶段调用指令为提交分支事务;如果二阶段处理指令为取消事务,则二阶段调用指令为取消分支事务。
分支事务服务提供方在收到事务管理者采用某个参与者标识对通用接口的二阶段调用指令后,按照参与者标识确定执行二阶段方法的参与者,由该参与者根据二阶段调用指令执行二阶段服务。如果二阶段调用指令为提交分支事务,该参与者提交分支事务;如果二阶段调用指令为取消分支事务,则该参与者回滚分支事务。该参与者将二阶段提交或回滚分支事务是否成功的结果通知分支事务服务提供方,分支事务服务提供方向事务管理者返回二阶段执行结果,即该参与者执行提交或回滚的二阶段服务是否成功的操作结果,并且在返回二阶段执行结果时携带该参与者的标识,这样事务管理者可以根据该参与者标识和该返回结果是调用哪个通用接口的响应,来确定该二阶段结果是来自于哪个参与者。
如果事务管理者在调用某个通用接口后,收到的响应为带有参与者标识、结果为失败的二阶段执行结果,则事务管理者采用该参与者标识,对该通用接口重新发出二阶段调用指令,从而确保分布式事务的原子性。
可见,本说明书的实施例中,若干个实现分支事务具体操作的参与者采用分支事务服务提供方的通用接口来提供服务,分支事务服务提供方以参与者标识和通用接口来发布分支事务服务,发起者和事务管理者采用参与者标识调用通用接口,来进行具有该标识的参与者对应的分支事务操作,从而能够在业务所需的分支事务的操作发生变化时,通过配置参数修改调用通用接口的参与者标识来匹配业务的变化,加快了对业务变化的适应速度,减少了业务需求变化时开发人员的工作量。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书的一个应用示例中,一项分布式事务的某个分支事务可能采用3种具体操作来进行,为这3种具体操作定义一个通用接口,分别由3个参与者来基于通用接口分别实现这3种具体操作的一阶段Try方法、二阶段Confirm方法和二阶段Cancel方法。设该通用接口的接口名称为Std-Int,属于该通用接口的3个参与者的标识分别为UniqueID01、UniqueID02和UniqueID03。
分支事务服务提供方采用3个参与者的标识和通用接口名称发布3个参与者的分支事务服务,即分别以Std-Int接口和UniqueID01、Std-Int接口和UniqueID02、Std-Int接口和UniqueID03发布分支事务服务UniqueID01、UniqueID02和UniqueID03供调用。
发起者启动一项分布式事务,假设该分布式事务中要进行两次上述分支事务。发起者从预定存储位置读取该项分布式事务的配置文件,从配置文件中获知,要进行的两次上述分支事务中,一次进行参与者UniqueID01的具体操作,另一次进行参与者UniqueID02的具体操作。发起者还从配置文件中获知调用参与者UniqueID01和UniqueID02时要使用的参数值。
本应用示例中,分支事务服务提供方、发起者与事务管理者之间的交互如图4所示。
发起者开启该分布式事务的本地事务,在本地缓存中为执行该分布式事务的每个参与者创建代理类(一种代理),为参与者UniqueID01创建的代理类对应于Std-Int接口和UniqueID01,为参与者UniqueID02创建的代理类对应于Std-Int接口和UniqueID02。在代理类创建成功后,为每个代理类添加一阶段活动拦截器。代理类的一级段活动拦截器在缓存中运行。
每个代理类分别向事务管理器为各自代理的参与者进行参与者注册(或称为二阶段方法注册)。对应于Std-Int接口和UniqueID01的代理类在注册请求中携带useUnique=true的注解标识(一种通用接口标签),采用Std-Int接口和UniqueID01向事务管理者注册参与者UniqueID01;对应于Std-Int接口和UniqueID02的代理类在注册请求中携带useUnique=true的注解标识,采用Std-Int接口和UniqueID02向事务管理者注册参与者UniqueID02。
事务管理者在注册请求中识别出useUnique=true的注解标识后,以Std-Int接口和UniqueID01来记录该项分布式事务的一个参与者,以Std-Int接口和UniqueID02来记录另一个参与者。
发起者以UniqueID01来调用通用接口Std-Int的一阶段Try方法(一种一阶段调用指令),来使用参与者UniqueID01提供的一阶段服务;以UniqueID02来调用通用接口Std-Int的一阶段Try方法,来使用参与者UniqueID02提供的一阶段服务。参与者UniqueID01和UniqueID02要处理的数据是分片存储在使用弹性存储技术的数据库中的数据,通用接口Std-Int传递的参数包括分片参数和弹性参数,参与者UniqueID01和UniqueID02采用分片参数和弹性参数来确定要处理的数据所在的分片以及分片在数据库中的存储位置。
参与者UniqueID01和UniqueID02分别执行发起者指定的一阶段服务,一阶段执行结果由分支事务服务提供方返回给发起者,返回参与者UniqueID01的一阶段执行结果时携带UniqueID01,返回参与者UniqueID02的一阶段执行结果时携带UniqueID02。
假设发起者收到该项分布式事务的每个参与者返回的一阶段执行结果都是成功,发起者提交本地事务,并向事务管理者进行发出提交该项分布式事务的二阶段处理指令。
事务管理者查找该项分布式事务的注册参与者,对以Std-Int接口和UniqueID01注册的参与者UniqueID01,事务管理者以UniqueID01调用Std-Int接口的二阶段Confirm方法(一种二阶段调用指令),指令参与者UniqueID01提交该项分布式事务的分支事务。对以Std-Int接口和UniqueID02注册的参与者UniqueID02,事务管理者以UniqueID02调用Std-Int接口的二阶段Confirm方法,指令参与者UniqueID02提交该项分布式事务的分支事务。
参与者UniqueID01和参与者UniqueID02分别提交各自的分支事务,通过分支事务服务提供方向事务管理者返回提交成功的二阶段执行结果。在事务管理者收到该项分布式事务的所有注册的参与者提交成功的二阶段执行结果后,该项分布式事务结束。
与上述流程实现对应,本说明书的实施例还提供了一种应用于分支事务服务提供方的分布式事务的实现装置、一种应用于发起者的分布式事务的实现装置,和一种应用于事务管理者的分布式事务的实现装置。上述装置均可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图5所示的CPU、内存以及存储器之外,分布式事务的实现装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
图6所示为本说明书实施例提供的一种分布式事务的实现装置,应用于分支事务服务提供方,所述分支事务服务提供方提供用来访问至少两个参与者的通用接口,每个参与者具有各自的标识,所述装置包括分支事务服务发布单元、一阶段服务单元和二阶段服务单元,其中:分支事务服务发布单元用于基于通用接口和参与者各自的标识为每个参与者发布分支事务服务;一阶段服务单元用于在收到发起者采用某个参与者标识对通用接口的一阶段调用指令后,由具有所述标识的参与者根据一阶段调用指令执行一阶段服务,向所述发起者返回携带有所述参与者标识的一阶段执行结果;二阶段服务单元用于在收到事务管理者采用某个参与者标识对通用接口的二阶段调用指令后,由具有所述标识的参与者根据二阶段调用指令执行二阶段服务,向所述事务管理者返回携带有所述参与者标识的二阶段执行结果。
一个例子中,所述通用接口传递的参数包括:数据寻址参数和业务处理参数;所述一阶段服务包括:按照数据寻址参数确定一阶段服务所使用的数据的存储位置,按照业务处理参数对所述存储位置的数据进行业务操作。
上述例子中,所述数据寻址参数包括以下至少一项:分片参数、弹性参数;所述分片参数用于确定一阶段服务所使用的数据所在的数据分片;所述弹性参数用于当一阶段服务所使用的数据所在的数据库采用弹性存储时,确定所使用数据的存储位置。
图7所示为本说明书实施例提供的分布式事务的实现装置,应用于发起者,所述装置包括参与者确定单元、参与者注册请求单元、一阶段调用单元和二阶段处理单元,其中:参与者确定单元用于确定执行某个分布式事务的若干个参与者的标识和所属的通用接口;所述通用接口用来访问至少两个参与者;参与者注册请求单元用于采用所属的通用接口和参与者标识,向事务管理者注册所述分布式事务的所述参与者;一阶段调用单元用于采用参与者标识对所属的通用接口发出对每个所述参与者的一阶段调用指令,接收参与者返回的带有参与者标识的一阶段执行结果;二阶段处理单元用于根据所有参与者的一阶段执行结果向事务管理者发送所述分布式事务的二阶段处理指令。
可选的,所述装置还包括参与者代理创建单元,为所述分布式事务的每个所述参与者创建对应于通用接口和参与者标识的代理,为每个代理添加一阶段活动拦截器;所述参与者请求注册单元具体用于:由每个所述参与者的代理采用各自对应的通用接口和参与者标识,向事务管理者进行参与者注册;
所述一阶段调用单元接收参与者返回的带有参与者标识的一阶段执行结果,包括:由每个所述参与者的代理的一阶段活动拦截器接收在调用通用接口后返回的带有各自参与者标识的一阶段执行结果。
一个例子中,所述通用接口传递的参数包括:数据寻址参数和业务处理参数;所述一阶段服务包括:按照数据寻址参数确定一阶段服务所使用的数据的存储位置,按照业务处理参数对所述存储位置的数据进行业务操作。
上述例子中,所述数据寻址参数包括以下至少一项:分片参数、弹性参数;所述分片参数用于确定一阶段服务所使用的数据所在的数据分片;所述弹性参数用于当一阶段服务所使用的数据所在的数据库采用弹性存储时,确定所使用数据的存储位置。
可选的,所述参与者注册请求单元具体用于:采用通用接口标签、通用接口和参与者标识,向事务管理者注册所述分布式事务的所述参与者;所述通用接口标签用来表示所注册的参与者与其他参与者共用一个通用接口。
图8所示为本说明书实施例提供的一种分布式事务的实现装置,应用于事务管理者,所述装置包括参与者注册单元和二阶段调用单元,其中:参与者注册单元用于根据某个分布式事务发起者的注册请求,采用所述分布式事务的参与者的标识和所属的通用接口注册所述参与者;所述通用接口用来访问至少两个参与者;二阶段调用单元用于在收到所述分布式事务的二阶段处理指令后,按照二阶段处理指令采用参与者标识对所属的通用接口发出对每个所述参与者的二阶段调用指令,接收参与者返回的带有参与者标识的二阶段执行结果。
可选的,所述参与者注册单元具体用于:当注册请求中某个参与者带有通用接口标签时,采用参与者标识和所属通用接口注册所述参与者;否则采用注册请求中的非通用接口来注册所述参与者。
可选的,所述装置还包括:二阶段重试单元,用于在收到调用某个通用接口后返回的带有参与者标识、结果为失败的二阶段执行结果后,采用所述参与者标识对所述通用接口重新发出二阶段调用指令。
本说明书的实施例提供了一种计算机设备,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中应用于分支事务服务提供方的分布式事务的实现方法的各个步骤。对应用于分支事务服务提供方的分布式事务的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机设备,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中应用于发起者的分布式事务的实现方法的各个步骤。对应用于发起者的分布式事务的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机设备,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中应用于事务管理者的分布式事务的实现方法的各个步骤。对应用于事务管理者的分布式事务的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中应用于分支事务服务提供方的分布式事务的实现方法的各个步骤。对应用于分支事务服务提供方的分布式事务的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中应用于发起者的分布式事务的实现方法的各个步骤。对应用于发起者的分布式事务的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中应用于事务管理者的分布式事务的实现方法的各个步骤。对应用于事务管理者的分布式事务的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。