CN107766127B - 事务消息处理方法、装置、设备及系统 - Google Patents
事务消息处理方法、装置、设备及系统 Download PDFInfo
- Publication number
- CN107766127B CN107766127B CN201610708579.6A CN201610708579A CN107766127B CN 107766127 B CN107766127 B CN 107766127B CN 201610708579 A CN201610708579 A CN 201610708579A CN 107766127 B CN107766127 B CN 107766127B
- Authority
- CN
- China
- Prior art keywords
- transaction
- message
- transaction message
- coordinator
- merged
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种事务消息处理方法、装置、设备及系统。本发明的事务消息处理系统可包括客户端设备、主事务协调器所在节点设备和从事务协调器所在节点设备;主事务协调器所在节点设备用于接收客户端设备发送的至少一个事务消息;将至少一个事务消息放入消息队列;对消息队列中的至少一个事务消息进行合并获得合并事务消息;将合并事务消息发送至从事务协调器所在节点设备;从事务协调器所在节点设备用于接收主事务协调器所在节点设备发送的合并事务消息,对合并事务消息进行解析获得至少一个事务消息,继而进行每个事务消息对应的事务处理。本申请可减少主从事务协调器所在节点设备间的传输消息的个数,提高事务处理的吞吐量,提高事务处理效率。
Description
技术领域
本申请涉及互联网技术,尤其涉及一种事务消息处理方法、装置、设备及系统。
背景技术
随着网络技术的发展,网络中业务系统间的数据操作越来越频繁,处于业务系统间的不同数据库中数据的一致性。不同数据库中数据的一致性则需使得对不同数据库的数据操作具有原子性、一致性、隔离性以及持久性(Atomicity Consistency IsolationDurability,简称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上的事务协调器105可互为主从事务协调器。也就是说,每个节点设备102上的事务协调器均可作为主事务协调器,也可作为从事务协调器。不同节点设备102上的事务协调器需交互数据包括。客户端设备101中的应用程序103可通过事务协调器105控制事务,事务协调器105可通过XA接口注册管理客户端设备101上的资源管理器104。
为实现该图1所示的分布式事务系统中的事务消息处理,目前还存在一种现有的事务消息处理方法。图2为现有的一种事务消息处理方法的流程图。如图2所示,现有的事务消息处理方法可包括:
S201、主事务协调器所在节点设备接收客户端设备发送的一个事务消息。
S202、该主事务协调器所在节点设备将该一个事务消息发送至从事务协调器所在节点设备。
S203、该从事务协调器所在节点设备根据该一个事务消息进行该一个事务消息对应的事务处理。
也就是说,在现有的事务消息处理方法中,主事务协调器所在节点设备每接收到客户端设备发送的一个事务消息,便会将其发送至从事务协调器所在节点设备,由从事务协调器进行事务处理。主从事务协调器所在节点设备间频繁的消息交互,使得主从事务协调器所在节点设备的吞吐量受到限制,从而影响事务处理效率。
为解决现有的事务消息处理方法所存在的事务处理效率,本申请提供如下各事务消息处理方法、装置及设备。其中,本申请提供的事务消息处理方法可由该分布式事务系统中事务协调器所在的节点设备执行,用以实现主从事务协调器所在设备的事务消息传输,提高该主从事务协调器所在节点设备间的吞吐量,从而提高事务处理的吞吐量,提高事务处理效率。其中,该事务协调器所在的节点设备例如可以为上述如1所示的分布式事务系统中任一包括事务协调器的节点设备。
本申请实施例一提供一种事务消息处理方法。图3为本申请实施例一提供的一种事务消息处理方法的流程图。如图3所示,该方法包括如下:
S301、主事务协调器所在节点设备接收客户端设备发送的至少一个事务消息。
具体地,该至少一个事务消息可以为该客户端设备在接收到用户输入的业务请求后,根据该业务请求确定的事务消息,也可以为该客户端设备根据在此之前的事务处理结果确定的该事务消息。
S302、该主事务协调器所在节点设备将该至少一个事务消息放入消息队列。
具体地,该消息队列为消息传输过程中,保存消息的容器。该消息队列例如可以为消息待发队列,即该消息队列中的事务消息为待发送的消息。该主事务协调器所在的节点设备在接收到每个事务消息后,不直接将该每个事务消息进行传输,而是将其放入消息队列中,避免主从事务协调器所在节点设备间的传输过多的小数据包消息,从而避免分布式事务系统所在的网络中充斥过多的小数据包消息。
S303、该主事务协调器所在节点设备对该消息队列中的该至少一个事务消息进行合并,获得合并事务消息。
具体地,该主事务协调器所在节点设备可以是将该消息队列中的所有事务消息进行合并。该方法中主事务协调器所在节点设备可以是将接收到的至少一个事务消息依次放入该消息队列中,继而将该消息队列中的所有事务消息进行合并,而无需在接收到一个事务消息后等待接收其他事务消息,从而对接收到的多个事务消息进行合并,从而减小等待接收事务消息的时间带来的网络延迟。该合并事务消息也可称为事务消息合并包。
需要说明的是,在S303中该主事务协调器所在节点设备对该消息队列中的该至少一个事务消息进行合并之前,该方法还可包括:唤醒主备通信线程,以调用该主备通信线程对应的网络接口。该网络接口可以为该主事务协调器所在节点设备与从事务协调器所在节点设备间的网络传输接口。
S304、该主事务协调器所在节点设备将该合并事务消息发送至从事务协调器所在节点设备。
该主事务协调器所在节点设备可以是将该合并事务消息通过网络接口发送至该从事务协调器所在节点设备。该网络接口例如可以为主备通信线程所对应的网络接口。
S305、该从事务协调器所在节点设备对该合并事务消息进行解析,获得该至少一个事务消息。
如主事务协调器所在节点设备采用预设合并方式对该消息队列中的该至少一个事务消息进行合并,该从事务协调器所在节点设备可以是采用该预设合并方式对应的解析方式,对该合并事务消息进行解析,获得该至少一个事务消息。该预设合并方式对应的解析方式,例如可以是该预设合并方式的逆运算过程。
S306、该从事务协调器所在节点设备根据该至少一个事务消息中的每个事务消息进行该每个事务消息对应的事务处理。
该从事务协调器所在节点设备可以是根据该每个事务消息确定该每个事务消息对应的事务以及该每个事务消息对应的数据资源,继而根据该事务消息对应的事务对该每个事务消息对应的数据资源进行处理,实现对该每个事务消息对应的事务处理。该每个事务消息对应的事务可包括数据插入、数据更新及数据删除等任一。该每个事务消息对应的数据资源包括:数据表、数据库、消息队列、文件系统等数据资源中任一。不同事务消息对应的数据资源可位于不同的节点设备上。
本申请实施例一提供的事务消息处理方法,主事务协调器所在节点设备可接收客户端设备发送的至少一个事务消息,将该至少一个事务消息放入消息队列,并对该对该消息队列中的该至少一个事务消息进行合并,获得合并事务消息,继而将该合并事务消息发送至从事务协调器所在节点设备。该方法中该主事务协调器所在的节点设备在接收到每个事务消息后,并非直接将该每个事务消息进行传输,而是放入消息队列中继而将该消息队列中的事务消息进行合并后进行传输,可减少主从事务协调器所在节点设备间的传输的消息的个数,提高主从事务协调器所在节点设备间的吞吐量,提高事务处理的吞吐量,提高事务处理效率。
可选的,本申请还可提供一种事务消息处理方法。图4为本申请实施例二提供的一种事务消息处理方法的流程图。如图4所示,如上所述的事务消息处理方法中,如上S303中该主事务协调器所在节点设备对该消息队列中的该至少一个事务消息进行合并,获得合并事务消息,可以包括如下:
S401、该主事务协调器所在节点设备根据一个协议头和该至少一个事务消息的数据信息,生成该合并事务消息。
具体地,每个事务消息可包括一个协议头,那么至少一个事务消息则包括至少一个协议头,直接将该至少一个事务消息进行组合,实现该至少一个事务消息的合并,可使得该合并事务消息中可包括至少一个协议头,以及,该至少一个事务消息的数据信息。本申请提供的事务消息处理方法中,可仅根据一个协议头和该至少一个事务消息的数据信息生成该合并事务消息,可使得该合并事务消息中仅可包括一个协议头和该至少一个事务消息的数据信息,因此,该方法中根据一个协议头和该至少一个事务消息的数据信息,生成该合并事务消息,可减小合并事务消息中协议头的开销,使得该合并事务消息的大小远远小于该至少一个事务消息的大小之和,提高主从事务协调器所在节点设备间的传输消息的有效数据量,提高主从事务协调器所在节点设备间的吞吐量,提高事务处理的吞吐量,提高事务处理效率。其中,该协议头例如可以为传输控制协议(Transmission Control Protocol,简称TCP)的协议头。
可选的,如该至少一个事务消息包括至少一个类型的事务消息。如上所述的S401中该主事务协调器所在节点设备根据一个协议头和该至少一个事务消息的数据信息,生成该合并事务消息之前,该方法还可包括如下:
S401a、该主事务协调器所在节点设备将该至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域。
该每个类型的所有事务消息的数据信息中的相同域例如可以为数据库标识符(Datebase Key)。对于该每个类型的所有事务消息,由于数据信息中存在相同域,因而,该每个类型的所有事务消息仅需一个该相同域,因此,该方法中,将该每个类型的所有事务消息的数据信息中的相同域合并为一个域。
S401b、该主事务协调器所在节点设备对该一个域,和,该每个类型的所有事务消息的数据信息中该相同域外的其他域进行合并,生成该每个类型对应的事务数据消息。
对于该每个类型的所有事务消息,对该一个域,和,该每个类型的所有事务消息的数据信息中该相同域外的其他域进行合并,生成该每个类型对应的事务数据消息,可减少该每个类型对应的事务数据信息中的重复的相同域,从而实现每个类型的所有事务消息的数据信息的合并。
S401c、该主事务协调器所在节点设备对该至少一个类型对应的事务数据消息进行合并,生成该至少一个事务消息的数据信息。
该方法对该每个类型的所有事务消息的数据信息进行合并,使得该每个类型对应的事务数据信息中相同域仅出现一次,可减小该至少一个事务消息的数据信息的数据量,提高合并事务消息中的有效数据量。
可选的,如上所述的事务消息处理方法中,S302中该主事务协调器所在节点设备将该至少一个事务消息放入消息队列可以包括:
该主事务协调器所在节点设备将该至少一个事务消息按照接收的时间顺序,依次放入该消息队列中。
该主事务协调器所在的节点设备在接收到每个事务消息后,不直接将该每个事务消息进行传输,而是按照接收时间放入消息队列中,避免主从事务协调器所在节点设备间的传输过多的小数据包消息,从而避免分布式事务系统所在的网络中充斥过多的小数据包消息。
可选的,如上所述的方法中,S303中该主事务协调器所在节点设备对该消息队列中的该至少一个事务消息进行合并,获得合并事务消息之前,该方法还可包括:
该主事务协调器所在节点设备按照该接收的时间顺序,依次从该消息队列提取该至少一个事务消息,直至该消息队列为空;
该主事务协调器所在节点设备对提取到的该至少一个事务消息进行合并,获得该合并事务消息。
也就是说,该方法中可以是对该消息队列中的所有事务消息进行合并。
可选的,如上所述的步骤中该主事务协调器所在节点设备依次从该消息队列提取该至少一个事务消息,直至该消息队列为空,可包括:
该主事务协调器所在节点设备启动该消息队列对应的等待锁;
该主事务协调器所在节点设备响应于该等待锁,依次从该消息队列提取该至少一个事务消息,直至该消息队列为空。
具体地,该消息队列对应的等待锁,也可称为该消息队列的等待对象锁。启动该消息队列对应的等待锁,可以是启动该消息队列对应的等待锁时间的定时器。在该等待锁时间内,判断该消息队列是否,若该消息队列不为空,则依次从该消息队列提取该至少一个事务消息,直至该消息队列为空。
如上所述的方法中,S304中该主事务协调器所在节点设备将该合并事务消息发送至从事务协调器所在节点设备之前,该方法还可包括:
该主事务协调器所在节点设备将该合并事务消息持久化至日志文件中。
该方法中该主事务协调器所在节点设备可以是将该合并事务消息存储至该主事务协调器所在节点设备的非易失性存储设备中的日志文件中,从而实现该合并事务消息的持久化。
如上所述的方法中,S305中该从事务协调器所在节点设备对该合并事务消息进行解析,获得该至少一个事务消息之前,该方法还可包括:
从事务协调器所在节点设备将该合并事务消息持久化至日志文件中。
该方法中该从事务协调器所在节点设备可以是将该合并事务消息存储至该从事务协调器所在节点设备的非易失性存储设备中的日志文件中,从而实现该合并事务消息的持久化。
可选的,如上任一所述的事务消息处理方法的基础上,该方法在S306中该从事务协调器所在节点设备根据该至少一个事务消息中的每个事务消息进行该每个事务消息对应的事务处理之后,还可包括:
该从事务协调器所在节点设备确定对该每个事务消息对应的事务处理结果;
该从事务协调器所在节点设备将该至少一个事务消息对应的事务处理结果进行合并,获得总的事务处理结果。
可选的,如上所述的方法中,S304中该主事务协调器所在节点设备将该合并事务消息发送至从事务协调器所在节点设备之前,该方法还可包括:
该主事务协调器所在节点设备记录该消息队列中该至少一个事务消息的标识。
可选的,该方法还可包括:
该从事务协调器所在节点设备将该总的事务处理结果发送至该主事务协调器所在节点设备;
该主事务协调器所在节点设备根据该至少一个事务消息的标识和该事务处理结果,确定每个事务消息对应的事务处理结果。
具体地,该总的事务处理结果包括该至少一个事务消息的事务处理结果,其中,每个事务消息对应的事务处理结果可包括该每个事务消息对应的标识等信息,该主事务协调器所在节点设备可根据该每个事务消息的标识和该总的事务处理结果,确定每个事务消息对应的事务处理结果。
可选的,该方法还可包括:
该主事务协调器所在节点设备向客户端设备发送该每个事务消息对应的事务处理结果。
可选的,该方法还包括:
该主事务协调器所在节点设备检测是否接收到关闭(shutdown)指令;
该主事务协调器所在节点设备响应于接收到的该关闭指令,确定该至少一个事务消息的处理完成。
如该主事务协调器所在节点设备未接收到该关闭指令,该主事务协调器所在节点设备还可继续执行上述事务消息处理方法,如接收客户端设备发送的事务消息继而将该事务消息放入消息队列,对该消息队列中的事务消息合并后发送至从事务协调器所在节点设备。
可选的,如上任一所述的事务消息处理方法中,该至少一个事务消息中每个事务消息为如下任一:事务创建消息、事务更新消息、事务提交消息和事务回滚消息;该事务创建消息包括:全局事务创建消息,和/或,事务分支创建消息;该事务更新消息包括:全局事务状态更新消息,和/或,事务分支状态更新消息;该事务提交消息包括:全局事务提交消息;该事务回滚消息包括:全局事务回滚消息。
本申请实例二提供的事务消息处理方法可根据一个协议头和该至少一个事务消息的数据信息,对该至少一个事务消息进行合并,生成该合并事务消息,可减小合并事务消息中协议头的开销,提高主从事务协调器所在节点设备间的传输消息的有效数据量;并且,该方法还可将该至少一个事务消息中每个类型的事务消息的相同域合并为一个域,根据该一个域和该每个类型的事务消息的其他域进行合并,实现该每个类型的事务消息的数据信息的合并,提高主从事务协调器所在节点设备间的传输消息的有效数据量,提高主从事务协调器所在节点设备间的吞吐量,提高事务处理的吞吐量,提高事务处理效率。
本申请实施例三还可提供一种事务消息处理方法。该实施例三可通过具体的实例对上述实施例进行说明。图5为本申请实施例三提供的一种事务消息处理方法的流程图。如图5所示,该事务消息处理方法可包括:
S501、主事务协调器所在节点设备接收客户端设备发送的至少一个事务消息。
举例来说,以“抢红包”业务为例进行说明。在“抢红包”业务中,主事务协调器所在节点设备例如可接收到客户端设备A发送的事务创建消息;接收到客户端设备B发送的事务创建消息;接收到客户端设备C发送的事务提交消息。
S502、主事务协调器所在节点设备将该至少一个事务消息按照接收时间顺序依次放入消息队列。
主事务协调器所在节点设备例如可以是将接收到的客户端设备A发送的事务创建消息、客户端设备B发送的事务创建消息,以及客户端设备C发送的事务提交消息,按照接收时间顺序,依次放入消息队列中。
S503、主事务协调器所在节点设备启动该消息队列对应的等待锁。
S504、主事务协调器所在节点设备响应于该等待锁,按照该接收时间顺序依次从该消息队列提取该至少一个事务消息,直至该消息队列为空。
S505、主事务协调器所在节点设备将该至少一个事务消息中每个类型的事务消息的数据信息中的相同域合并为一个域。
举例来说,主事务协调器所在节点设备接收到的事务消息中,客户端设备A发送的事务创建消息,和客户端设备B发送的事务创建消息,为同一类型的事务消息,因而,可将客户端设备A发送的事务创建消息,和客户端设备B发送的事务创建消息的数据信息中的相同域合并为一个域。
S506、主事务协调器所在节点设备对该一个域,和,该每个类型的事务消息的数据信息中该相同域外的其他域进行合并,生成该每个类型对应的事务数据消息。
主事务协调器所在节点设备例如可对该相同域、该客户端设备A发送的事务创建消息中的数据信息的其他域,以及客户端设备B发送的事务创建消息中数据信息的其他域进行合并,得到事务创建消息对应的事务数据信息。
S507、主事务协调器所在节点设备对至少一个类型对应的事务数据消息进行合并,生成该至少一个事务消息的数据信息。
举例来说,由于主事务协调器所在节点设备还接收到客户端设备C发送的事务提交消息,因而还可将所得到的事务创建消息对应的事务数据信息,和,该事务提交消息的数据信息进行合并,得到接收到的客户端设备A、B和C发送的多个事务消息中的数据信息。
S508、主事务协调器所在节点设备根据一个协议头和该至少一个事务消息的数据信息,生成合并事务消息。
举例来说,主事务协调器所在节点设备例如可以根据一个协议头,和,客户端设备A、B和C发送的多个事务消息中的数据信息进行合并,生成合并事务消息。
S509、主事务协调器所在节点设备将该合并事务消息持久化至日志文件中。
S510、主事务协调器所在节点设备记录该消息队列中该至少一个事务消息的标识。
S511、主事务协调器所在节点设备将该合并事务消息发送至从事务协调器所在节点设备。
S512、从事务协调器所在节点设备将该合并事务消息持久化至日志文件中。
S513、从事务协调器所在节点设备对该合并事务消息进行解析,获得该至少一个事务消息。
S514、从事务协调器所在节点设备根据该至少一个事务消息中的每个事务消息进行该每个事务消息对应的事务处理。
S515、从事务协调器所在节点设备确定对该每个事务消息对应的事务处理结果。
S516、该从事务协调器所在节点设备将该至少一个事务消息对应的事务处理结果进行合并,获得总的事务处理结果。
S517、从事务协调器所在节点设备将该总的事务处理结果发送至主事务协调器所在节点设备。
S518、主事务协调器所在节点设备根据该至少一个事务消息的标识和该事务处理结果,确定每个事务消息对应的事务处理结果。
S519、主事务协调器所在节点设备向客户端设备发送该每个事务消息对应的事务处理结果。
需要说明的是,该方法还可包括:该主事务协调器所在节点设备检测是否接收到关闭指令。若接收到关闭指令,该主事务协调器所在节点设备响应于接收到的该关闭指令,确定该至少一个事务消息的处理完成。若未接收到关闭指令,则返回依次执行S501至S521。
本申请实施例三提供的事务消息处理方法,通过具体实例对上述实施例任一所述的事务消息处理方法进行说明,其有益效果可参见上述实施例所述,在此不再赘述。
本申请实施例四还提供一种事务消息处理装置。图6为本申请实施例四提供的一种事务消息处理装置的结构示意图。如图6所示,事务消息处理装置600可包括:
接收模块601,用于接收客户端设备发送的至少一个事务消息。
放入模块602,用于将至少一个事务消息放入消息队列。
合并模块603,用于对该消息队列中的该至少一个事务消息进行合并,获得合并事务消息。
发送模块604,用于将该合并事务消息发送至从事务协调器所在节点设备。
可选的,合并模块603,具体用于根据一个协议头和该至少一个事务消息的数据信息,生成该合并事务消息。
可选的,该至少一个事务消息包括:至少一个类型的事务消息。
合并模块603,具体用于将该至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域;对该一个域,和,该每个类型的所有事务消息的数据信息中该相同域外的其他域进行合并,生成该每个类型对应的事务数据消息;对该至少一个类型对应的事务数据消息进行合并,生成该至少一个事务消息的数据信息。
可选的,合并模块603,具体用于将所述至少一个事务消息按照接收时间顺序依次放入该消息队列中。
可选的,合并模块603,还用于根据该接收时间顺序依次从该消息队列提取该至少一个事务消息,直至该消息队列为空;对提取到的该至少一个事务消息进行合并,获得该合并事务消息。
可选的,事务消息处理装置600还包括:
启动模块,用于启动该消息队列的等待锁;
合并模块603,还用于响应于该等待锁,依次从该消息队列提取该至少一个事务消息,直至该消息队列为空。
可选的,事务消息处理装置600还包括:
持久化模块,用于在发送模块604将该合并事务消息发送至该从事务协调器所在的节点设备之前,将该合并事务消息持久化至日志文件中。
可选的,接收模块601,还用于接收该从事务协调器所在节点设备返回的事务处理结果;该事务处理结果为该从事务协调器所在的节点设备根据接收到的事务消息进行该事务消息对应的事务处理的处理结果。
可选的,事务消息处理装置600还包括:
记录模块,用于在发送模块604将该合并事务消息发送至该从事务协调器所在的节点设备之前,记录该消息队列中该至少一个事务消息的标识。
可选的,事务消息处理装置600还包括:
确定模块,用于根据该至少一个事务消息的标识和该事务处理结果,确定每个事务消息对应的事务处理结果。
可选的,发送模块604,还用于向该客户端设备发送该每个事务消息对应的事务处理结果。
可选的,事务消息处理装置600还包括:
检测模块,用于检测是否接收到关闭指令;
该确定模块,还用于响应于接收到的该关闭指令,确定该至少一个事务消息的处理完成。
本申请实施例四提供的事务消息处理装置可执行上述图2至图5中任一所述的主事务协调器所在节点设备执行的事务消息处理方法,其有益效果可参见上述,在此不再赘述。
本申请实施例五还提供一种事务消息处理装置。图7为本申请实施例五提供的一种事务消息处理装置的结构示意图。如图7所示,事务消息处理装置700可包括:
接收模块701,用于接收主事务协调器所在节点设备发送的合并事务消息;该合并事务消息为该主事务协调器所在节点设备将接收到的客户端设备发送的至少一个事务消息放入消息队列,并对该消息队列中的该至少一个事务消息进行合并获得的。
解析模块702,用于对合并事务消息进行解析,获得该至少一个事务消息。
处理模块703,用于根据该至少一个事务消息中的每个事务消息进行该每个事务消息对应的事务处理。
可选的,事务消息处理装置700还包括:
持久化模块,用于将该合并事务消息持久化至日志文件中。
可选的,事务消息处理装置700还包括:
确定模块,用于确定对该每个事务消息对应的事务处理结果;
合并模块,用于将该至少一个事务消息对应的事务处理结果进行合并,获得总的事务处理结果。
可选的,事务消息处理装置700还包括:
发送模块,用于将该总的事务处理结果发送至该主事务协调器所在节点设备;该总的事务处理结果用于使得该主事务协调器所在的节点设备根据预先存储的该至少一个事务消息的标识和该总的事务处理结果确定该每个事务消息对应的事务处理结果,并向该客户端设备发送该每个事务消息对应的事务处理结果。
本申请实施例五提供的事务消息处理装置可执行上述图2至图5中任一所述的从事务协调器所在节点设备执行的事务消息处理方法,其有益效果可参见上述,在此不再赘述。
本申请实施例六还提供一种事务消息处理设备。图8为本申请实施例六提供的一种事务消息处理设备的结构示意图。如图8所示,该事务消息处理设备800可包括:接收器801、处理器802和发送器803。接收器801、处理器802和发送器803通过通信总线804连接。
其中,接收器801可以为事务消息处理设备接收外部设备发送的数据的通信端口,可包括:无线接收器、有线接收端口等。发送器803可以为事务消息处理设备向外部设备发送数据的通信端口,可包括:无线发送器、有线发送端口等。其中,无线接收器例如可包括:红外接收器、无线局域信号接收器、蓝牙接收器等。无线发送器例如可包括:红外发射器、无线局域发射器、蓝牙发射器等。有线接收端口及有线发送端口例如可包括:有限传输接口如通用串行总线(Universal Serial Bus,简称USB)接口、并行传输接口等。
处理器802,可以为中央处理器(Central Processing Unit,简称CPU)。处理器802还可以为其他通用处理器、数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信总线804可以包括数据总线、电源总线、控制总线和信号状态总线等。本实施例中为了清楚说明,在图8中将各种总线都示意为一条直线。
接收器801,用于接收客户端设备发送的至少一个事务消息。
处理器802,用于将该至少一个事务消息依次放入消息队列;对该消息队列中的该至少一个事务消息进行合并,获得合并事务消息;
发送器803,用于将该合并事务消息发送至从事务协调器所在节点设备。
可选的,处理器802具体用于根据一个协议头和该至少一个事务消息的数据信息,生成该合并事务消息。
可选的,至少一个事务消息包括:至少一个类型的事务消息;
处理器802具体用于将该至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域;对该一个域,和,该每个类型的所有事务消息的数据信息中该相同域外的其他域进行合并,生成该每个类型对应的事务数据消息;对该至少一个类型对应的事务数据消息进行合并,生成该至少一个事务消息的数据信息。
可选的,处理器802,还用于依次从该消息队列提取该至少一个事务消息,直至该消息队列为空;对提取到的该至少一个事务消息进行合并,获得该合并事务消息。
可选的,处理器802还用于启动该消息队列的等待锁;响应于该等待锁,依次从所述消息队列提取该至少一个事务消息,直至该消息队列为空。
该事务消息处理设备800还包括:存储器;
存储器通过通信总线与处理器802连接;
处理器802,还用于控制存储器将该合并事务消息持久化至日志文件中。
可选的,接收器801,还用于接收该从事务协调器所在节点设备返回的事务处理结果;该事务处理结果为该从事务协调器所在的节点设备根据接收到的事务消息进行该事务消息对应的事务处理的处理结果。
可选的,处理器802,还用于控制存储器记录该消息队列中该至少一个事务消息的标识。
可选的,处理器802,还用于根据该至少一个事务消息的标识和该事务处理结果,确定每个事务消息对应的事务处理结果。
可选的,发送器803,还用于向该客户端设备发送该每个事务消息对应的事务处理结果。
可选的,处理器802,还用于检测是否接收到关闭指令;响应于接收到的该关闭指令,确定该至少一个事务消息的处理完成。
可选的,如上所述的事务消息处理设备800还可包括存储有程序指令的存储器,处理器802在调用该程序指令时,可执行上述图2-图5中所述的事务消息处理方法中主事务协调器所在节点设备执行的所有步骤或部分步骤。
本申请实施例六还可提供一种处理器可读存储介质,该可读存储介质中存储有程序指令,该程序指令用于使处理器802执行上述图2-图5中所述的事务消息处理方法中主事务协调器所在节点设备执行的所有步骤或部分步骤。上述可读存储存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例六提供的事务消息处理设备可执行上述实施例一至实施例三中任一所述的主事务协调器所在节点设备执行的事务消息处理方法,其有益效果可参见上述,在此不再赘述。
本申请实施例七还提供一种事务消息处理设备。图9为本申请实施例七提供的一种事务消息处理设备的结构示意图。如图9所示,事务消息处理设备900可包括:接收器901和处理器902;其中,接收器901和处理器902通过通信总线903连接。
其中,接收器901可以为事务消息处理设备接收外部设备发送的数据的通信端口,可包括:无线接收器、有线接收端口等。其中,无线接收器例如可包括:红外接收器、无线局域信号接收器、蓝牙接收器等。有线接收端口例如可包括:有限传输接口如通用串行总线(Universal Serial Bus,简称USB)接口、并行传输接口等。
处理器902可以为CPU。处理器902还可以为其他通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信总线903可以包括数据总线、电源总线、控制总线和信号状态总线等。本实施例中为了清楚说明,在图9中将各种总线都示意为一条直线。
接收器901,用于接收主事务协调器所在节点设备发送的合并事务消息;该合并事务消息为该主事务协调器所在节点设备将接收到的客户端设备发送的至少一个事务消息依次放入消息队列,并对该消息队列中的该至少一个事务消息进行合并获得的。
处理器902,还用于对该合并事务消息进行解析,获得该至少一个事务消息;根据该至少一个事务消息中的每个事务消息进行该每个事务消息对应的事务处理。
可选的,该事务消息处理设备900还可包括:存储器;存储器通过通信总线903与处理器902连接。
处理器902,控制存储器将该合并事务消息持久化至日志文件中。
可选的,处理器902还用于确定对该每个事务消息对应的事务处理结果;将该至少一个事务消息对应的事务处理结果进行合并,获得总的事务处理结果。
可选的,事务消息处理设备900还可包括:
发送器,通过通信总线903与处理器902连接将该总的事务处理结果发送至该主事务协调器所在节点设备;该总的事务处理结果用于使得该主事务协调器所在的节点设备根据预先存储的该至少一个事务消息的标识和该总的事务处理结果确定该每个事务消息对应的事务处理结果,并向该客户端设备发送该每个事务消息对应的事务处理结果。
可选的,如上所述的事务消息处理设备900还可包括存储有程序指令的存储器,处理器902在调用该程序指令时,可执行上述图2-图5中所述的事务消息处理方法中从事务协调器所在节点设备执行的所有步骤或部分步骤。
本申请实施例七还可提供一种处理器可读存储介质,该可读存储介质中存储有程序指令,该程序指令用于使处理器902执行上述图2-图5中所述的事务消息处理方法中从事务协调器所在节点设备执行的所有步骤或部分步骤。上述可读存储存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例七提供的事务消息处理装置可执行上述图2至图5中任一所述的从事务协调器所在节点设备执行的事务消息处理方法,其有益效果可参见上述,在此不再赘述。
本申请实施例八还提供一种事务消息处理系统。图10为本发明实施例八提供的一种事务消息处理系统的结构示意图。如图10所示,事务消息处理系统可包括:客户端设备1001、主事务协调器所在节点设备1002和从事务协调器所在节点设备1003。其中,客户端设备1001与主事务协调器所在节点设备1002连接,主事务协调器所在节点设备1002与从事务协调器所在节点设备1003连接。客户端设备1001还与从事务协调器所在节点设备1003连接。主事务协调器所在节点设备1002为接收到客户端设备1001发送的事务消息的节点设备。
其中,主事务协调器所在节点设备1002,用于接收客户端设备1001发送的至少一个事务消息,将该至少一个事务消息放入消息队列,对该消息队列中的该至少一个事务消息进行合并,获得合并事务消息,将该合并事务消息发送至从事务协调器所在节点设备1003。
从事务协调器所在节点设备1003,用于接收主事务协调器所在节点设备1002发送的该合并事务消息,对合并事务消息进行解析,获得该至少一个事务消息,根据该至少一个事务消息中的每个事务消息进行该每个事务消息对应的事务处理。
具体地,主事务协调器所在节点设备1002为上述图8所示的事务消息处理设备,从事务协调器所在节点设备1003为上述图9所示的事务消息处理设备。
可选的,主事务协调器所在节点设备1002可执行述图2至图5中任一所述的主事务协调器所在节点设备执行的事务消息处理方法,从事务协调器所在节点设备1003可执行上述图2至图5中任一所述的从事务协调器所在节点设备执行的事务消息处理方法。
本申请实施例八提供的事务消息处理系统所包括的主事务协调器所在节点设备可执行上述图2至图5中任一所述的主事务协调器所在节点设备执行的事务消息处理方法,从事务协调器所在节点设备可执行上述图2至图5中任一所述的从事务协调器所在节点设备执行的事务消息处理方法,其有益效果可参见上述,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (21)
1.一种事务消息处理系统,其特征在于,包括:客户端设备、主事务协调器所在节点设备和从事务协调器所在节点设备;其中,所述客户端设备与所述主事务协调器所在节点设备连接,所述主事务协调器所在节点设备与所述从事务协调器所在节点设备连接,所述客户端设备还与所述从事务协调器所在节点设备连接;所述主事务协调器所在节点设备为接收到所述客户端设备发送的事务消息的节点设备;
所述主事务协调器所在节点设备,用于接收所述客户端设备发送的至少一个事务消息,将所述至少一个事务消息放入消息队列,对所述消息队列中的所述至少一个事务消息进行合并,获得合并事务消息,将所述合并事务消息发送至所述从事务协调器所在节点设备,其中,所述至少一个事务消息包括:至少一个类型的事务消息;
所述从事务协调器所在节点设备,用于接收所述主事务协调器所在节点设备发送的所述合并事务消息,对所述合并事务消息进行解析,获得所述至少一个事务消息,根据所述至少一个事务消息中的每个事务消息进行所述每个事务消息对应的事务处理;
所述主事务协调器所在节点设备,具体用于:根据一个协议头和所述至少一个事务消息的数据信息,生成所述合并事务消息;
所述主事务协调器所在节点设备在根据一个协议头和所述至少一个事务消息的数据信息,生成所述合并事务消息之前,所述主事务协调器所在节点设备还用于:将所述至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域;对所述一个域,和,所述每个类型的所有事务消息的数据信息中所述相同域外的其他域进行合并,生成所述每个类型对应的事务数据消息;对所述至少一个类型对应的事务数据消息进行合并,生成所述至少一个事务消息的数据信息。
2.一种事务消息处理方法,其特征在于,包括:
接收客户端设备发送的至少一个事务消息;
将所述至少一个事务消息放入消息队列;
对所述消息队列中的所述至少一个事务消息进行合并,获得合并事务消息;
将所述合并事务消息发送至从事务协调器所在节点设备;
所述对所述消息队列中的所述至少一个事务消息进行合并,获得合并事务消息,包括:根据一个协议头和所述至少一个事务消息的数据信息,生成所述合并事务消息;
所述至少一个事务消息包括:至少一个类型的事务消息;所述根据一个协议头和所述至少一个事务消息的数据信息,生成所述合并事务消息之前,所述方法还包括:将所述至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域;对所述一个域,和,所述每个类型的所有事务消息的数据信息中所述相同域外的其他域进行合并,生成所述每个类型对应的事务数据消息;对所述至少一个类型对应的事务数据消息进行合并,生成所述至少一个事务消息的数据信息。
3.根据权利要求2所述的方法,其特征在于,所述将所述至少一个事务消息放入消息队列包括:
将所述至少一个事务消息按照接收的时间顺序,依次放入所述消息队列。
4.根据权利要求3所述的方法,其特征在于,所述对所述消息队列中的所述至少一个事务消息进行合并,获得合并事务消息,包括:
按照所述接收的时间顺序,依次从所述消息队列提取所述至少一个事务消息,直至所述消息队列为空;
对提取到的所述至少一个事务消息进行合并,获得所述合并事务消息。
5.根据权利要求4所述的方法,其特征在于,所述依次从所述消息队列提取所述至少一个事务消息,直至所述消息队列为空,包括:
启动所述消息队列的等待锁;
响应于所述等待锁,依次从所述消息队列提取所述至少一个事务消息,直至所述消息队列为空。
6.根据权利要求2所述的方法,其特征在于,所述将所述合并事务消息发送至从事务协调器所在的节点设备之前,所述方法还包括:
将所述合并事务消息持久化至日志文件中。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收所述从事务协调器所在节点设备返回的事务处理结果;所述事务处理结果为所述从事务协调器所在的节点设备根据接收到的事务消息进行所述事务消息对应的事务处理的处理结果。
8.根据权利要求7所述的方法,其特征在于,所述将所述合并事务消息发送至从事务协调器所在的节点设备之前,所述方法还包括:
记录所述消息队列中所述至少一个事务消息的标识。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括;
根据所述至少一个事务消息的标识和所述事务处理结果,确定每个事务消息对应的事务处理结果。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
向所述客户端设备发送所述每个事务消息对应的事务处理结果。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
检测是否接收到关闭指令;
响应于接收到的所述关闭指令,确定所述至少一个事务消息的处理完成。
12.根据权利要求2所述的方法,其特征在于,所述至少一个事务消息中每个事务消息为如下任一:
事务创建消息、事务更新消息、事务提交消息和事务回滚消息;
所述事务创建消息包括:全局事务创建消息,和/或,事务分支创建消息;
所述事务更新消息包括:全局事务状态更新消息,和/或,事务分支状态更新消息;
所述事务提交消息包括:全局事务提交消息;
所述事务回滚消息包括:全局事务回滚消息。
13.一种事务消息处理装置,其特征在于,包括:
接收模块,用于接收客户端设备发送的至少一个事务消息;
放入模块,用于将所述至少一个事务消息放入消息队列;
合并模块,用于对所述消息队列中的所述至少一个事务消息进行合并,获得合并事务消息,其中,所述至少一个事务消息包括:至少一个类型的事务消息;
发送模块,用于将所述合并事务消息发送至从事务协调器所在节点设备;
所述合并模块,具体用于:根据一个协议头和所述至少一个事务消息的数据信息,生成所述合并事务消息;
所述合并模块在所述根据一个协议头和所述至少一个事务消息的数据信息,生成所述合并事务消息之前,还用于将该至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域;对该一个域,和,该每个类型的所有事务消息的数据信息中该相同域外的其他域进行合并,生成该每个类型对应的事务数据消息;对该至少一个类型对应的事务数据消息进行合并,生成该至少一个事务消息的数据信息。
14.一种事务消息处理设备,其特征在于,包括:接收器、处理器和发送器;其中,所述接收器、所述处理器和所述发送器通过通信总线连接;
所述接收器,用于接收客户端设备发送的至少一个事务消息,其中,所述至少一个事务消息包括:至少一个类型的事务消息;
所述处理器,用于将所述至少一个事务消息放入消息队列;对所述消息队列中的所述至少一个事务消息进行合并,获得合并事务消息;
所述发送器,用于将所述合并事务消息发送至从事务协调器所在节点设备;
所述处理器具体用于根据一个协议头和该至少一个事务消息的数据信息,生成该合并事务消息;
所述处理器在所述根据一个协议头和所述至少一个事务消息的数据信息,生成所述合并事务消息之前,还用于将该至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域;对该一个域,和,该每个类型的所有事务消息的数据信息中该相同域外的其他域进行合并,生成该每个类型对应的事务数据消息;对该至少一个类型对应的事务数据消息进行合并,生成该至少一个事务消息的数据信息。
15.一种事务处理方法,其特征在于,包括:
接收主事务协调器所在节点设备发送的合并事务消息;所述合并事务消息为所述主事务协调器所在节点设备将接收到的客户端设备发送的至少一个事务消息放入消息队列,并对所述消息队列中的所述至少一个事务消息进行合并获得的;
对所述合并事务消息进行解析,获得所述至少一个事务消息,所述至少一个事务消息包括:至少一个类型的事务消息;
根据所述至少一个事务消息中的每个事务消息进行所述每个事务消息对应的事务处理;
所述合并事务消息具体为根据一个协议头和所述至少一个事务消息的数据信息进行合并获得的;
所述合并事务消息具体为根据一个协议头和所述至少一个事务消息的数据信息进行合并获得之前,所述方法还包括:将所述至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域;对所述一个域,和,所述每个类型的所有事务消息的数据信息中所述相同域外的其他域进行合并,生成所述每个类型对应的事务数据消息;对所述至少一个类型对应的事务数据消息进行合并,生成所述至少一个事务消息的数据信息。
16.根据权利要求15所述的方法,其特征在于,所述对所述合并事务消息进行解析,获得所述至少一个事务消息之前,所述方法还包括:
将所述合并事务消息持久化至日志文件中。
17.根据权利要求15所述的方法,其特征在于,所述方法还包括:
确定对所述每个事务消息对应的事务处理结果;
将所述至少一个事务消息对应的事务处理结果进行合并,获得总的事务处理结果。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
将所述总的事务处理结果发送至所述主事务协调器所在节点设备;所述总的事务处理结果用于使得所述主事务协调器所在的节点设备根据预先存储的所述至少一个事务消息的标识和所述总的事务处理结果确定所述每个事务消息对应的事务处理结果,并向所述客户端设备发送所述每个事务消息对应的事务处理结果。
19.根据权利要求15-18中任一项所述的方法,其特征在于,所述每个事务消息为如下任一:
事务创建消息、事务更新消息、事务提交消息和事务回滚消息;
所述事务创建消息包括:全局事务创建消息,和/或,事务分支创建消息;
所述事务更新消息包括:全局事务状态更新消息,和/或,事务分支状态更新消息;
所述事务提交消息包括:全局事务提交消息;
所述事务回滚消息包括:全局事务回滚消息。
20.一种事务消息处理装置,其特征在于,包括:
接收模块,用于接收主事务协调器所在节点设备发送的合并事务消息;所述合并事务消息为所述主事务协调器所在节点设备将接收到的客户端设备发送的至少一个事务消息放入消息队列,并对所述消息队列中的所述至少一个事务消息进行合并获得的,所述至少一个事务消息包括:至少一个类型的事务消息;
解析模块,用于对所述合并事务消息进行解析,获得所述至少一个事务消息;
处理模块,用于根据所述至少一个事务消息中的每个事务消息进行所述每个事务消息对应的事务处理;
所述合并事务消息具体为根据一个协议头和所述至少一个事务消息的数据信息进行合并获得的;
所述合并事务消息具体为根据一个协议头和所述至少一个事务消息的数据信息进行合并获得之前,所述接收模块还用于:将所述至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域;对所述一个域,和,所述每个类型的所有事务消息的数据信息中所述相同域外的其他域进行合并,生成所述每个类型对应的事务数据消息;对所述至少一个类型对应的事务数据消息进行合并,生成所述至少一个事务消息的数据信息。
21.一种事务消息处理设备,其特征在于,包括:接收器和处理器;其中,所述接收器和所述处理器通过通信总线连接;
所述接收器,用于接收主事务协调器所在节点设备发送的合并事务消息;所述合并事务消息为所述主事务协调器所在节点设备将接收到的客户端设备发送的至少一个事务消息放入消息队列,并对所述消息队列中的所述至少一个事务消息进行合并获得的;
所述处理器,还用于对所述合并事务消息进行解析,获得所述至少一个事务消息;根据所述至少一个事务消息中的每个事务消息进行所述每个事务消息对应的事务处理;
所述合并事务消息具体为根据一个协议头和所述至少一个事务消息的数据信息进行合并获得的;
所述合并事务消息具体为根据一个协议头和所述至少一个事务消息的数据信息进行合并获得之前,所述接收器还用于:将所述至少一个类型中每个类型的所有事务消息的数据信息中的相同域合并为一个域;对所述一个域,和,所述每个类型的所有事务消息的数据信息中所述相同域外的其他域进行合并,生成所述每个类型对应的事务数据消息;对所述至少一个类型对应的事务数据消息进行合并,生成所述至少一个事务消息的数据信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610708579.6A CN107766127B (zh) | 2016-08-23 | 2016-08-23 | 事务消息处理方法、装置、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610708579.6A CN107766127B (zh) | 2016-08-23 | 2016-08-23 | 事务消息处理方法、装置、设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107766127A CN107766127A (zh) | 2018-03-06 |
CN107766127B true CN107766127B (zh) | 2021-07-06 |
Family
ID=61264139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610708579.6A Active CN107766127B (zh) | 2016-08-23 | 2016-08-23 | 事务消息处理方法、装置、设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107766127B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388503A (zh) * | 2018-09-20 | 2019-02-26 | 阿里巴巴集团控股有限公司 | 一种事件处理方法及装置 |
CN110245006B (zh) * | 2019-05-07 | 2023-05-02 | 深圳壹账通智能科技有限公司 | 区块链事务的处理方法、装置、设备及存储介质 |
CN110109936B (zh) * | 2019-05-13 | 2020-12-25 | 四川新网银行股份有限公司 | 一种规避数据库锁等待以及事务合并提交的方法 |
CN110333935B (zh) * | 2019-06-05 | 2022-12-02 | 创新先进技术有限公司 | 事务请求处理方法及装置 |
CN112835687B (zh) * | 2021-01-22 | 2023-05-26 | 恒生电子股份有限公司 | 一种计算机事务处理方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319203A (zh) * | 1998-07-22 | 2001-10-24 | 艾利森电话股份有限公司 | 涉及数据库中事务处理的方法 |
US6529932B1 (en) * | 1998-04-01 | 2003-03-04 | Microsoft Corporation | Method and system for distributed transaction processing with asynchronous message delivery |
US7730095B2 (en) * | 2006-03-01 | 2010-06-01 | Microsoft Corporation | Controlling transactions in accordance with role based security |
CN102087615A (zh) * | 2009-12-03 | 2011-06-08 | 国际商业机器公司 | 消息队列中逻辑关联的消息的自动合并 |
US7975138B2 (en) * | 2007-07-18 | 2011-07-05 | Oracle International Corporation | Systems and methods for mutually authenticated transaction coordination messages over insecure connections |
CN102291324A (zh) * | 2011-06-28 | 2011-12-21 | 北京神州泰岳软件股份有限公司 | 高并发业务请求处理方法 |
US8725708B2 (en) * | 2006-03-29 | 2014-05-13 | International Business Machines Corporation | Resolving a unit of work |
CN104951948A (zh) * | 2015-06-09 | 2015-09-30 | 广西家之宝网络科技有限公司 | 基于分布式事务协调与控制的b2b2c电商平台 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100659971B1 (ko) * | 2003-12-26 | 2006-12-22 | 한국전자통신연구원 | 웹서비스 트랜잭션의 자동중단 처리시스템 및 방법 |
US9667475B2 (en) * | 2014-02-28 | 2017-05-30 | Red Hat, Inc. | Systems and methods for communicating information of participants registered with a sub-coordinator during distributed transaction processing |
-
2016
- 2016-08-23 CN CN201610708579.6A patent/CN107766127B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6529932B1 (en) * | 1998-04-01 | 2003-03-04 | Microsoft Corporation | Method and system for distributed transaction processing with asynchronous message delivery |
CN1319203A (zh) * | 1998-07-22 | 2001-10-24 | 艾利森电话股份有限公司 | 涉及数据库中事务处理的方法 |
US7730095B2 (en) * | 2006-03-01 | 2010-06-01 | Microsoft Corporation | Controlling transactions in accordance with role based security |
US8725708B2 (en) * | 2006-03-29 | 2014-05-13 | International Business Machines Corporation | Resolving a unit of work |
US7975138B2 (en) * | 2007-07-18 | 2011-07-05 | Oracle International Corporation | Systems and methods for mutually authenticated transaction coordination messages over insecure connections |
CN102087615A (zh) * | 2009-12-03 | 2011-06-08 | 国际商业机器公司 | 消息队列中逻辑关联的消息的自动合并 |
CN102291324A (zh) * | 2011-06-28 | 2011-12-21 | 北京神州泰岳软件股份有限公司 | 高并发业务请求处理方法 |
CN104951948A (zh) * | 2015-06-09 | 2015-09-30 | 广西家之宝网络科技有限公司 | 基于分布式事务协调与控制的b2b2c电商平台 |
Non-Patent Citations (1)
Title |
---|
移动数据库事务模型的研究及实现;江华;《中国优秀博硕士学位论文全文数据库 (硕士) 信息科技辑》;20061215;文章第7-10、20-29页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107766127A (zh) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766127B (zh) | 事务消息处理方法、装置、设备及系统 | |
CN110622478B (zh) | 数据同步处理的方法和装置 | |
RU2419986C2 (ru) | Объединение многострочных протокольных вхождений | |
CN108833950B (zh) | 一种弹幕消息下发方法、服务器、系统和存储介质 | |
US10996996B2 (en) | Implementing multiple content management service operations | |
CN108023808A (zh) | 应用程序中的消息分发方法及装置 | |
CN111694645B (zh) | 分布式任务调度系统中任务处理方法及相关装置 | |
CN110912990B (zh) | 一种共识周期的更新方法及相关设备 | |
JP5479710B2 (ja) | データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法 | |
CN109327499B (zh) | 业务接口的管理方法及装置、存储介质、终端 | |
CN110750365A (zh) | 一种远程过程调用方法、系统、终端及存储介质 | |
CN112433872A (zh) | 一种接口请求超时提醒方法、系统及存储介质 | |
CN111447273A (zh) | 云处理系统及基于云处理系统的数据处理方法 | |
US20160261719A1 (en) | Information processing system, control program, and control method | |
CN113852610B (zh) | 报文处理方法、装置、计算机设备和存储介质 | |
US9092779B2 (en) | Heuristics processing | |
CN109034768B (zh) | 财务调拨方法、装置、计算机设备和存储介质 | |
CN107977284A (zh) | 一种数据处理方法、装置、服务器和介质 | |
CN111756836A (zh) | 一种基于事件管理模型的信息发送方法及装置 | |
CN108288135B (zh) | 系统兼容方法及装置、计算机可读存储介质及电子设备 | |
CN113672248A (zh) | 一种补丁获取方法、装置、服务端及存储介质 | |
CN113032477A (zh) | 基于gtid的长距离数据同步方法、装置及计算设备 | |
US9674282B2 (en) | Synchronizing SLM statuses of a plurality of appliances in a cluster | |
US20230385128A1 (en) | Cross service lock handling | |
US20020083135A1 (en) | Memory management for optimal storage of data of any size in memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |