事务提交系统中处理事务的方法及装置与流程

文档序号:17535857发布日期:2019-04-29 13:58阅读:290来源:国知局
事务提交系统中处理事务的方法及装置与流程

本申请涉及信息技术领域,并且更具体地,涉及事务提交系统中处理事务的方法及装置。



背景技术:

事务(transaction)是指一组连续的操作,这些操作组合成一段完整的逻辑,执行完后这组操作后,事务提交系统需要从一个一致性(consistent)的状态转换到另一个一致性的状态。因此,上述操作组合中的全部操作要么全部执行成功,要么全部都未执行成功,如果操作组合中部分操作执行成功,部分操作未执行成功,则需要将执行成功的操作回滚(rollback)至未执行成功之前的状态。

当存在多个事务参与者参与处理事务时,这个事务为分布式事务。目前,为了保证分布式事务提交的一致性,主流的事务提交协议通常为多阶段事务提交协议,包括两阶段提交协议(twophasecommitmentprotocol,2pc)和三阶段提交协议(threephasecommitmentprotocol,3pc)。例如,在事务提交系统中,处理对多个事务参与者中挂载的共享卷进行快照的快照事务时,通常采用上述两阶段提交协议。

然而,在使用两阶段提交协议提交快照事务的过程中,事务的协调者需要记录每个阶段的日志,即第一阶段日志以及第二阶段日志。而每次记录日志需要引入额外的io操作,且每次io操作所需的时间都较长,因此,在处理快照事务的过程中记录两个阶段的日志会增加处理快照事务的时延,导致快照事务的处理效率较低。



技术实现要素:

本申请提供一种事务提交系统中处理事务的方法及装置,有利于缩短处理快照事务的时延,提高快照事务的处理效率较低。

第一方面,提供了一种事务提交系统中处理事务的方法,其特征在于,所述事务提交系统包括协调快照事务的第一事务协调者,以及参与所述快照事务的多个事务参与者,所述快照事务为对所述多个事务参与者中挂载的共享卷进行快照,所述方法包括:所述第一事务协调者确定所述事务提交系统中存储有所述共享卷的快照元数据;所述第一事务协调者向所述多个事务参与者发送所述快照事务的提交请求。

可选地,上述快照事务的第一阶段日志也存储在上述存储资源中,以便第一事务协调者感知有快照事务正在处理中。

在本申请实施例中,在第一事务协调者确定事务提交系统中记录有共享卷的快照元数据时,可以直接向多个事务参与者发送提交请求,以请求多个事务参与提交快照事务。第一事务协调者无需再如现有技术规定的,需要通过查看快照事务的提交阶段日志(又称“第二阶段日志”),通知多个事务参与者提交事务或中止事务。也就是说,在处理快照事务的过程中,可以不再记录快照事务的提交阶段日志,以减少记录日志引入的时延,有利于提高处理快照事务的效率。

在一种可能的实现方式中,所述快照事务为多阶段分布式事务,所述方法还包括:所述第一事务协调者确定所述事务提交系统中未存储有所述快照元数据,且所述事务提交系统中存储有所述快照事务的第一阶段日志;所述第一事务协调者向所述多个事务参与者发送所述快照事务的中止请求。

在本申请实施例中,若事务提交系统中未存储有所述快照元数据,第一事务协调者可以直接向多个事务参与者发送事务中止请求,以协调多个事务参与者及时释放锁资源。

在一种可能的实现方式中,在所述第一事务协调者确定所述事务提交系统中存储有所述共享卷的快照元数据之前,所述方法还包括:所述第一事务协调者接收切换命令,所述切换命令用于指示所述快照事务的事务协调者由第二事务协调者切换为所述第一事务协调者,所述第一事务协调者与所述第二事务协调者共享存储资源;所述第一事务协调者确定所述事务提交系统中存储有所述共享卷的快照元数据,包括:所述第一事务协调者确定所述存储资源中存储有所述共享卷的快照元数据。

可选地,上述切换命令可以由事务提交系统的控制器发送。发送切换命令的控制器可以为多个控制器,也可以是一个控制器。

在本申请实施例中,可以通过切换命令将事务提交系统中的事务协调者切换为第一事务协调者,并在事务提交系统中存储有快照元数据时,协调多个事务参与者提交快照事务,有利于提高协调提交快照事务的灵活度。避免了现有技术中,由于事务提交系统的事务协调者是固定的,导致协调提交快照事务的灵活度降低。

另一方面,第一事务协调者(新的事务协调者)与第二事务协调者(旧的事务协调者)可以共享存储资源,如此,第一事务协调者可以通过查看存储资源,以确定快照事务的处理进度,即,若存储资源中存储有所述共享卷的快照元数据,则可以通知多个事务参与者提交快照事务。避免了现有技术中,第一事务协调者接管协调快照事务后,无法获知快照事务的处理进度。

在一种可能的实现方式中,所述第一事务协调者确定所述事务提交系统中未存储有所述快照元数据,且所述事务提交系统中存储有所述快照事务的第一阶段日志,还包括:所述第一事务协调者确定所述存储资源中未存储有所述快照元数据,且所述存储资源中存储有所述快照事务的第一阶段日志。

在一种可能的实现方式中,所述第一事务协调者接收切换命令,包括:若协调所述快照事务的所述第二事务协调者故障,所述第一事务协调者接收所述切换命令。

需要说明的是,上述发送切换命令除了出于第二事务协调者故障的原因,还可以是第二事务协调者的性能下降,或者第二事务协调者的负载过重等原因。

在本申请实施例中,若第二事务协调者故障后,第一事务协调者可以通过查看存储资源确定存储有所述共享卷的快照元数据,以确定快照事务的处理进度,并协调多个事务参与者发送提交请求,有利于提高提交快照事务的成功率。避免了现有技术中,若第二事务协调者故障后,没有新的事务协调者接管快照事务,导致快照事务处理失败。

第二方面,提供一种事务提交系统中处理事务的方法,包括:第一事务协调者接收切换命令,所述切换命令用于指示所述目标事务的事务协调者由第二事务协调者切换为所述第一事务协调者,所述第一事务协调者与所述第二事务协调者共享存储资源;所述第一事务协调者从所述存储资源中获取所述目标事务的日志;所述第一事务协调者根据所述目标事务的日志,通知参与所述目标事务的多个事务参与者中止或提交所述目标事务。

在本申请实施例中,第一事务协调者(新的事务协调者)与第二事务协调者(旧的事务协调者)可以共享存储资源,如此,第一事务协调者可以通过查看存储资源中存储的目标事务的日志,以确定目标事务的处理进度,并根据目标事务的处理进度协调多个事务参与者中止或提交目标事务。避免了现有技术中,第一事务协调者接管协调快照事务后,无法获知快照事务的处理进度。

在一种可能的实现方式中,所述第一事务协调者接收切换命令,包括:若所述第二事务协调者故障,所述第一事务协调者接收所述切换命令。

在本申请实施例中,若第二事务协调者故障后,第一事务协调者可以通过查看存储资源获取目标事务的日志,以确定目标事务的处理进度,并协调多个事务参与者提交或中止目标事务,有利于提高提交目标事务的成功率。避免了现有技术中,若第二事务协调者故障后,没有新的事务协调者接管目标事务,导致目标事务处理失败。

第三方面,提供一种事务提交系统中处理事务的装置,所述事务提交系统包括协调快照事务的第一事务协调者,以及参与所述快照事务的多个事务参与者,所述快照事务为对所述多个事务参与者中挂载的共享卷进行快照,所述装置位于所述第一事务协调者,所述装置包括:处理模块,用于确定所述事务提交系统中存储有所述共享卷的快照元数据;发送模块,用于向所述多个事务参与者发送所述快照事务的提交请求。

在本申请实施例中,在第一事务协调者确定事务提交系统中记录有共享卷的快照元数据时,可以直接向多个事务参与者发送提交请求,以请求多个事务参与提交快照事务。第一事务协调者无需再如现有技术规定的,需要通过查看快照事务的提交阶段日志,通知多个事务参与者提交事务或中止事务。也就是说,在处理快照事务的过程中,可以不再记录快照事务的提交阶段日志,以减少记录日志引入的时延,有利于提高处理快照事务的效率。

在一种可能的实现方式中,所述快照事务为多阶段分布式事务,所述处理模块还用于确定所述事务提交系统中未存储有所述快照元数据,且所述事务提交系统中存储有所述快照事务的第一阶段日志;所述发送模块还用于向所述多个事务参与者发送所述快照事务的中止请求。

在本申请实施例中,若事务提交系统中未存储有所述快照元数据,第一事务协调者可以直接向多个事务参与者发送事务中止请求,以协调多个事务参与者及时释放锁资源。

在一种可能的实现方式中,所述装置还包括:接收模块,用于接收切换命令,所述切换命令用于指示所述快照事务的事务协调者由第二事务协调者切换为所述第一事务协调者,所述第一事务协调者与所述第二事务协调者共享存储资源;所述处理模块,还用于确定所述存储资源中存储有所述共享卷的快照元数据。

在本申请实施例中,可以通过切换命令将事务提交系统中的事务协调者切换为第一事务协调者,并在事务提交系统中存储有快照元数据时,协调多个事务参与者提交快照事务,有利于提高协调提交快照事务的灵活度。避免了现有技术中,由于事务提交系统的事务协调者是固定的,导致协调提交快照事务的灵活度降低。

另一方面,第一事务协调者(新的事务协调者)与第二事务协调者(旧的事务协调者)可以共享存储资源,如此,第一事务协调者可以通过查看存储资源,以确定快照事务的处理进度,若存储资源中存储有所述共享卷的快照元数据,则可以通知多个事务参与者提交快照事务。避免了现有技术中,第一事务协调者接管协调快照事务后,无法获知快照事务的处理进度。

在一种可能的实现方式中,所述接收模块具体用于:若协调所述快照事务的所述第二事务协调者故障,所述第一事务协调者接收所述切换命令。

在本申请实施例中,若第二事务协调者故障后,第一事务协调者可以通过查看存储资源确定存储有所述共享卷的快照元数据,以确定快照事务的处理进度,并协调多个事务参与者发送提交请求,有利于提高提交快照事务的成功率。避免了现有技术中,若第二事务协调者故障后,没有新的事务协调者接管快照事务,导致快照事务处理失败。

第四方面,提供一种第一事务协调者,包括:接收模块,用于接收切换命令,所述切换命令用于指示所述目标事务的事务协调者由第二事务协调者切换为所述第一事务协调者,所述第一事务协调者与所述第二事务协调者共享存储资源;处理模块,用于从所述存储资源中获取所述目标事务的日志;所述处理模块,还用于根据所述目标事务的日志,通知参与所述目标事务的多个事务参与者中止或提交所述目标事务。

在本申请实施例中,第一事务协调者(新的事务协调者)与第二事务协调者(旧的事务协调者)可以共享存储资源,如此,第一事务协调者可以通过查看存储资源中存储的目标事务的日志,以确定目标事务的处理进度,并根据目标事务的处理进度协调多个事务参与者中止或提交目标事务。避免了现有技术中,第一事务协调者接管协调快照事务后,无法获知快照事务的处理进度。

在一种可能的实现方式中,所述接收模块具体用于:若所述第二事务协调者故障,所述第一事务协调者接收所述切换命令。

在本申请实施例中,若第二事务协调者故障后,第一事务协调者可以通过查看存储资源获取目标事务的日志,以确定目标事务的处理进度,并协调多个事务参与者提交或中止目标事务,有利于提高提交目标事务的成功率。避免了现有技术中,若第二事务协调者故障后,没有新的事务协调者接管目标事务,导致目标事务处理失败。

第五方面,提供一种第一事务协调者,所述第一事务协调者包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得所述第一事务协调者执行上述各方面中的方法。

第六方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。

需要说明的是,上述计算机程序代码可以全部或者部分存储在第一存储介质上,其中第一存储介质可以与处理器封装在一起的,也可以与处理器单独封装,本申请实施例对此不作具体限定。

第七方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。

第八方面,提供了一种芯片系统,该芯片系统包括处理器,用于支持第一事务协调者实现上述方面中所涉及的功能,例如,生成,接收,发送,或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存网络设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。

附图说明

图1是本申请实施例应用的事务提交系统100。

图2示出了快照事务的处理方法的示意性流程图。

图3示出了本申请实施例的快照事务的处理方法的示意性流程图。

图4示出了本申请另一实施例的快照事务的处理方法的示意性流程图。

图5是本申请实施例的快照事务的处理方法的示意性流程图。

图6是本申请实施例的事务提交系统中处理事务的装置的示意图。

图7是本申请实施例的第一事务协调者的示意图。

图8是本申请另一实施例的第一事务协调者的示意图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

图1是本申请实施例应用的事务提交系统100。该事务提交系统包括事务协调者110、多个事务参与者120。

事务参与者(participants)120,用于处理分布式事务。

事务协调者(coordinator)110,用于协调管理多个事务参与者处理分布式事务。

需要说明的是,上述事务协调者可以是从多个事务参与者中选出的,也就是说,事务协调者和多个事务参与者中的某一个事务参与者可以为一个节点,当然,事务协调者和多个事务参与者也可以为不同的节点,本申请实施例对此不做限定。本发明实施例中,事务参与者是挂载共享卷的节点,具体实现可以是服务器或者虚拟机,本发明实施例对此不作限定。

下文基于上述事务提交系统,结合图2介绍基于两阶段提交协议的快照事物的处理流程。通常两阶段提交协议包括准备阶段(preparephase),即两阶段提交协议中的第一阶段,以及提交阶段(commitphase),即两阶段提交协议中的第二阶段。

图2示出了快照事务的处理方法的示意性流程图。图2所示的方法包括步骤210至步骤2。

210,事务协调者接收事务请求,该事务请求用于请求对多个事务参与者挂载的共享卷进行快照,即请求处理快照事务。

220,事务协调者生成第一阶段日志。第一阶段日志用于记录快照事务,例如,快照事务的事务标识等信息。

需要说明的是,第一阶段日志存储在事务协调者本地。

230,事务协调者向多个事务参与者发送准备(prepare)消息,该准备消息用于询问多个事务参与者是否可以提交快照事务,即第一阶段中的请求过程。

240,多个事务参与者向事务协调者反馈执行成功(done)或执行失败(undone)。

多个事务参与者接收准备消息后,进入第一阶段的表决过程,即开始处理快照事物的准备操作,例如,预留执行快照事务所需的资源,暂停向共享卷写数据等操作。在表决阶段节后,事务参与者向事务协调者反馈事务处理结果,若事务参与者本地作业执行成功,则事务参与者向事务协调者反馈执行成功。若事务参与者本地作业执行故障,则事务参与者向事务协调者反馈执行失败。

需要说明的是,对于快照事务而言,在第一阶段(或者说,在上述准备阶段),共享卷的快照已经生成,此时,共享卷的快照元数据存储在事务提交系统中。

250,事务协调者记录第二阶段日志,第二阶段日志用于记录事务协调者向事务参与者发送中止请求或提交请求。

需要说明的是,上述第二阶段日志都存储在事务协调者本地。

260,进入快照事务的第二阶段,若第一阶段中全部事务参与者全部反馈执行成功,则事务协调者向全部事务参与者发送提交请求,提交请求用于通知事务参与者快照事务执行成功。相应地,事务参与者可以释放执行快照事务锁住的资源,并继续对共享卷进行访问。

270,进入快照事务的第二阶段,若第一阶段中部分事务参与者或全部事务参与者反馈执行失败或超时未反馈,则事务协调者向全部事务参与者发送中止请求,中止请求用于通知事务参与者快照事务执行失败。相应地,事务参与者可以释放执行快照事务锁住的资源,并继续对共享卷进行访问。

280,多个事务参与者在接收到提交请求或中止请求后,向事务协调者发送执行成功或执行失败。

290,若全部事务参与者全部反馈执行成功,则事务协调者确定快照事务的第二阶段处理结束。

需要说明的是,在第二阶段中,无论事务协调者发送的是提交请求还是中止请求,事务协调者都需要等到全部的事务参与者反馈执行成功,否则第二阶段都无法完成,事务协调者需要向未回复执行成功的事务参与者一直发送提交请求或中止请求,直到满足预设的条件或可以忽略未反馈的事务参与者。

从图2所示的方法流程可以看出,在基于两阶段提交协议处理快照事务的过程中,事件协作者需要记录两个阶段的日志,而每次记录日志所占用的时间较长,导致事务提交系统处理快照事务的总时间较长,降低了处理快照事务的效率。

为了解决上述问题,本申请提供一种新的快照事务的处理方法,通过查看事务提交系统中是否记录有共享卷的快照元数据,确定处理快照事务的进度,避免再在事务提交系统中记录第二阶段的日志,以减少处理快照事务的过程中,记录日志引入的时延,以提高处理快照事务的效率。

下文结合图3详细描述本申请实施例的快照事务的处理方法。图3所示的方法包括步骤310至步骤340。

310,第一事务协调者确定事务提交系统中存储有共享卷的快照元数据。

快照事务可以是多阶段分布式事务,当事务提交系统存储有共享卷的快照元数据后,说明共享卷的快照已经生成,并进入提交阶段。例如,如上文所述,基于两阶段提交协议的快照事务,若事务提交系统中存储有共享卷的快照元数据,则可以认为当前快照事务处理进度已经进入提交阶段(即第二阶段)。当然,上述快照事务也可以基于三阶段事务提交协议,则事务提交系统中存储有共享卷的快照元数据后,第一事务协调者可以认为第一阶段和第二阶段处理过程结束,进入第三阶段(即提交阶段)。

上述步骤310的触发条件可以包括多种情况,例如,情况一,若第一事务协调者故障后恢复工作,需要查看快照事务的当前处理进度,则触发执行步骤310。又例如,情况二,原本协调快照事物的事务协调者(又称第二事务协调者)故障后重新确定一个新的事务协调者(即第一事务协调者)协调快照事务时,第一协调者需要查看快照事务的当前处理进度,则触发上述步骤310。

需要说明的是,在上述情况二中,由于涉及两个事务协调者之间的切换,则可以用于确定快照事务处理进度的信息(例如,上述快照元数据,或者下文提到的第一阶段日志)可以存储在两个事务协调者共享的存储资源(又称“共享资源”)中,这个共享资源为第一事务协调者和第二事务协调者都可以访问的存储资源。当然,第二事务协调者也可以将上述进度信息备份至第一事务协调者,本申请实施例对此不做限定。

另外,在上述情况二中,新的事物协调者(第一事务协调者)的选择方式可以与传统技术中选择第二事务协调者的方式相同,即由事务提交系统中的多个控制器基于分布式一致性协议(例如,paxos)选择,也可以随机选择,本申请实施例对此不做限定。

需要说明的是,上述触发条件除了上述两种情况,还可以是第二事务协调者的性能下降,或者第二事务协调者的负载过重等原因。本申请实施例对此不作限定。

320,第一事务协调者向多个事务参与者发送快照事务的提交请求,以请求多个事务参与者提交快照事务。

第一事务协调者在发送上述提交请求后的快照事务处理机制,可以参见图2中的相关介绍,为了简洁,在此不再赘述。

若第一事务协调者未在事务提交系统中读到快照元数据,则第一事务协调者可以执行步骤330至步骤340。

330,第一事务协调者确定事务提交系统中未存储有快照元数据,且事务提交系统中存储有快照事务的第一阶段日志。

若事务提交系统中仅存储有第一阶段日志,而未存储有快照元数据,则可以认为快照事务当前处于第一阶段,且第一阶段未完成,即未生成共享卷的快照。或者说,第一阶段中部分事务参与者或者全部事务参与者反馈执行失败或超时未反馈执行成功。

340,第一事务协调者向多个事务参与者发送快照事务的中止请求,以通知多个事务参与者通知中止快照事务。

第一事务协调者在发送上述中止请求后的快照事务处理机制,可以参见图2中的相关介绍,为了简洁,在此不再赘述。

当然,若第一事务协调者从事务提交系统中未读到第一阶段日志,则第一事务协调者无法感知有快照事件正在处理,此时,可以等到快照事件的处理请求超时后,由事务提交系统重新提交快照事务。

上述步骤310中提到的在触发条件的情况二中,若第二事务协调者故障后,由第二事务协调者切换至第一事务协调者,其中涉及的方法流程可以参见图4所示的方法流程。需要说明的是,图4所示的方法可以应用于上述快照事务的处理过程,还可以应用于其他多阶段事务的处理过程中,本申请实施例对此不做具体限定。图4所示的方法包括步骤410至步骤430。

410,若协调目标事务的第二事务协调者故障,第一事务协调者接收切换命令,切换命令用于指示目标事务的事务协调者由第二事务协调者切换为第一事务协调者,第一事务协调者与第二事务协调者共享共享资源。

上述切换命令可以由事务提交系统中的多个控制器发出。

上述共享资源可以理解为第一事务协调者与第二事务协调者都可以访问的存储资源。

第一事务协调者的选择方式可以与传统技术中选择第二事务协调者的方式相同,即由事务提交系统中的多个控制器基于分布式一致性协议(例如,paxos)选择,也可以随机选择,本申请实施例对此不做限定。

需要说明的是,上述发送切换命令除了出于第二事务协调者故障的原因,还可以是第二事务协调者的性能下降,或者第二事务协调者的负载过重等原因。本申请实施例对此不作限定。

420,第一事务协调者从存储资源中获取目标事务的日志。

对于多阶段提交协议而言,上述目标事务的日志可以包括已完成的各阶段的日志。第一事务协调者可以根据各阶段的日志,按照传统的多阶段提交事务机制协调各个事务参与者提交事务。

例如,目标事务基于两阶段提交协议提交时,上述目标事务的日志为第一阶段日志,则第二事务协调者可以直接向多个事务参与者发送中止请求。若上述目标事务的日志为包括第一阶段日志以及第二阶段日志时,第一事务协调者可以根据第二阶段日志确定后续的协调方式。

当然上述目标事务的日志还可以仅仅包括第一阶段日志,无论后续事务处理阶段(第二阶段、或第三阶段)是否执行成功,都不包括后续事务处理阶段日志,例如,图3中介绍的快照事务的处理过程中基于第一阶段日志或快照元数据判断后续的处理事务的流程,相关介绍可以参考图3,为了简洁,在此不作具体介绍。

430,第一事务协调者根据目标事务的日志,通知参与目标事务的多个事务参与者中止或提交目标事务。

在本申请实施例中,当第二事务协调者故障后,可以由第一事务协调者根据共享资源中获取的目标事务的日志继续协调各个事务参与者处理目标事务,有利于控制各个事务参与者及时释放目标事务相关的锁资源,以避免现有技术中由于第二事务协调者故障而导致事务参与者无法自主释放锁资源。

下文结合图5描述本申请实施例的快照事务的处理方法的示意性流程图。图5所示的方法以切换事务协调者为例进行介绍,应理解,图5所示的方法仅为了便于理解本申请实施例的方法,并不会对本申请的范围造成限定。图5所示的方法包括步骤510至步骤533。

510,第二事务协调者将快照事务的信息存储至共享资源,快照事务为对多个事务参与者中挂在的共享卷进行快照,该信息可以是快照事务的第一阶段日志和/或共享卷的快照元数据。

需要说明的是,若第二事务协调者在生成快照元数据之前故障,第二事务协调者在共享资源中记录的信息为快照事务的第一阶段日志;若第二事务协调者在生成快照元数据之后故障,第二事务协调者在共享资源中记录的信息为快照事务的第一阶段日志以及快照元数据。

520,在第二事务协调者故障的情况下,事务提交系统中的多个控制器向第一事务协调者发送切换命令。切换命令用于指示快照事务的事务协调者由第二事务协调者切换为第一事务协调者。

第一事务协调者与第二事务协调者共享上述共享资源。

第一事务协调者的选择方式可以与传统技术中选择第二事务协调者的方式相同,即由事务提交系统中的多个控制器基于分布式一致性协议(例如,paxos)选择,也可以随机选择,本申请实施例对此不做限定。

530,第一事务协调者根据共享的共享资源中存储的信息确定快照事务的处理进度。

531,若共享的共享资源中存储的信息为共享卷的快照元数据,则第一事务协调者向多个事务参与者发送快照事务的提交请求。

基于两阶段提交协议的快照事务,若事务提交系统中存储有共享卷的快照元数据,则可以认为当前快照事务处理进度已经进入提交阶段(即第二阶段)。

532,若共享的共享资源中存储的信息为快照事务的第一阶段日志,且共享资源中未存储有快照元数据,则第一事务协调者向多个事务参与者发送快照事务的中止请求。

若共享资源中存储的信息为快照事务的第一阶段日志,且未存储有快照元数据,则可以认为快照事务当前处于第一阶段,且第一阶段未完成,即未生成共享卷的快照。或者说,第一阶段中部分事务参与者或者全部事务参与者反馈执行失败或超时未反馈执行成功。

533,若共享资源中未存储的信息为快照事务的第一阶段日志,且共享资源中未存储有快照元数据,则第一事务协调者无法感知有快照事件正在处理,此时,可以等到快照事件的处理请求超时后,由事务提交系统重新提交快照事务。

需要说明的是,图5所示的方法流程重点在于描述第一事务协调者如何根据从共享资源中获取的信息,确定是发送提交请求还是中止请求,而事务参与者在接收了提交请求或中止请求后的操作与图2中的描述相同,为了简洁,在此不再赘述。

上文结合图1至图5详细介绍了本申请实施例的事务提交系统中处理事务的方法,下文结合图6至图8详细地描述本申请实施例的事务提交系统中处理事务的装置。需要说明的是,图6至图8所示的装置可以实现上述方法中各个步骤,为了简洁,在此不再赘述。

图6是本申请实施例的事务提交系统中处理事务的装置的示意图,图6所示的装置可以位于图1所示的事务提交系统中的第一事务协调者,即第一事务协调者600包括处理模块610和发送模块620。

处理模块610,用于确定所述事务提交系统中存储有所述共享卷的快照元数据;

发送模块620,用于向所述多个事务参与者发送所述快照事务的提交请求。

可选地,作为一个实施例,所述快照事务为多阶段分布式事务,所述处理模块还用于确定所述事务提交系统中未存储有所述快照元数据,且所述事务提交系统中存储有所述快照事务的第一阶段日志;所述发送模块还用于向所述多个事务参与者发送所述快照事务的中止请求。

可选地,作为一个实施例,所述装置还包括:接收模块,用于接收切换命令,所述切换命令用于指示所述快照事务的事务协调者由所述第二事务协调者切换为所述第一事务协调者,所述第一事务协调者与所述第二事务协调者共享存储资源;所述处理模块,还用于确定所述共享存储资源中存储有所述共享卷的快照元数据。

可选地,作为一个实施例,所述接收模块具体用于:若协调所述快照事务的所述第二事务协调者故障,所述第一事务协调者接收所述切换命令。

图7是本申请实施例的第一事务协调者的示意图,图7所示的第一事务协调者700可以包括:接收模块710和处理模块720。

接收模块710,用于接收切换命令,所述切换命令用于指示所述目标事务的事务协调者由所述第二事务协调者切换为所述第一事务协调者,所述第一事务协调者与所述第二事务协调者共享存储资源;

处理模块720,用于从所述存储资源中获取所述目标事务的日志;

所述处理模块720,还用于根据所述目标事务的日志,通知参与所述目标事务的多个事务参与者中止或提交所述目标事务。

可选地,作为一个实施例,所述接收模块具体用于:若所述第二事务协调者故障,所述第一事务协调者接收所述切换命令。

在可选的实施例中,所述处理模块610可以为处理器820,所述发送模块620可以为输入输出接口830,所述第一事务协调者还可以包括存储器810,具体如图8所示。

在可选的实施例中,所述处理模块720可以为处理器820,所述接收模块720可以为输入输出接口830,所述第一事务协调者还可以包括存储器810,具体如图8所示。

图8是本申请另一实施例的第一事务协调者的示意图。图8所示的第一事务协调者800可以包括:存储器810、处理器820和输入/输出接口830。其中,存储器810、处理器820和输入/输出接口830通过内部连接通路相连,该存储器810用于存储指令,该处理器820用于执行该存储器820存储的指令,以控制输入/输出接口830接收输入的数据和信息,输出操作结果等数据。

在实现过程中,上述方法的各步骤可以通过处理器820中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器810,处理器820读取存储器810中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。

应理解,本申请实施例中,该处理器可以为中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

还应理解,本申请实施例中,该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。处理器的一部分还可以包括非易失性随机存取存储器。例如,处理器还可以存储设备类型的信息。

应理解,在本申请实施例中,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。

应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digitalvideodisc,dvd))或者半导体介质(例如,固态硬盘(solidstatedisk,ssd))等。

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