事务消息处理方法、装置、设备及系统与流程

文档序号:13861474阅读:126来源:国知局

本申请涉及互联网技术,尤其涉及一种事务消息处理方法、装置、设备及系统。



背景技术:

随着网络技术的发展,网络中业务系统间的数据操作越来越频繁,处于业务系统间的不同数据库中数据的一致性。不同数据库中数据的一致性则需使得对不同数据库的数据操作具有原子性、一致性、隔离性以及持久性(atomicityconsistencyisolationdurability,简称acid),即要求进行分布式事务处理,且,事务处理需在多个事务资源间实现。事务作为数据库的最小操作单元,所有的操作要么都成功,要么都失败。

在分布式事务系统中,为解决不同事务并发处理同一数据而发生冲突的问题,可在针对一个事务对数据进行处理的过程中,对该数据进行锁定,以不允许其他事务对该数据进行处理,而在该一个事务处理完成后对该一个数据放锁,继而针对另一事务对该数据进行处理。

然而,锁定数据进行事务处理,可使得分布式事务系统的吞吐量受到限制,从而使得事务处理效率受到限制。



技术实现要素:

本申请提供一种事务消息处理方法、装置、设备及系统,以提高事务处理效率。

第一方面,本申请提供一种事务消息处理系统,包括:客户端设备和事务协调器所在节点设备;客户端设备与事务协调器所在节点设备连接;

客户端设备,用于确定业务消息对应的事务消息;判断事务消息否包括回滚指示信息;若事务消息包括回滚指示信息,记录回滚指示信息;回滚指示信息用以对事务消息对应的事务进行回滚;

事务协调器所在节点设备,用于接收客户端设备发送的事务消息对应的事务的处理结果;根据处理结果确定事务消息对应的事务是否处理成功;若事务消息对应的事务存在未处理成功的事务,则向客户端设备发送事务回滚请求消息;

客户端设备,还用于根据记录的回滚指示信息对事务消息对应的事务进行回滚。

该事务消息处理系统中客户端设备在接收到事务协调器所在节点设备发送的事务回滚请求消息后,可根据记录的回滚指示信息进行回滚,无需等待其他事务消息处理完成,也无需进行数据锁定,可使得针对同一数据的事务处理可并行进行,提高分布式事务系统的吞吐量,提高事务处理效率。

第二方面,本申请提供一种事务消息处理方法,包括:

确定业务消息对应的事务消息;

判断事务消息否包括回滚指示信息;

若事务消息包括回滚指示信息,记录回滚指示信息;回滚指示信息用以对事务消息对应的事务进行回滚。

该方法中,可记录事务消息包括的用以进行回滚的回滚指示信息,因而对事务消息对应的事务进行处理时,无需等待其他事务消息处理完成,也无需进行数据锁定,可使得针对同一数据的事务处理可并行进行,提高分布式事务系统的吞吐量,提高事务处理效率。

同时,该方法可针对同一数据的事务处理并行进行,突破针对热点数据的事务处理的性能瓶颈,提高针对热点数据的处理效率。并且,该方法无需记录事务处理前的数据以及处理后的数据,仅需记录该回滚指示信息便可,因而,还可节省记录数据的开销。

在一种可实现方式中,记录回滚指示信息之后,所述方法还包括:

对事务消息对应的事务进行处理;

将事务消息对应的事务的处理结果发送至事务协调器所在节点设备。

在另一种可实现方式中,接收事务协调器所在节点设备发送的事务提交请求消息;事务提交请求消息为事务协调器所在节点设备在确定事务消息对应的事务处理成功后发送的;

对事务消息对应的事务进行提交。

在又一种可实现的方式中,该方法还包括:

删除记录的回滚指示信息。

在再一种可实现方式中,该方法还包括:

接收事务协调器所在节点设备发送的事务回滚请求消息;事务回滚请求消息为事务协调器所在节点设备在确定事务消息对应的事务存在未处理成功的事务后发送的;

根据回滚指示信息对事务消息对应的事务进行回滚。

该方法还可通过事务提交情况下的方法及事务回滚提交情况下的方法,使得事务消息处理方法更好地保证事务的acid特性,保证事务处理的正常进行,提高事务处理效率。

在再一种可实现方式中,该方法还包括:

删除记录的回滚指示信息。

该方法中还无论是事务提交还是回滚后,删除记录的该回滚指示信息,可避免已记录的回滚指示信息对后续事务消息的事务处理造成干扰,保证事务处理效率,提高用户体验。

在再一种可实现方式中,判断事务消息是否包括回滚指示信息之前,该方法还包括:

将事务消息发送至事务协调器所在节点设备;

接收事务协调器所在节点设备发送的事务消息对应的事务标识;

记录事务消息对应的事务标识。

在再一种可实现方式中,记录回滚指示信息,包括:

记录回滚指示信息,和,回滚指示信息与事务消息对应的事务标识之间的对应关系。

在再一种可实现方式中,该方法还包括:

若事务消息不包括回滚规则指示信息,生成事务消息对应事务的回滚数据;

对事务消息对应的事务进行处理;

生成事务消息对应事务的重做数据;

记录回滚数据和重做数据。

在再一种可实现方式中,事务消息对应的事务包括如下任一:

数据插入、数据更新及数据删除。

第三方面,本申请还提供一种事务消息处理装置,包括:

确定模块,用于确定业务消息对应的事务消息;

判断模块,用于判断事务消息否包括回滚指示信息;

记录模块,用于若事务消息包括回滚指示信息,记录回滚指示信息;回滚指示信息用以对事务消息对应的事务进行回滚。

在一种可实现方式中,该装置还包括:

第一处理模块,用于对事务消息对应的事务进行处理;

第一发送模块,用于将事务消息对应的事务的处理结果发送至事务协调器所在节点设备。

在另一种可实现方式中,该装置还包括:

第一接收模块,用于接收事务协调器所在节点设备发送的事务提交请求消息;事务提交请求消息为事务协调器所在节点设备在确定事务消息对应的事务处理成功后发送的;

提交模块,用于对事务消息对应的事务进行提交。

在又一种可实现方式中,该装置还包括:

第一删除模块,用于删除记录的回滚指示信息。

在再一种可实现方式中,该装置还包括:

第二接收模块,用于接收事务协调器所在节点设备发送的事务回滚请求消息;事务回滚请求消息为事务协调器所在节点设备在确定事务消息对应的事务存在未处理成功的事务后发送的;

回滚模块,用于根据回滚指示信息对事务消息对应的事务进行回滚。

在再一种可实现方式中,该装置还包括:

第二删除模块,用于删除记录的回滚指示信息。

在再一种可实现方式中,该装置还包括:

第二发送模块,用于将事务消息发送至事务协调器所在节点设备;

第三接收模块,用于接收事务协调器所在节点设备发送的事务消息对应的事务标识;

记录模块,用于记录事务消息对应的事务标识。

在再一种可实现方式中,记录模块,具体用于记录回滚指示信息,和,回滚指示信息与事务消息对应的事务标识之间的对应关系。

在再一种可实现方式中,该装置还包括:

生成模块,用于若事务消息不包括该回滚规则指示信息,生成该事务消息对应事务的回滚数据;

第二处理模块,用于对该事务消息对应的事务进行处理;

该生成模块,还用于生成该事务消息对应事务的重做数据;

该记录模块,还用于记录该回滚数据和该重做数据。

第四方面,本申请还提供一种客户端设备,包括:处理器和存储器;

处理器,与存储器耦合,用于确定业务消息对应的事务消息;判断事务消息否包括回滚指示信息;若事务消息包括所述回滚指示信息,控制存储器记录回滚指示信息;回滚指示信息用以对事务消息对应的事务进行回滚。

第五方面,本申请还提供一种事务消息处理方法,包括:

接收客户端设备发送的事务消息对应的事务的处理结果;事务消息对应的事务的处理结果为客户端设备对事务消息对应的事务进行处理的结果;

根据处理结果确定事务消息对应的事务是否处理成功;

若事务消息对应的事务存在未处理成功的事务,则向客户端设备发送事务回滚请求消息;事务回滚请求消息用于使得客户端设备根据记录的回滚指示信息对事务消息对应的事务进行回滚。

在一种可实现方式中,方法还包括:

若事务消息对应的事务处理成功,则向客户端设备事务提交请求消息;事务提交请求消息用于使得客户端设备对事务消息对应的事务进行提交。

在另一种可实现方式中,方法还包括:

接收客户端设备发送的事务消息;

根据事务消息确定事务消息对应的事务标识。

在又一种可实现方式中,方法还包括:

将事务消息对应的事务标识发送至客户端设备,事务消息对应的事务标识用于使得客户端设备记录回滚指示信息,和,回滚指示信息与事务消息对应的事务标识之间的对应关系。

再又一种可实现方式中,方法还包括:

记录事务标识,和,事务消息对应的事务的处理结果。

第六方面,本申请还提供一种事务消息处理装置,包括:

接收模块,用于接收客户端设备发送的事务消息对应的事务的处理结果;事务消息对应的事务的处理结果为客户端设备对事务消息对应的事务进行处理的结果;客户端设备记录有事务消息包括的回滚指示信息,回滚指示信息用以对事务消息对应的事务进行回滚。

确定模块,用于根据处理结果确定事务消息对应的事务是否处理成功;

发送模块,用于若事务消息对应的事务存在未处理成功的事务,则向客户端设备发送事务回滚请求消息;事务回滚请求消息用于使得客户端设备根据存储的回滚指示信息对事务消息对应的事务进行回滚。

第七方面,本申请还提供一种事务协调器所在节点设备,包括:接收器、处理器和发送器;其中,接收器、处理器和发送器通过通信总线连接;

接收器,用于接收客户端设备发送的事务消息对应的事务的处理结果;事务消息对应的事务的处理结果为客户端设备对事务消息对应的事务进行处理的结果;客户端设备记录有事务消息包括的回滚指示信息,回滚指示信息用以对事务消息对应的事务进行回滚;

处理器,用于根据处理结果确定事务消息对应的事务是否处理成功;

发送器,用于若事务消息对应的事务存在未处理成功的事务,则向客户端设备发送事务回滚请求消息;事务回滚请求消息用于使得客户端设备根据存储的回滚指示信息对事务消息对应的事务进行回滚。

本申请提供的事务消息处理方法、装置、设备及系统,客户端设备可确定业务消息对应的事务消息,判断该事务消息否包括回滚指示信息,若该事务消息包括该回滚指示信息,记录该回滚指示信息;该回滚指示信息用以对该事务消息对应的事务进行回滚。由于记录事务消息包括用以进行回滚的回滚指示信息,因而对事务消息对应的事务进行处理时,无需等待其他事务消息处理完成,也无需进行数据锁定,可使得针对同一数据的事务处理可并行进行,提高分布式事务系统的吞吐量,提高事务处理效率。

附图说明

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

图1为本申请的一种可选的分布式事务系统的网络结构图;

图2为本申请实施例一提供的事务消息处理方法的流程图;

图3为本申请实施例二提供的一种事务消息处理方法的流程图;

图4为本申请实施例三提供的一种事务消息处理方法的流程图;

图5为本申请实施例四提供的一种事务消息处理方法的流程图

图6为本申请实施例五提供的一种事务消息处理装置的结构示意图;

图7为本申请实施例六提供的一种客户端设备的结构示意图;

图8为本申请实施例七提供的一种事务消息处理装置的结构示意图;

图9为本申请实施例八提供的一种事务协调器所在节点设备的结构示意图;

图10为本发明实施例九提供的一种事务消息处理系统的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

本申请提供的事务消息处理方法、装置及设备,可适用于分布式事务系统。图1为本申请的一种可选的分布式事务系统的网络结构图。如图1所示,本申请的分布式事务系统中可包括:客户端设备101及至少一个节点设备102。客户端设备101可包括:应用程序103以及资源管理器104。客户端设备101中的应用程序103可通过本地接口控制资源管理器104,从而操作该资源管理器104所管理的数据资源。每个节点设备102可包括事务协调器105。每个节点设备102可以为服务端的节点设备,如服务器。客户端设备101中的应用程序103可通过事务协调器105控制事务,事务协调器105可通过xa接口注册管理客户端设备101上的资源管理器104。本申请提供的事务消息处理方法可提高分布式事务系统的吞吐量,提高事务处理效率。

本申请实施例一提供一种事务消息处理方法。本申请提供实施例一提供的事务消息处理方法可由客户端设备执行。图2为本申请实施例一提供的事务消息处理方法的流程图。如图2所示,该事务消息处理方法可包括如下:

s201、确定业务消息对应的事务消息。

具体地,客户端设备可以是接收用户输入的业务消息,并从业务库中查找该业务消息对应的业务,确定该业务消息对应的业务的业务处理所包括的事务,继而根据确定该事务对应的事务消息为该业务消息对应的事务消息。该业务消息可以为用户针对该客户端设备中的应用程序所输入的业务消息。该业务库可包括至少一个业务消息,以及,每个业务消息对应的业务。具体来说,该业务消息对应的业务可包括创建订单业务、更新商品库存业务、付款业务,则该业务消息对应的业务的业务处理所包括的事务可包括:数据插入(insert)、数据更新(update)等。需要说明的是,本申请中该业务消息对应的事务消息可包括至少一个事务消息。也就是说,该业务消息对应的业务的业务处理包括至少一个事务,每个事务对应一个事务消息。在分布式事务系统中,该至少一个事务对应的事务资源可位于不同的节点设备上。本申请所提及的事务可以为全局事务也可以为本地事务。

s202、判断该事务消息是否包括回滚指示信息。

具体地,该事务消息包括的回滚指示信息可以是根据该事务消息对应的事务所预先配置的信息。其中,该回滚指示(hint)信息可以包括回滚规则,该回滚规则可以是根据该事务消息对应的事务确定的。该回滚规则可以为根据该事务消息对应的事务的数据修改的反过程确定的。s202中可以是通过解析该事务消息,并判断该解析后的事务消息是否包括回滚指示信息。该回滚指示信息也可称为中间件规则。该回滚指示信息可通过预设的回滚指示标识。

举例来说,若该事务消息对应的事务为对数据进行加一操作,则该回滚规则为对数据进行减一操作。

该事务消息例如可以为结构化查询语言(structuredquerylanguage,简称sql)语句,若该事务消息的事务处理信息为:更新商品数目=商品数目-1,则该回滚指示信息例如可以为:商品数目=商品数目+1。

该s202中可以是解析该事务消息的sql语句,确定该解析后的该事务消息中是否包括回滚指示信息对应的字符串,若该解析后的该事务消息中包括回滚指示信息对应的字符串,则确定该事务消息包括回滚指示信息。

s203、若该事务消息包括该回滚指示信息,记录该回滚指示信息;该回滚指示信息用以对该事务消息对应的事务进行回滚。

具体地,若该事务消息包括该回滚指示信息,则从该事务消息中提取该回滚指示信息,并记录该回滚指示信息。该方法中可以是将该回滚指示信息插入回滚指示日志表(hintlog)中,实现该回滚指示信息的记录。其中,记录该回滚指示信息可以是记录该回滚指示信息包括的回滚规则。该回滚指示信息所包括的回滚规则用以在事务消息对应的事务处理失败的情况下,对该事务消息对应的事务进行回滚。

本申请实施例一提供的事务消息处理方法,可确定业务消息对应的事务消息,判断该事务消息否包括回滚指示信息,若该事务消息包括该回滚指示信息,记录该回滚指示信息;该回滚指示信息用以对该事务消息对应的事务进行回滚。由于该方法中,可记录事务消息包括的用以进行回滚的回滚指示信息,因而对事务消息对应的事务进行处理时,无需等待其他事务消息处理完成,也无需进行数据锁定,可使得针对同一数据的事务处理可并行进行,提高分布式事务系统的吞吐量,提高事务处理效率。

同时,该方法可针对同一数据的事务处理并行进行,突破针对热点数据的事务处理的性能瓶颈,提高针对热点数据的处理效率。其中,热点数据例如可以是事务处理较多的数据,如商品特卖期,该商品的库存数据的等。

并且,该方法无需记录事务处理前的数据以及处理后的数据,仅需记录该回滚指示信息便可,因而,还可节省记录数据的开销。

本申请实施例二还可提供一种事务消息处理方法。图3为本申请实施例二提供的一种事务消息处理方法的流程图。如图3所示,在上述实施例所述的s203中若该事务消息包括该回滚指示信息,记录该回滚指示信息之后,该方法还可包括:

s301、对该事务消息对应的事务进行处理。

具体地,如该事务消息包括至少一个事务消息,则该s201中可以是对该至少一个事务消息中每个事务消息对应的事务进行处理。其中,对该事务消息对应的事务进行处理,可以是根据该事务消息中该回滚指示信息外的事务处理信息,对该事务消息对应的事务进行处理。举例来说,该事务消息的事务处理信息例如可以为:更新商品数目=商品数目-1。

对该事务消息对应的事务进行处理可以是根据该事务消息中的事务处理信息确定该事务消息对应的事务的数据资源及数据操作,继而根据该事务消息对应的事务的数据操作,对该数据资源进行处理。

s302、将该事务消息对应的事务处理的结果发送至事务协调器所在节点设备。

具体地,如该事务消息包括至少一个事务消息,则该s302中可以是将每个事务消息对应的事务的处理结果均发送至事务协调器所在节点设备。

本申请的事务消息处理方法适用的分布式事务系统例如可以为xa协议对应的分布式事务系统。上述事务消息处理方法中,s301和s302可以是在该分布式事务系统的第一阶段,也称准备阶段执行。

可选的,该方法还可包括:

s303、接收该事务协调器所在节点设备发送的事务提交请求消息;该事务提交请求消息为该事务协调器所在节点设备在确定该事务消息对应的事务处理成功后发送的。

具体地,该事务提交请求消息可以为该事务协调器所在节点设备在确定每个事务消息对应的事务均处理成功后发送的。

s304、对该事务消息对应的事务进行提交。

如上所述的s301中对该事务消息对应的事务进行处理,可以是在内存中根据该事务消息对应的事务的数据操作,对该数据资源进行处理,然而,该数据资源所在节点侧该数据资源实际并未修改。该s304中可以是向数据资源所在节点设备发送该事务消息对应的事务的数据操作指令,以使得该数资源所在节点设备对该数据资源进行修改,实现该事务消息对应的事务进行提交,即实现数据在客户端设备侧和数据资源所在节点设备侧均修改。该数据资源例如可以包括:数据库、数据表、消息队列等至少一个。需要说明的是,在客户端设备的内存中根据该事务消息对应的事务的数据操作,对该数据资源进行处理,是可撤销的,但是,在数据资源所在节点设备侧对数据资源的处理是不可逆的,不可撤销的。其中,客户端设备例如可以是通过资源管理器向该数据资源所在节点设备发送指令。

上述s303和s304例如可以是在分布式事务系统的第二阶段,也就是提交阶段执行的。

可选的,该方法还可包括:

删除记录的该回滚指示信息。

可替代地,该方法还可包括:

s305、接收该事务协调器所在节点设备发送的事务回滚请求消息;该事务回滚请求消息为该事务协调器所在节点设备在确定该事务消息对应的事务存在未处理成功的事务后发送的。

对于该业务消息对应的业务的所有事务的处理要么都成功,要么都失败。因而,如该事务消息对应的事务存在未处理成功的事务则,该事务消息对应的事务均需进行事务回滚。

s306、根据该回滚指示信息对该事务消息对应的事务进行回滚。

具体地,可以是根据该回滚指示信息中回滚规则,对该事务消息对应的事务进行回滚。

如上所述的s301中对该事务消息对应的事务进行处理,可以是在内存中根据该事务消息对应的事务的数据操作,对该数据资源进行处理,然而,该数据资源所在节点侧该数据资源实际并未修改。由于在客户端设备的内存中根据该事务消息对应的事务的数据操作,对该数据资源进行处理,是可撤销的。该s306中可以是基于该回滚指示信息的回滚规则,对该内存中对该数据资源的处理进行事务回滚,实现该事务消息对应的事务的回滚。

上述s305和s306也可以是在分布式事务系统的第二阶段,也就是提交阶段执行的。

可选的,该方法还可包括:

删除记录的该回滚指示信息。

无论是事务提交还是回滚,该事务消息对应的事务已处理完成,而该回滚指示信息用以对该事务消息对应的事务进行回滚,当事务处理完成后,该回滚指示信息便不会被启用,为避免已记录的回滚指示信息对后续事务消息的事务处理造成干扰,该方法可删除该记录该回滚指示信息,以保证事务处理效率,提高用户体验。

可选的,在如上所述的s202中判断该事务消息是否包括回滚指示信息之前,该方法还可包括:

将该事务消息发送至事务协调器所在节点设备,使得该事务协调器所在节点设备对该事务消息对应的事务进行注册;

接收该事务协调器所在节点设备发送的该事务消息对应的事务标识,该事务消息对应的事务标识为该事务协调器所在节点设备对该事务消息对应的事务进行注册所确定的事务标识;

记录该事务消息对应的事务标识。

具体地,该方法中可以是通过向事务协调器所在节点设备发送事务注册请求,事务注册请求包括该事务消息,使得该事务协调器所在节点设备对该事务消息对应的事务进行注册,并接收该事务协调器所在节点设备发送的事务注册响应,该事务注册响应可包括该事务消息对应的事务标识。

在接收到该事务协调器所在节点设备发送的事务发送的事务消息对应的事务标识,便可启动该事务消息对应的事务。

可选的,如上所述的记录该回滚指示信息,包括:

记录该回滚指示信息,和,该回滚指示信息与该事务消息对应的事务标识之间的对应关系。

记录该回滚指示信息与该事务消息对应的事务标识之间的对应关系,可使得接收后事务协调器所在节点设备发送的事务提交请求消息或事务回滚提交请求消息后,更准确的确定该回滚指示信息,继而删除该回滚指示信息,或,根据回滚指示信息进行事务回滚等操作。

可选的,该方法还可包括:

若该事务消息不包括所述回滚指示信息,生成该事务消息对应事务的回滚数据;

对该事务消息对应的事务进行处理;

生成该事务消息对应事务的重做数据;

记录该回滚数据和该重做数据。

具体地,该回滚数据可以为该事务消息对应事务的前置镜像数据。也就是,该事务消息对应事务处理的源数据。该回滚数据也称为撤销日志(undolog)数据。该重做数据可以为重做日志(redolog)数据,是该事务消息对应事务的后置镜像数据,也就是,该事务消息对应事务处理的目标数据。如上记录该回滚数据和该重做数据,可以是将该回滚数据和该重做数据进行字符串拼接后写入日志表中。

该方法还可包括:向事务协调器所在节点设备发送该事务消息对应事务的处理结果;

接收该事务协调器所在节点设备发送的事务提交请求消息或事务回滚请求消息;

若接收到事务提交请求消息,则对该事务消息对应事务进行提交;

若接收到事务回滚请求消息,则比较该事务消息对应事务的当前数据与该重做数据是否一致;如一致,则根据该回滚数据对该事务消息对应事务进行回滚;如不一致,则对该当前数据进行锁定,对该当前数据进行锁定,直到针对该当前数据的其他事务处理完成后放锁。

可选的,该事务消息对应的事务包括如下任一:数据插入、数据更新及数据删除等。

本申请提供二的各事务消息处理方法,可通过提供事务提交情况下的方法及事务回滚提交情况下的方法,使得事务消息处理方法更好地保证事务的acid特性,保证事务处理的正常进行,提高事务处理效率;并且,该方法中还无论是事务提交还是回滚后,删除记录的该回滚指示信息,可避免已记录的回滚指示信息对后续事务消息的事务处理造成干扰,保证事务处理效率,提高用户体验。

本申请实施例三还提供一种事务消息处理方法,该实施例三提供的事务消息处理方法可由事务协调器所在节点设备执行。图4为本申请实施例三提供的一种事务消息处理方法的流程图。如图4所示,该方法可包括:

s401、接收客户端设备发送的事务消息对应的事务的处理结果。

该事务消息对应的事务的处理结果为该客户端设备对该事务消息对应的事务进行处理的结果。

具体地,如该事务消息包括至少一个事务消息,事务协调器所在节点设备可以是接收客户端设备发送的每个事务消息对应的事务的处理结果。

s402、根据该处理结果确定该事务消息对应的事务是否处理成功。

事务协调器所在节点设备可以是根据每个事务消息对应的事务的处理结果确定,该每个事务消息对应的事务是否处理成功。

s403、若该事务消息对应的事务存在未处理成功的事务,则向该客户端设备发送事务回滚请求消息;该事务回滚请求消息用于使得该客户端设备根据记录的该回滚指示信息对该事务消息对应的事务进行回滚。

可选的,该方法还可包括:

若该事务消息对应的事务处理成功,则向该客户端设备事务提交请求消息;该事务提交请求消息用于使得该客户端设备对该事务消息对应的事务进行提交。

可选的,该方法还可包括:

接收该客户端设备发送的该事务消息;

根据该事务消息确定该事务消息对应的事务标识。

该方法中可以是事务协调器所在节点设备可以是接收客户端设备发送的事务注册请求,该事务注册请求包括该事务消息,该事务协调器所在节点设备对该事务消息对应的事务进行注册确定该事务消息对应的事务标识。

可选的,方法还包括:

将该事务消息对应的事务标识发送至该客户端设备,该事务消息对应的事务标识用于使得该客户端设备记录该回滚指示信息,和,该回滚指示信息与该事务消息对应的事务标识之间的对应关系。

具体地,事务协调器所在节点设备可以是向客户端设备发送事务注册响应,该事务注册响应可包括该事务消息对应的事务标识。

可选的,该方法还包括:

记录该事务标识,和,该事务消息对应的事务的处理结果。

举例来说,事务协调器所在节点设备可以是根据该处理结果确定该事务消息对应的事务是否处理成功之后,记录处理成功的事务,及处理成功的事务的标识;记录处理失败的事务及处理失败的事务的标识。

本申请实施例三提供的事务消息处理方法,事务协调器所在节点设备可接收客户端设备发送的事务消息对应的事务的处理结果,根据该处理结果确定该事务消息对应的事务是否处理成功,若该事务消息对应的事务存在未处理成功的事务,则向该客户端设备发送事务回滚请求消息,使得客户端设备可根据记录的该回滚指示信息对该事务消息对应的事务进行回滚。由于该方法中,可使得客户端设备根据记录的回滚指示信息进行回滚,无需等待其他事务消息处理完成,也无需进行数据锁定,可使得针对同一数据的事务处理可并行进行,提高分布式事务系统的吞吐量,提高事务处理效率。

本申请实施例四还提供一种事务消息处理方法。该实施例四的该事务消息处理方法可通过具体实例对上述任一所述的事务消息处理方法进行说明。图5为本申请实施例四提供的一种事务消息处理方法的流程图。如图5所示,该方法可包括:

s501、客户端设备确定业务消息对应的至少一个事务消息。

举例来说,以用户a通过客户端设备购买商品b为例进行说明。如客户端设备接收到用户通过应用界面输入的商品b对应的提交订单指令,则可确定得到创建订单的事务消息、更新商品库存的事务消息、更新账户余额的事务消息等事务消息。其中,创建订单的事务消息对应的事务可包括:商品b的订单插入;更新商品库存的事务消息对应的事务可包括:商品b的库存更新;更新账户余额的事务消息对应的事务可包括:用户a的账户余额更新。

s502、客户端设备将该至少一个事务消息发送至事务协调器所在节点设备。

s503、事务协调器所在节点设备对该至少一个事务消息对应的事务进行注册,并确定每个事务消息对应的事务标识。

不同事务消息对应的事务标识不同。

s504、事务协调器所在节点设备向客户端设备发送该每个事务消息对应的事务标识。

s505、客户端设备记录该每个事务消息的标识。

s506、客户端设备确定该每个事务消息中是否包括回滚指示信息。

s507、若所述每个事务消息包括回滚指示信息,则客户端设备记录该回滚指示信息。

举例来说,若该创建订单的事务消息包括:创建订单的事务处理信息,以及,创建订单的回滚指示信息。其中,该创建订单的事务处理信息例如可以为:插入订单;创建订单的回滚指示信息例如可以为:删除订单。

若该更新商品库存的事务消息包括:更新商品库存的事务处理信息,以及,更新商品库存的回滚指示信息。其中,更新商品库存的事务处理信息例如可以为:更新商品库存=商品库存-x;更新商品库存的回滚指示信息例如可以为:商品库存=商品库存+x。其中,x为用户a的购买商品b个数。

若该更新账户余额的事务消息包括:更新账户余额的事务处理信息,以及,更新账户余额的回滚指示信息。其中,更新账户余额的事务处理信息例如可以为:更新余额=余额-z;更新账户余额的回滚指示信息例如可以为:商更新余额=余额+z。其中,z为该创建订单中商品b的价格。

该客户端设备将各事务消息中的回滚指示信息进行记录。

s508、客户端设备对该每个事务消息对应的事务进行处理。

客户端设备例如可以是根据创建订单的事务处理信息插入订单进行事务处理,以插入商品b的创建订单;根据更新商品库存的事务处理信息如更新商品库存=商品库存-x进行事务处理,若事务处理前,商品b的库存为200,那么进行事务处理器将商品b的库存更新为200-x;根据更新账户余额的事务处理信息如更新余额=余额-z进行事务处理,若事务处理前,用户a的账户余额为95,进行事务处理器可将用户a的账户余额更新为95-z。

s509、客户端设备将该每个事务消息对应的事务处理的结果发送至事务协调器所在节点设备。

s510、若该至少一个事务消息对应的事务均处理成功,事务协调器所在节点设备向客户端设备发送事务提交请求消息。

s511、客户端设备对该至少一个事务消息对应的事务进行提交,并删除记录的该每个事务消息的回滚指示信息。

s512、若该至少一个事务消息对应的事务存在未处理成功的事务,事务协调器所在节点设备向客户端设备发送事务回滚请求消息。

如该创建订单的事务消息、更新商品库存的事务消息、更新账户余额的事务消息中任一事务消息对应的事务未处理成功,该事务协调器所在节点设备可向客户端设备发送事务回滚请求消息。

s513、客户端设备根据每个事务消息的回滚指示信息对该每个事务消息对应的事务进行回滚,并删除记录的该每个事务消息的回滚指示信息。

客户端设备在接收到该事务回滚请求消息后,可根据记录的回滚指示信息中,创建订单的回滚指示信息:删除订单,将插入的商品b的创建订单删除;根据更新商品库存的回滚指示信息:商品库存=商品库存+x,对商品b的库存进行回滚;根据更新账户余额的回滚指示信息:余额=余额+z,对用户a的账户余额进行回滚。

举例来说,若用户a创建商品b的订单之前,用户a的余额为95,用户a购买商品b的金额为5,根据更新用户a的余额的事务消息进行事务处理后,用户a的余额可以为90。若用户a还针对商品c进行交易,用户a创建商品c的订单之前,用户a的余额为90,用户a购买商品c的金额为10,根据更新用户a的余额的事务消息进行事务处理后,用户a的余额可以为80。

如针对用户a购买商品b的事务处理失败后,需对商品b的库存进行回滚。由于更新用户a的余额的事务消息可包括:更新用户a的账户余额的回滚指示信息,余额=余额+z,z为商品b的价格,在此z可以为5,那么,根据该更新用户a的账户余额的回滚指示信息中的余额=余额+z,可直接将用户a的余额通过85=80+5,可将用户a的账户余额更新为85。

基于本申请的方法,无需先将用户a基于商品c的事务处理进行回滚,再将用户a基于商品b的事务处理进行回滚,便可直接将用户a基于商品b的事务处理进行回滚,保证了用户a基于商品c的正常交易。

本申请实施例四提供的该事务消息处理方法,通过具体实例对上述的各事务消息处理方法进行说明,有益效果可参见上述,在此不再赘述。

需要说明的是,该实施例四中的各事务消息仅为实例说明,本申请并不依次作为限制。

本申请实施例五还提供一种事务消息处理装置。该实施例五所示的事务消息处理装置可通过软件和/或硬件的方式集成在客户端设备中。图6为本申请实施例五提供的一种事务消息处理装置的结构示意图。如图6所示,该事务消息处理装置600可包括:

确定模块601,用于确定业务消息对应的事务消息。

判断模块602,用于判断该事务消息否包括回滚指示信息。

记录模块603,用于若该事务消息包括该回滚指示信息,记录该回滚指示信息。该回滚指示信息用以对该事务消息对应的事务进行回滚

可选的,事务消息处理装置600还可包括:

第一处理模块,用于对该事务消息对应的事务进行处理;

第一发送模块,用于将该事务消息对应的事务的处理结果发送至事务协调器所在节点设备。

可选的,事务消息处理装置600还包括:

第一接收模块,用于接收该事务协调器所在节点设备发送的事务提交请求消息;该事务提交请求消息为该事务协调器所在节点设备在确定该事务消息对应的事务处理成功后发送的;

提交模块,用于对该事务消息对应的事务进行提交。

可选的,事务消息处理装置600还包括:

第一删除模块,用于删除记录的该回滚指示信息。

可选的,事务消息处理装置600还可包括:

第二接收模块,用于接收该事务协调器所在节点设备发送的事务回滚请求消息;该事务回滚请求消息为该事务协调器所在节点设备在确定该事务消息对应的事务存在未处理成功的事务后发送的;

回滚模块,用于根据该回滚指示信息对该事务消息对应的事务进行回滚。

可选的,事务消息处理装置600还包括:

第二删除模块,用于删除记录的该回滚指示信息。

可选的,该事务消息处理装置600还包括:

第二发送模块,用于将该事务消息发送至事务协调器所在节点设备;

第三接收模块,用于接收该事务协调器所在节点设备发送的该事务消息对应的事务标识;

记录模块603,还用于记录该事务消息对应的事务标识。

可选的,记录模块603,具体用于记录该回滚指示信息,和,该回滚指示信息与该事务消息对应的事务标识之间的对应关系。

可选的,事务消息处理装置600还可包括:

生成模块,用于若该事务消息不包括该回滚规则指示信息,生成该事务消息对应事务的回滚数据;

第二处理模块,用于对该事务消息对应的事务进行处理;

该生成模块,还用于生成该事务消息对应事务的重做数据;

记录模块603,还用于记录该回滚数据和该重做数据。

本申请实施例五提供的事务消息处理装置可用于执行图2、图3及图5中任一所述的客户端设备执行的事务消息处理方法,其有益效果可参见上述,在此不再赘述。

本申请实施例六还提供一种客户端设备。图7为本申请实施例五提供的一种客户端设备的结构示意图。该客户端设备可以为:智能手机、平板电脑、笔记本计算机、台式计算机等任一。如图7所示,该客户端设备700可包括处理器701和存储器702。

其中,处理器701,可以为中央处理器(centralprocessingunit,简称cpu)。处理器701还可以为其他通用处理器、数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器702,可以包括易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,简称ram);存储器702也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,简称rom),快闪存储器(flashmemory),硬盘(harddiskdrive,简称hdd)或固态硬盘(solid-statedrive,简称ssd);存储器702还可以包括上述种类的存储器的组合。

处理器701,与存储器702耦合,用于确定业务消息对应的事务消息;判断该事务消息否包括回滚指示信息;若该事务消息包括该回滚指示信息,控制该存储器记录该回滚指示信息;该回滚指示信息用以对事务消息对应的事务进行回滚。

可选的,处理器701还用于对所述事务消息对应的事务进行处理。

客户端设备700还可包括:

发送器,与处理器701耦合,用于将所述事务消息对应的事务的处理结果发送至事务协调器所在节点设备。

可选的,客户端设备700还可包括:

接收器,与处理器701耦合,用于接收该事务协调器所在节点设备发送的事务提交请求消息;该事务提交请求消息为该事务协调器所在节点设备在确定该事务消息对应的事务处理成功后发送的;

处理器701,还用于对该事务消息对应的事务进行提交。

可选的,处理器701还用于控制存储器702删除记录的该回滚指示信息。

可选的,该接收器,还用于接收该事务协调器所在节点设备发送的事务回滚请求消息;该事务回滚请求消息为该事务协调器所在节点设备在确定该事务消息对应的事务存在未处理成功的事务后发送的。

处理器701,还用于根据该回滚指示信息对该事务消息对应的事务进行回滚。

可选的,处理器701,还用于控制存储器702删除记录的所述回滚指示信息。

可选的,发送器,还用于将该事务消息发送至事务协调器所在节点设备。

接收器,还用于接收事务协调器所在节点设备发送的该事务消息对应的事务标识。

处理器701,还用于控制存储器702记录该事务消息对应的事务标识。

可选的,处理器701,具体用于控制存储器702记录该回滚指示信息,和,该回滚指示信息与该事务消息对应的事务标识之间的对应关系。

可选的,处理器701,还用于若事务消息不包括回滚规则指示信息,生成事务消息对应事务的回滚数据;对事务消息对应的事务进行处理;生成事务消息对应事务的重做数据。

处理器701,还用于控制存储器702记录该回滚数据和该重做数据。

可选的,该事务消息对应的事务包括如下任一:数据插入、数据更新及数据删除。

本申请实施例六还提供一种处理器可读存储介质。该可读存储介质中存储有程序指令,该程序指令用于使处理器701执行:图2、图3及图5中任一所述的客户端设备执行的事务消息处理方法的全部或部分步骤。上述可读存储存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

本申请实施例六提供的客户端设备及可读存储介质可用于执行上述图2、图3及图5中任一所述的客户端设备执行的事务消息处理方法,其有益效果可参见上述,在此不再赘述。

本申请实施例七还提供一种事务消息处理装置。该实施例七所示的事务消息处理装置可通过软件和/或硬件的方式集成在事务协调器所在节点设备中。图8为本申请实施例七提供的一种事务消息处理装置的结构示意图。如图8所示,该事务消息处理装置800可包括:

接收模块801,用于接收客户端设备发送的事务消息对应的事务的处理结果;该事务消息对应的事务的处理结果为该客户端设备对该事务消息对应的事务进行处理的结果;该客户端设备记录有该事务消息包括的回滚指示信息,该回滚指示信息用以对该事务消息对应的事务进行回滚。

确定模块802,用于根据该处理结果确定该事务消息对应的事务是否处理成功。

发送模块803,用于若该事务消息对应的事务存在未处理成功的事务,则向该客户端设备发送事务回滚请求消息;该事务回滚请求消息用于使得该客户端设备根据存储的该回滚指示信息对该事务消息对应的事务进行回滚。

可选的,发送模块803,还用于若该事务消息对应的事务处理成功,则向该客户端设备事务提交请求消息;该事务提交请求消息用于使得该客户端设备对该事务消息对应的事务进行提交。

可选的,接收模块801,还用于接收该客户端设备发送的该事务消息。

确定模块802,还用于根据该事务消息确定该事务消息对应的事务标识。

可选的,发送模块803,还用于将该事务消息对应的事务标识发送至该客户端设备,该事务消息对应的事务标识用于使得该客户端设备记录该回滚指示信息,和,该回滚指示信息与该事务消息对应的事务标识之间的对应关系。

可选的,该事务消息处理装置800还包括:

记录模块,用于记录该事务标识,和,该事务消息对应的事务的处理结果。

本申请实施例七提供的事务消息处理装置可用于执行上述图4或图5中任一所述的事务协调器所在节点设备执行的事务消息处理方法,其有益效果可参见上述,在此不再赘述。

本申请实施例八还提供一种事务协调器所在节点设备。图9为本申请实施例八提供的一种事务协调器所在节点设备的结构示意图。如图9所示,该事务协调器所在节点设备900可包括:接收器901、处理器902和发送器903。其中,接收器901、处理器902和发送器903通过通信总线904连接。

其中,处理器902,可以为cpu。处理器902还可以为其他通用处理器、dsp)、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

接收器901和发送器903可以为接口电路,接收器901用于信号的接收,发送器903用于信号的发送;另外,接收器901和发送器903可通过无线通信与网络和其他设备通信。

通信总线904可以包括数据总线、电源总线、控制总线和信号状态总线等。本实施例中为了清楚说明,在图9中将各种总线都示意为一条直线。

具体地,接收器901,用于接收客户端设备发送的事务消息对应的事务的处理结果,并将该处理结果传输至处理器902;该事务消息对应的事务的处理结果为该客户端设备对该事务消息对应的事务进行处理的结果;该客户端设备记录有该事务消息包括的回滚指示信息,该回滚指示信息用以对该事务消息对应的事务进行回滚。

处理器902,用于根据该处理结果确定该事务消息对应的事务是否处理成功。

发送器903,用于若处理器902确定该事务消息对应的事务存在未处理成功的事务,则向该客户端设备发送事务回滚请求消息;该事务回滚请求消息用于使得该客户端设备根据存储的该回滚指示信息对该事务消息对应的事务进行回滚。

可选的,发送器903,还用于若处理器902该事务消息对应的事务处理成功,则向该客户端设备事务提交请求消息;该事务提交请求消息用于使得该客户端设备对该事务消息对应的事务进行提交。

可选的,接收器901,还用于接收该客户端设备发送的该事务消息,并将该事务消息传输至处理器902。

处理器902,还用于根据该事务消息确定该事务消息对应的事务标识。

可选的,发送器903,还用于将处理器902所确定的该事务消息对应的事务标识发送至该客户端设备,该事务消息对应的事务标识用于使得该客户端设备记录该回滚指示信息,和,该回滚指示信息与该事务消息对应的事务标识之间的对应关系。

可选的,处理器902,还用于记录该事务标识,和,该事务消息对应的事务的处理结果。

本申请实施例八提供的事务协调器所在节点设备可用于执行上述图4或图5中任一所述的事务协调器所在节点设备执行的事务消息处理方法,其有益效果可参见上述,在此不再赘述。

本发明实施例九提供的事务消息处理系统。图10为本发明实施例九提供的一种事务消息处理系统的结构示意图。如图10所示,事务消息处理系统包括:客户端设备1001和事务协调器所在节点设备1002;客户端设备1001与事务协调器所在节点设备1002连接。

客户端设备1001,用于确定业务消息对应的事务消息;判断该事务消息否包括回滚指示信息;若该事务消息包括该回滚指示信息,记录该回滚指示信息;该回滚指示信息用以对该事务消息对应的事务进行回滚。

事务协调器所在节点设备1002,用于接收客户端设备1001发送的事务消息对应的事务的处理结果;根据该处理结果确定该事务消息对应的事务是否处理成功;若该事务消息对应的事务存在未处理成功的事务,则向客户端设备1001发送事务回滚请求消息。

客户端设备1001,还用于根据记录的该回滚指示信息对该事务消息对应的事务进行回滚。

具体地,客户端设备1001为上述图7所示的客户端设备,事务协调器所在节点设备1002为上述图9所示的事务协调器所在节点设备。

可选的,客户端设备1001可执行上述图2、图3及图5中任一所述的客户端设备执行的事务消息处理方法,事务协调器所在节点设备1002可执行上述图4或图5中任一所述的事务协调器所在节点设备执行的事务消息处理方法。

本申请实施例九提供的事务消息处理系统所包括的客户端设备可执行上述图2、图3及图5中任一所述的客户端设备执行的事务消息处理方法,事务消息处理系统所包括的事务协调器所在节点设备可执行上述图4或图5中任一所述的事务协调器所在节点设备执行的事务消息处理方法,其具体的实现过程及有益效果可参见上述,在此不再赘述。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

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