CN105786592A - 一种分布式事务的处理方法及装置 - Google Patents
一种分布式事务的处理方法及装置 Download PDFInfo
- Publication number
- CN105786592A CN105786592A CN201410778604.9A CN201410778604A CN105786592A CN 105786592 A CN105786592 A CN 105786592A CN 201410778604 A CN201410778604 A CN 201410778604A CN 105786592 A CN105786592 A CN 105786592A
- Authority
- CN
- China
- Prior art keywords
- submission
- participant
- node
- distributed transaction
- identification information
- 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.)
- Pending
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种分布式事务的处理方法及装置,涉及数据库领域,解决现有技术中分布式事务处理时协调者性能瓶颈的问题,该处理方法应用于分布式数据库中的节点,包括:获取用户发送的对已开启的分布式事务的提交请求;根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点;根据所述提交请求生成提交信息,并将所述提交信息发送给所述辅助节点;接收所述辅助节点返回的,根据所述提交信息对所述分布式事务的处理结果。本发明的方案解决了分布式事务的协调者性能瓶颈的问题,提高了系统的响应速率和利用率。
Description
技术领域
本发明涉及数据库领域,特别涉及一种分布式事务的处理方法及装置。
背景技术
在大数据时代,数据开始呈现出了规模大、分布性等特点,具有这些特性的数据已经远远超出了单机数据库的处理能力。所以需要开发分布式数据库系统,以满足有效处理大数据的需求。
事务是数据库系统很重要的一个特性,单机数据库事务具有原子性、一致性、隔离性和持久性。在分布式数据库系统的开发过程中,如何保证分布式事务具有单机数据库事务的四个特性,是一个非常关键的问题。
两阶段提交协议是目前分布式事务实现的基本依据,但是,传统的两阶段提交协议不能有效解决协调者性能瓶颈的问题。
发明内容
本发明要解决的技术问题是提供一种分布式事务的处理方法及装置,解决现有技术中两阶段提交协议在分布式事务实现时,不能有效解决协调者节点性能瓶颈的问题。
为解决上述技术问题,本发明的实施例提供一种分布式事务的处理方法,应用于分布式数据库中的节点,所述处理方法包括:
获取用户发送的对已开启的分布式事务的提交请求;
根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点;
根据所述提交请求生成提交信息,并将所述提交信息发送给所述辅助节点;
接收所述辅助节点返回的,根据所述提交信息对所述分布式事务的处理结果。
其中,所述根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点,包括:
根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取负载在预设范围内的一节点作为所述辅助节点。
其中,所述根据所述提交请求生成提交信息,并将所述提交信息发送给所述辅助节点,包括:
根据所述提交请求生成携带有标识信息的提交信息,并将所述提交信息发送给所述辅助节点,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息。
其中,所述获取用户发送的对已开启的分布式事务的提交请求之后,还包括:
根据所述提交请求,在所述节点的负载未超过所述预设值时,生成携带有标识信息的预提交指令,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息;
将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
接收所述第二参与者根据所述中止指令返回的中止结果。
为解决上述技术问题,本发明的实施例还提供一种分布式事务的处理装置,应用于分布式数据库中的节点,所述处理装置包括:
获取模块,用于获取用户发送的对已开启的分布式事务的提交请求;
选取模块,用于根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点;
第一发送模块,用于根据所述提交请求生成提交信息,并将所述提交信息发送给所述辅助节点;
第一接收模块,用于接收所述辅助节点返回的,根据所述提交信息对所述分布式事务的处理结果。
其中,所述选取模块包括:
选取子模块,用于根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取负载在预设范围内的一节点作为所述辅助节点。
其中,所述第一发送模块包括:
第一发送子模块,用于根据所述提交请求生成携带有标识信息的提交信息,并将所述提交信息发送给所述辅助节点,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息。
其中,所述处理装置还包括:
第一生成模块,用于根据所述提交请求,在所述节点的负载未超过所述预设值时,生成携带有标识信息的预提交指令,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息;
第二发送模块,用于将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
第三发送模块,用于若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
第二接收模块,用于接收所述第二参与者根据所述中止指令返回的中止结果。
为解决上述技术问题,本发明的实施例还提供一种分布式事务的处理方法,应用于分布式数据库中的节点,所述处理方法包括:
接收第一节点发送的提交信息,所述提交信息为所述第一节点接收到用户发送的对已开启的分布式事务的提交请求后,判断自身负载超过预设值时,根据所述提交请求生成的提交信息;
根据所述提交信息对所述分布式事务进行处理,并将处理结果返回给所述第一节点。
其中,所述根据所述提交信息对所述分布式事务进行处理,并将处理结果返回给所述第一节点,包括:
根据所述提交信息生成携带有标识信息的预提交指令,所述标识信息为所述提交信息携带的、与所述分布式事务对应的标识信息;
将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
接收所述第二参与者根据所述中止指令返回的中止结果,并将所述中止结果返回给所述协调者。
为解决上述技术问题,本发明的实施例还提供一种分布式事务的处理装置,应用于分布式数据库中的节点,所述处理装置包括:
第三接收模块,用于接收第一节点发送的提交信息,所述提交信息为所述第一节点接收到用户发送的对已开启的分布式事务的提交请求后,判断自身负载超过预设值时,根据所述提交请求生成的提交信息;
处理模块,用于根据所述提交信息对所述分布式事务进行处理,并将处理结果返回给所述第一节点。
其中,所述处理模块包括:
第二生成模块,用于根据所述提交信息生成携带有标识信息的预提交指令,所述标识信息为所述提交信息携带的、与所述分布式事务对应的标识信息;
第四发送模块,用于将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
第五发送模块,用于若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
第四接收模块,用于接收所述第二参与者根据所述中止指令返回的中止结果,并将所述中止结果返回给所述协调者。
本发明的上述技术方案的有益效果如下:
本发明实施例的分布式事务的处理方法,应用于分布式数据库中的节点,首先获取用户发送的对已开启的分布式事务的提交请求;然后根据提交请求,在节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点;再根据提交请求生成提交信息,并将提交信息发送给辅助节点;最后接收辅助节点返回的,根据提交信息对分布式事务的处理结果。从而在协调者节点负载过重时,通过辅助节点完成分布式事务的提交过程,有效解决了较多参与者导致的协调者性能瓶颈的问题,提高了系统的响应速率和利用率。
附图说明
图1为本发明分布式事务的处理方法的第一流程图;
图2为现有分布式事务两阶段提交协议的方法流程图;
图3为本发明分布式事务的处理方法一具体实施例第一示意图;
图4为本发明分布式事务的处理方法一具体实施例第二示意图;
图5为本发明分布式事务的处理装置的第一结构示意图;
图6为本发明分布式事务的处理方法的第二流程图;
图7为本发明分布式事务的处理装置的第二结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
在分布式数据库系统下,一个事务需要一个或者多个节点参与,每个节点称为参与者。选取其中的一个参与者作为协调者,用于接收用户的请求,开启和结束一个分布式事务。各个参与者都有一个自己的本地事务,一个分布式事务由所有参与者的本地事务组成。
为了保证分布式事务的正确性,所有参与者必须做到要么全部提交,要么全部不提交。两阶段提交协议可以保证参与者事务的一致性,全部提交或者全部不提交。如图2所示,传统两阶段提交协议的工作流程为:协调者发送“预提交”请求到参与者,进入预提交阶段,等待参与者的响应;参与者收到“预提交”请求后,对本地事务进行预提交,然后发送“提交”或者“不提交”响应到协调者;协调者根据收到的响应,向参与者发送“提交”或者“中止”的请求,进入提交阶段,等待参与者响应;参与者收到请求,进行本地“提交”或者“中止”,然后发送“提交”或者“中止”执行结束的响应给协调者;协调者收到响应,结束分布式事务。
但上述传统两阶段提交协议中,协调者需要和所有参与者进行通信,当参与者较多时,协调者会成为性能瓶颈。
本发明实施例的分布式事务的处理方法,有效解决了较多参与者导致的协调者性能瓶颈的问题,提高了系统的响应速度和利用率。
如图1所示,本发明实施例的分布式事务的处理方法,应用于分布式数据库中的节点,所述处理方法包括:
步骤11,获取用户发送的对已开启的分布式事务的提交请求;
步骤12,根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点;
步骤13,根据所述提交请求生成提交信息,并将所述提交信息发送给所述辅助节点;
步骤14,接收所述辅助节点返回的,根据所述提交信息对所述分布式事务的处理结果。
本发明实施例的分布式事务的处理方法,首先获取用户发送的对分布式事务的提交请求;然后根据提交请求,在节点的负载超过预设值时,在预先保存的节点集群中选取辅助节点;再将根据提交请求生成的提交信息发送给辅助节点;最后接收辅助节点返回的对分布式事务的处理结果。从而在协调者节点负载过重时,通过辅助节点完成分布式事务的提交过程,有效解决了传统两阶段提交协议中较多参与者导致的协调者性能瓶颈的问题,提高了系统的响应速率和利用率。
优选的,上述步骤12的步骤可以包括:
步骤121,根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取负载在预设范围内的一节点作为所述辅助节点。
此时,通过在集群中选取负载在预设范围的节点为辅助节点,使辅助节点的负载不会过重,保证了辅助节点完成整个分布式事务提交过程的高效性,从而提高了系统的响应速率和利用率。
具体的,可根据预先保存的节点集群元数据信息,以询问的方式,在集群中选取一负载较轻的节点,作为协调者的辅助节点。
优选的,上述步骤13的步骤可以包括:
步骤131,根据所述提交请求生成携带有标识信息的提交信息,并将所述提交信息发送给所述辅助节点,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息。
此时,通过标识信息可有效识别与标识信息对应的分布式事务,且可同步分布式事务对应的所有本地事务,保证了对分布式事务处理的准确性和高效性。且标识信息可携带在具体的任务消息中,减少了消息传送的次数,提高了系统的处理效率。
具体的,可在协调者根据用户发送的开启请求,开启一分布式事务时,生成与所述分布式事务对应的标识信息,如可用群体身份GID作为所述标识信息,用于同步该分布式事务所有的本地事务。该GID会被具体的任务消息携带发送给参与者,省去了针对分布式事务单独发送开启消息到参与者的步骤,提高了系统的工作效率。
对于如图2所示的传统两阶段提交协议,还存在如下问题:当分布式事务的一些参与者出现故障时,协调者会进行超时处理,但是这个超时时间不好确定,时间短了,会导致正确的事务中断,时间长了,事务会被阻塞,影响整个系统的性能;协调者需要与参与者进行多次通信,而过多的通信会提高非正常阻塞情况的发生,导致系统性能的下降。
为解决上述问题,本发明的具体实施例中,上述步骤12之后,还可以包括:
步骤15,根据所述提交请求,在所述节点的负载未超过所述预设值时,生成携带有标识信息的预提交指令,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息;
步骤16,将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
步骤17,若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
步骤18,接收所述第二参与者根据所述中止指令返回的中止结果。
此时,在协调者节点的负载未超过预设值时,生成携带有标识信息的预提交指令并发送给分布式事务的参与者,省去了针对分布式事务发送开启消息的步骤;同时开启一线程监测参与者的工作状态,若监测到第一参与者出现故障,则在接收到第一参与者返回的不提交响应及未出现故障的第二参与者返回的提交响应后,立马对第一参与者进行中断处理,释放占用的资源,而不用死等一段时间后进行超时处理,减少了等待时间,提高了系统响应速率。
另外,第一参与者收到协调者发送的预提交指令后,由于本地事务异常决定不提交时,可以直接发送不提交响应给协调者,然后自行结束事务,协调者不用发送中止指令给第一参与者,减少了通信的次数,避免了过多的通信提高非正常阻塞情况的发生,且减轻了网络负载,提高了系统性能。
下面对本发明的具体实施例举例说明如下。
如图3、图4所示,本发明实施例的分布式事务的处理方法,应用于分布式数据库中的节点,该节点作为协调者,首先针对已开启的分布式事务完成具体的任务(如查询、更新)后,获取用户发送的对分布式事务的提交请求;然后在协调者负载超过预设值时,根据预先保存的节点集群数据信息,以查询的方式,选取一负载较轻的节点为辅助节点;再根据提交请求生成携带有标识信息的提交信息,并将提交信息发送给辅助节点,其中标识信息为开启分布式事务时,生成的与分布式事务对应的标识信息(如GID),该标识信息可被具体的任务消息携带发送给参与者,用于同步参与者的本地事务;最后接收辅助节点返回的,根据提交信息对分布式事务的处理结果。从而在协调者负载过重时,通过辅助节点完成分布式事务的提交过程,有效解决了较多参与者导致的协调者性能瓶颈的问题,提高了系统的响应速率和利用率。
其中,若根据提交请求,协调者的负载未超过预设值,则生成携带有标识信息的预提交指令;然后将预提交指令发送给分布式事务所有的参与者,并开启一线程监测参与者的工作状态;若监测到第一参与者出现故障,则在接收到第一参与者根据预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使第一参与者中断分布式事务,并向第二参与者发送中止指令;最后,接收第二参与者根据中止指令返回的中止结果。从而在第一参与者故障时,立马对第一参与者进行中断处理,释放占用的资源,而不用死等一段时间后进行超时处理,减少了等待时间,提高了系统响应速率。且协调者不用发送中止指令给第一参与者,减少了通信的次数,避免了过多的通信提高非正常阻塞情况的发生,且减轻了网络负载,提高了系统性能。
其中,对于本地事务的故障以及恢复,依然采用预写式日志来保证。另外在协调者上创建一个文件,用来记录故障导致的不一致分布式事务,包括GID和一些状态标示,这样用户就可以明确地看到哪些事务出现了异常,以及如何应对。
本发明实施例的分布式事务的处理方法,有效地降低了分布式数据库系统中分布式事务的非正常阻塞情况,同时解决了协调者性能瓶颈的问题,减少了通信开销,提高了整个集群的响应速度和利用率。
如图5所示,本发明的实施例还提供了一种分布式事务的处理装置,应用于分布式数据库中的节点,所述处理装置包括:
获取模块,用于获取用户发送的对已开启的分布式事务的提交请求;
选取模块,用于根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点;
第一发送模块,用于根据所述提交请求生成提交信息,并将所述提交信息发送给所述辅助节点;
第一接收模块,用于接收所述辅助节点返回的,根据所述提交信息对所述分布式事务的处理结果。
本发明实施例的分布式事务的处理装置,在协调者节点负载过重时,通过辅助节点完成分布式事务的提交过程,有效解决了传统两阶段提交协议中较多参与者导致的协调者性能瓶颈的问题,提高了系统的响应速率和利用率。
优选的,所述选取模块可以包括:
选取子模块,用于根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取负载在预设范围内的一节点作为所述辅助节点。
此时,通过在集群中选取负载在预设范围的节点为辅助节点,使辅助节点的负载不会过重,保证了辅助节点完成整个分布式事务提交过程的高效性,从而提高了系统的响应速率和利用率。
优选的,所述第一发送模块可以包括:
第一发送子模块,用于根据所述提交请求生成携带有标识信息的提交信息,并将所述提交信息发送给所述辅助节点,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息。
此时,通过标识信息可有效识别与标识信息对应的分布式事务,且可同步分布式事务对应的所有本地事务,保证了对分布式事务处理的准确性和高效性。且标识信息可携带在具体的任务消息中,减少了消息传送的次数,提高了系统的处理效率。
本发明的具体实施例中,所述处理装置还可以包括:
第一生成模块,用于根据所述提交请求,在所述节点的负载未超过所述预设值时,生成携带有标识信息的预提交指令,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息;
第二发送模块,用于将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
第三发送模块,用于若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
第二接收模块,用于接收所述第二参与者根据所述中止指令返回的中止结果。
此时,在协调者节点的负载未超过预设值时,生成携带有标识信息的预提交指令并发送给分布式事务的参与者,省去了针对分布式事务发送开启消息的步骤;同时开启一线程监测参与者的工作状态,若监测到第一参与者出现故障,则在接收到第一参与者返回的不提交响应及未出现故障的第二参与者返回的提交响应后,立马对第一参与者进行中断处理,释放占用的资源,而不用死等一段时间后进行超时处理,减少了等待时间,提高了系统响应速率。
另外,第一参与者收到协调者发送的预提交指令后,由于本地事务异常决定不提交时,可以直接发送不提交响应给协调者,然后自行结束事务,协调者不用发送中止指令给第一参与者,减少了通信的次数,避免了过多的通信提高非正常阻塞情况的发生,且减轻了网络负载,提高了系统性能。
本发明实施例的分布式事务的处理装置,有效地降低了分布式数据库系统中分布式事务的非正常阻塞情况,同时解决了协调者性能瓶颈的问题,减少了通信开销,提高了整个集群的响应速度和利用率。
需要说明的是,该分布式事务的处理装置是与上述分布式事务的处理方法相对应的装置,其中上述方法实施例中所有实现方式均适用于该装置的实施例中,也能达到同样的技术效果。
如图3、图6所示,本发明的实施例还提供了一种分布式事务的处理方法,应用于分布式数据库中的节点,所述处理方法包括:
步骤21,接收第一节点发送的提交信息,所述提交信息为所述第一节点接收到用户发送的对已开启的分布式事务的提交请求后,判断自身负载超过预设值时,根据所述提交请求生成的提交信息;
步骤22,根据所述提交信息对所述分布式事务进行处理,并将处理结果返回给所述第一节点。
本发明实施例的分布式事务的处理方法,首先接收第一节点(即协调者)发送的提交信息,然后根据提交信息对分布式事务进行处理,并将处理结果返回给第一节点。从而在第一节点负载过重时,辅助第一节点完成分布式事务的提交过程,有效解决了传统两阶段提交协议中较多参与者导致的协调者性能瓶颈的问题,提高了系统的响应速率和利用率。
优选的,上述步骤22的步骤可以包括:
步骤221,根据所述提交信息生成携带有标识信息的预提交指令,所述标识信息为所述提交信息携带的、与所述分布式事务对应的标识信息;
步骤222,将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
步骤223,若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
步骤224,接收所述第二参与者根据所述中止指令返回的中止结果,并将所述中止结果返回给所述协调者。
此时,根据提交信息生成携带有标识信息的预提交指令并发送给分布式事务的参与者,省去了针对分布式事务发送开启消息的步骤;同时开启一线程监测参与者的工作状态,若监测到第一参与者出现故障,则在接收到第一参与者返回的不提交响应及未出现故障的第二参与者返回的提交响应后,立马对第一参与者进行中断处理,释放占用的资源,而不用死等一段时间后进行超时处理,减少了等待时间,提高了系统响应速率。
另外,第一参与者收到协调者发送的预提交指令后,由于本地事务异常决定不提交时,可以直接发送不提交响应给协调者,然后自行结束事务,协调者不用发送中止指令给第一参与者,减少了通信的次数,避免了过多的通信提高非正常阻塞情况的发生,且减轻了网络负载,提高了系统性能。
本发明实施例的分布式事务的处理方法,有效地降低了分布式数据库系统中分布式事务的非正常阻塞情况,同时解决了协调者性能瓶颈的问题,减少了通信开销,提高了整个集群的响应速度和利用率。
如图7所示,本发明的实施例还提供了一种分布式事务的处理装置,应用于分布式数据库中的节点,所述处理装置包括:
第三接收模块,用于接收第一节点发送的提交信息,所述提交信息为所述第一节点接收到用户发送的对已开启的分布式事务的提交请求后,判断自身负载超过预设值时,根据所述提交请求生成的提交信息;
处理模块,用于根据所述提交信息对所述分布式事务进行处理,并将处理结果返回给所述第一节点。
本发明实施例的分布式事务的处理装置,通过在第一节点(即协调者)负载过重时,辅助第一节点完成分布式事务的提交过程,有效解决了传统两阶段提交协议中较多参与者导致的协调者性能瓶颈的问题,提高了系统的响应速率和利用率。
优选的,所述处理模块可以包括:
第二生成模块,用于根据所述提交信息生成携带有标识信息的预提交指令,所述标识信息为所述提交信息携带的、与所述分布式事务对应的标识信息;
第四发送模块,用于将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
第五发送模块,用于若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
第四接收模块,用于接收所述第二参与者根据所述中止指令返回的中止结果,并将所述中止结果返回给所述协调者。
此时,根据提交信息生成携带有标识信息的预提交指令并发送给分布式事务的参与者,省去了针对分布式事务发送开启消息的步骤;同时开启一线程监测参与者的工作状态,若监测到第一参与者出现故障,则在接收到第一参与者返回的不提交响应及未出现故障的第二参与者返回的提交响应后,立马对第一参与者进行中断处理,释放占用的资源,而不用死等一段时间后进行超时处理,减少了等待时间,提高了系统响应速率。
另外,第一参与者收到协调者发送的预提交指令后,由于本地事务异常决定不提交时,可以直接发送不提交响应给协调者,然后自行结束事务,协调者不用发送中止指令给第一参与者,减少了通信的次数,避免了过多的通信提高非正常阻塞情况的发生,且减轻了网络负载,提高了系统性能。
本发明实施例的分布式事务的处理方法,有效地降低了分布式数据库系统中分布式事务的非正常阻塞情况,同时解决了协调者性能瓶颈的问题,减少了通信开销,提高了整个集群的响应速度和利用率。
需要说明的是,该分布式事务的处理装置是与上述分布式事务的处理方法相对应的装置,其中上述方法实施例中所有实现方式均适用于该装置的实施例中,也能达到同样的技术效果。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种分布式事务的处理方法,应用于分布式数据库中的节点,其特征在于,所述处理方法包括:
获取用户发送的对已开启的分布式事务的提交请求;
根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点;
根据所述提交请求生成提交信息,并将所述提交信息发送给所述辅助节点;
接收所述辅助节点返回的,根据所述提交信息对所述分布式事务的处理结果。
2.根据权利要求1所述的处理方法,其特征在于,所述根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点,包括:
根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取负载在预设范围内的一节点作为所述辅助节点。
3.根据权利要求1所述的处理方法,其特征在于,所述根据所述提交请求生成提交信息,并将所述提交信息发送给所述辅助节点,包括:
根据所述提交请求生成携带有标识信息的提交信息,并将所述提交信息发送给所述辅助节点,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息。
4.根据权利要求1所述的处理方法,其特征在于,所述获取用户发送的对已开启的分布式事务的提交请求之后,还包括:
根据所述提交请求,在所述节点的负载未超过所述预设值时,生成携带有标识信息的预提交指令,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息;
将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
接收所述第二参与者根据所述中止指令返回的中止结果。
5.一种分布式事务的处理装置,应用于分布式数据库中的节点,其特征在于,所述处理装置包括:
获取模块,用于获取用户发送的对已开启的分布式事务的提交请求;
选取模块,用于根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取一节点作为辅助节点;
第一发送模块,用于根据所述提交请求生成提交信息,并将所述提交信息发送给所述辅助节点;
第一接收模块,用于接收所述辅助节点返回的,根据所述提交信息对所述分布式事务的处理结果。
6.根据权利要求5所述的处理装置,其特征在于,所述选取模块包括:
选取子模块,用于根据所述提交请求,在所述节点的负载超过预设值时,在预先保存的节点集群中选取负载在预设范围内的一节点作为所述辅助节点。
7.根据权利要求5所述的处理装置,其特征在于,所述第一发送模块包括:
第一发送子模块,用于根据所述提交请求生成携带有标识信息的提交信息,并将所述提交信息发送给所述辅助节点,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息。
8.根据权利要求5所述的处理装置,其特征在于,所述处理装置还包括:
第一生成模块,用于根据所述提交请求,在所述节点的负载未超过所述预设值时,生成携带有标识信息的预提交指令,其中所述标识信息为预先生成的与所述分布式事务对应的标识信息;
第二发送模块,用于将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
第三发送模块,用于若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
第二接收模块,用于接收所述第二参与者根据所述中止指令返回的中止结果。
9.一种分布式事务的处理方法,应用于分布式数据库中的节点,其特征在于,所述处理方法包括:
接收第一节点发送的提交信息,所述提交信息为所述第一节点接收到用户发送的对已开启的分布式事务的提交请求后,判断自身负载超过预设值时,根据所述提交请求生成的提交信息;
根据所述提交信息对所述分布式事务进行处理,并将处理结果返回给所述第一节点。
10.根据权利要求9所述的处理方法,其特征在于,所述根据所述提交信息对所述分布式事务进行处理,并将处理结果返回给所述第一节点,包括:
根据所述提交信息生成携带有标识信息的预提交指令,所述标识信息为所述提交信息携带的、与所述分布式事务对应的标识信息;
将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
接收所述第二参与者根据所述中止指令返回的中止结果,并将所述中止结果返回给所述协调者。
11.一种分布式事务的处理装置,应用于分布式数据库中的节点,其特征在于,所述处理装置包括:
第三接收模块,用于接收第一节点发送的提交信息,所述提交信息为所述第一节点接收到用户发送的对已开启的分布式事务的提交请求后,判断自身负载超过预设值时,根据所述提交请求生成的提交信息;
处理模块,用于根据所述提交信息对所述分布式事务进行处理,并将处理结果返回给所述第一节点。
12.根据权利要求11所述的处理装置,其特征在于,所述处理模块包括:
第二生成模块,用于根据所述提交信息生成携带有标识信息的预提交指令,所述标识信息为所述提交信息携带的、与所述分布式事务对应的标识信息;
第四发送模块,用于将所述预提交指令发送给所述分布式事务所有的参与者,并开启一线程监测所述参与者的工作状态;
第五发送模块,用于若监测到第一参与者出现故障,则在接收到所述第一参与者根据所述预提交指令返回的不提交响应,及未出现故障的第二参与者返回的提交响应后,使所述第一参与者中断所述分布式事务,并向所述第二参与者发送中止指令;
第四接收模块,用于接收所述第二参与者根据所述中止指令返回的中止结果,并将所述中止结果返回给所述协调者。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410778604.9A CN105786592A (zh) | 2014-12-15 | 2014-12-15 | 一种分布式事务的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410778604.9A CN105786592A (zh) | 2014-12-15 | 2014-12-15 | 一种分布式事务的处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105786592A true CN105786592A (zh) | 2016-07-20 |
Family
ID=56374717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410778604.9A Pending CN105786592A (zh) | 2014-12-15 | 2014-12-15 | 一种分布式事务的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105786592A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105743772A (zh) * | 2016-01-26 | 2016-07-06 | 深圳宸睿科技有限公司 | 一种消息处理的方法及系统 |
CN106547610A (zh) * | 2016-10-11 | 2017-03-29 | 北京国电通网络技术有限公司 | 一种分布式事务提交的方法及系统 |
CN108108233A (zh) * | 2017-11-29 | 2018-06-01 | 上海交通大学 | 任务多副本执行的集群作业调度方法及系统 |
CN108924184A (zh) * | 2018-05-31 | 2018-11-30 | 阿里巴巴集团控股有限公司 | 数据处理方法和服务器 |
CN109347984A (zh) * | 2018-12-03 | 2019-02-15 | 河南省四通锅炉有限公司 | 一种用于智能化工厂的基于物联网的锅炉监测方法及装置 |
CN109388481A (zh) * | 2018-09-21 | 2019-02-26 | 网易(杭州)网络有限公司 | 一种事务信息的传输方法、系统、装置、计算设备和介质 |
CN109844731A (zh) * | 2016-10-13 | 2019-06-04 | 华为技术有限公司 | 分散式分布式数据库一致性 |
CN109902023A (zh) * | 2019-03-18 | 2019-06-18 | 平安普惠企业管理有限公司 | 一种测试代码移交控制方法及装置 |
CN110046036A (zh) * | 2018-12-25 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 一种操作请求分配方法、装置及设备 |
CN111078451A (zh) * | 2019-08-05 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 分布式事务处理方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080177879A1 (en) * | 2007-01-19 | 2008-07-24 | Mayilraj Krishnan | Transactional application processing in a distributed environment |
CN103095804A (zh) * | 2011-12-13 | 2013-05-08 | 微软公司 | 集群存储系统中的负载平衡 |
CN103559245A (zh) * | 2013-10-29 | 2014-02-05 | 华为技术有限公司 | 一种分布式事务提交故障的处理方法、装置和系统 |
CN103731465A (zh) * | 2012-10-10 | 2014-04-16 | 株式会社特博睿 | 分布式系统及其事务处理方法 |
-
2014
- 2014-12-15 CN CN201410778604.9A patent/CN105786592A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080177879A1 (en) * | 2007-01-19 | 2008-07-24 | Mayilraj Krishnan | Transactional application processing in a distributed environment |
CN103095804A (zh) * | 2011-12-13 | 2013-05-08 | 微软公司 | 集群存储系统中的负载平衡 |
CN103731465A (zh) * | 2012-10-10 | 2014-04-16 | 株式会社特博睿 | 分布式系统及其事务处理方法 |
CN103559245A (zh) * | 2013-10-29 | 2014-02-05 | 华为技术有限公司 | 一种分布式事务提交故障的处理方法、装置和系统 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105743772A (zh) * | 2016-01-26 | 2016-07-06 | 深圳宸睿科技有限公司 | 一种消息处理的方法及系统 |
CN106547610A (zh) * | 2016-10-11 | 2017-03-29 | 北京国电通网络技术有限公司 | 一种分布式事务提交的方法及系统 |
CN109844731A (zh) * | 2016-10-13 | 2019-06-04 | 华为技术有限公司 | 分散式分布式数据库一致性 |
CN108108233A (zh) * | 2017-11-29 | 2018-06-01 | 上海交通大学 | 任务多副本执行的集群作业调度方法及系统 |
CN108108233B (zh) * | 2017-11-29 | 2021-10-01 | 上海交通大学 | 任务多副本执行的集群作业调度方法及系统 |
CN108924184A (zh) * | 2018-05-31 | 2018-11-30 | 阿里巴巴集团控股有限公司 | 数据处理方法和服务器 |
CN109388481A (zh) * | 2018-09-21 | 2019-02-26 | 网易(杭州)网络有限公司 | 一种事务信息的传输方法、系统、装置、计算设备和介质 |
CN109347984B (zh) * | 2018-12-03 | 2021-05-04 | 河南省四通锅炉有限公司 | 一种用于智能化工厂的基于物联网的锅炉监测方法及装置 |
CN109347984A (zh) * | 2018-12-03 | 2019-02-15 | 河南省四通锅炉有限公司 | 一种用于智能化工厂的基于物联网的锅炉监测方法及装置 |
CN110046036A (zh) * | 2018-12-25 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 一种操作请求分配方法、装置及设备 |
US11212371B2 (en) | 2018-12-25 | 2021-12-28 | Advanced New Technologies Co., Ltd. | Operation request allocation methods, apparatuses, and devices |
TWI759638B (zh) * | 2018-12-25 | 2022-04-01 | 開曼群島商創新先進技術有限公司 | 操作請求分配方法、裝置及設備 |
CN109902023A (zh) * | 2019-03-18 | 2019-06-18 | 平安普惠企业管理有限公司 | 一种测试代码移交控制方法及装置 |
CN109902023B (zh) * | 2019-03-18 | 2022-06-03 | 平安普惠企业管理有限公司 | 一种测试代码移交控制方法及装置 |
CN111078451A (zh) * | 2019-08-05 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 分布式事务处理方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105786592A (zh) | 一种分布式事务的处理方法及装置 | |
RU2648966C2 (ru) | Устройство и способ для обработки множества открытых api | |
CN106713391B (zh) | 一种session信息的共享方法和共享系统 | |
CN108390950A (zh) | 一种消息推送方法、装置及设备 | |
CN103139157B (zh) | 一种基于socket的网络通信方法、装置及系统 | |
CN106384290B (zh) | 保单处理系统、方法及装置 | |
CN110716793B (zh) | 一种分布式事务的执行方法、装置、设备及存储介质 | |
CN104917833A (zh) | 一种基于nio请求的异步信息处理方法 | |
CN108712457A (zh) | 基于Nginx反向代理的后端服务器动态负载调整方法及装置 | |
CN107682460A (zh) | 一种分布式存储集群数据通信方法及系统 | |
CN107277083A (zh) | 一种数据交互的处理方法、装置及系统 | |
EP3852340A1 (en) | Data request method based on http protocol, and server | |
CN110300188A (zh) | 数据传输系统、方法和设备 | |
CN105607606A (zh) | 一种基于双主板架构的数据采集装置及方法 | |
CN116016546A (zh) | 一种在cdn中批量预热资源文件的方法及系统 | |
CN102594798A (zh) | 一种连接数据库的代理方法及系统 | |
CN111738721B (zh) | 一种区块链交易监听方法以及相关装置 | |
WO2020006901A1 (zh) | 资金归集方法、装置、计算机设备和存储介质 | |
CN202798801U (zh) | 一种用于实现分布式数据交互的通用性通讯系统 | |
CN112559472A (zh) | 一种文件传输方法、装置、计算机设备及存储介质 | |
CN106875664A (zh) | 一种基于can总线的独占式数据采集方法 | |
CN105281944B (zh) | 网络协议地址的设定方法及服务管理系统 | |
CN106161626A (zh) | 一种云终端管理系统及方法 | |
CN109034768B (zh) | 财务调拨方法、装置、计算机设备和存储介质 | |
CN105871917A (zh) | 传输控制协议tcp连接调度的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160720 |