一种事务处理系统及装置制造方法及图纸

技术编号:37999762 阅读:7 留言:0更新日期:2023-06-30 10:13
本申请提供一种事务处理系统:包括事务协调者和一个或多个事务参与者。事务协调者接收第一事务的处理请求,为第一事务生成准备请求,并将该准备请求发送至各事务参与者;之后,第一节点生成第一事务的准备日志;事务参与者接收到准备请求之后,向事务协调者返回准备响应,事务协调者根据所有事务参与者的准备响应,向客户端发送第一事务的处理响应。上述方式第一节点记录事务的第一阶段日志,这样在确定所有的第二节点都返回了准备成功的响应之后,便可以向客户端返回事务处理成功的响应,在第一节点出现故障重启后,仍可以保证第一节点基于第一阶段日志恢复事务处理流程,从而可以在保证事务处理系统的一致性的基础上,缩短事务处理时延。事务处理时延。事务处理时延。

【技术实现步骤摘要】
一种事务处理系统及装置


[0001]本申请涉及计算机
,尤其涉及一种事务处理系统及装置。

技术介绍

[0002]事务(transaction)是指一组连续的操作,这些操作组合成一段完整的逻辑,执行完后这组操作后,事务处理系统需要从一个一致性(consistent)的状态转换到另一个一致性的状态。因此,上述操作组合中的全部操作要么全部执行成功,要么全部都未执行成功,如果操作组合中部分操作执行成功,部分操作未执行成功,则需要将执行成功的操作回滚(rollback)至未执行成功之前的状态。
[0003]当存在多个事务参与者参与处理事务时,这个事务为分布式事务。两阶段提交协议是分布式事务处理过程中一个广泛使用的协议,以保证数据的强一致性。两阶段提交协议中,每个事务都会经历两个状态:准备(prepare)和提交(commit)。该协议中包含一个事务协调者(coordinator)以及若干个事务参与者(participants)。
[0004]现有两阶段提交协议中,事务协调者需要在确定所有的事务参与者都准备成功后,写入提交日志以记录事务状态,提交日志写入完成之后,事务协调者才可以向触发事务请求的客户端返回事务处理成功的响应,这样,当事务协调者出现故障后,可以基于提交日志恢复事务处理流程,防止事务处理系统出现不一致的问题。
[0005]然而,记录提交日志需要引入额外的IO操作,且IO操作所需的时间都较长,使得处理事务的时延较大,导致事务处理效率较低。

技术实现思路

[0006]本申请提供一种事务处理系统及装置,用于缩短事务处理时延。
[0007]第一方面,本申请实施例提供了一种事务处理系统,该系统包括第一节点和一个或多个第二节点;其中,第一节点为第一事务的事务协调者,第二节点为第一事务的事务参与者;第一事务为多阶段分布式事务;第一节点可以用于获取第一事务的处理请求;为该第一事务生成对应的准备请求,并将准备请求发送至任一第二节点,该准备请求用于询问第二节点是否可以提交所述第一事务;示例性地,第一阶段日志用于记录第一节点上第一事务的状态信息,如第一节点已向第二节点发送第一事务的准备请求,第一事务的事务类型、第一节点为提交第一事务所执行的准备操作等等;对应的,任一第二节点用于接收第一节点发送的准备请求,向第一节点返回用于指示准备成功或失败的准备响应;第一节点还用于接收所有第二节点发送的准备响应,并根据所有第二节点返回的准备响应发送用于指示第一事务处理成功或失败的处理响应。
[0008]通过上述设计,第一节点为第一事务生成准备请求,并将准备请求发送至第二节点,第一节点记录该事务的第一阶段日志,这样第一节点确定所有的第二节点都返回了准备成功的响应之后,便可以向客户端返回事务处理成功的响应,在第一节点出现故障重启后,仍可以保证第一节点基于第一阶段日志恢复事务处理流程,从而可以在保证事务处理
系统的一致性的基础上,缩短事务处理时延。
[0009]在一种可能的实现方式中,第一节点仅为第一事务的事务协调者,则第一阶段日志包括第一节点作为事务协调者为第一事务生成的准备日志;或,第一节点既是第一事务的事务协调者又是第一事务的事务参与者时,第一阶段日志包括第一节点作为事务协调者为第一事务生成的准备日志以及第一节点作为事务参与者为第一事务生成的准备日志。
[0010]通过上述设计,第一节点既是第一事务的事务协调者又是第一事务的事务参与者时,第一节点生成的第一阶段日志包括第一节点作为事务协调者为第一事务生成的准备日志(如称为第一准备日志),以及第一节点作为事务参与者为第一事务生成的准备日志(如称为第二准备日志),这样第一节点可以通过一个磁盘IO写入第一准备日志和第二准备日志,节省磁盘IO。
[0011]在一种可能的实现方式中,第一节点在接收到所有第二节点发送的准备成功的准备响应之后,具体用于发送用于指示第一事务处理成功的处理响应;为第一事务生成对应的提交请求,并将提交请求发送至任一第二节点;执行第一事务对应的本地提交操作,本地提交操作包括生成第一事务对应的第二阶段日志;对应的,第二节点用于接收第一节点发送的提交请求,并执行第一事务对应的本地提交操作。或,若第一节点在接收到任一第二节点发的准备失败的准备响应之后,具体用于发送用于指示第一事务处理失败的处理响应。
[0012]通过上述设计,第一节点接收到所有第二节点发送的准备响应之后,便可以反馈第一事务的处理响应,不需要等待写提交日志的时间,可以减少事务处理延时。
[0013]在一种可能的实现方式中,第一阶段的日志包括事务标识、每一第二节点的标识;其中,事务标识用于唯一标识第一事务,第二节点的标识用于唯一标识一个第二节点。
[0014]除此之外,第一节点日志还可以包括但不限于下列中的一项或多项:事务类型、事务状态、日志类型、事务操作;其中,事务类型用于指示生成准备日志的节点的类型,如事务协调者还是事务参与者;事务状态用于指示事务所处的阶段,如准备阶段还是提交阶段;日志类型用于指示日志类型,如准备日志还是提交日志;事务操作,用于指示事务请求所请求执行的操作,如重命名、硬链接等。
[0015]通过上述设计,第一阶段日志记录有事务标识和参与该事务的每一个第二节点的标识,这样当第一节点出现故障重启后,仍可以基于第一阶段日志查询事务的状态,提供恢复事务处理的条件。
[0016]在一种可能的实现方式中,第一阶段在写入提交日志之前,若发生故障,则在第一节点重启之后,还用于基于第一阶段日志向参与该事务的任一第二节点发送检测请求;任一第二节点还用于向第一节点发送检测响应,该检测响应包括用于指示准备成功的准备响应,或用于指示准备失败的准备响应;其中,用于指示准备失败的准备响应包括错误指示,如第二节点未查询到该事务的相关记录。
[0017]通过上述设计,第一节点出现故障重启之后,通过读取第一阶段日志确定参与该事务的第二节点,并询问第二节点上关于该事务的处理状态,以恢复该事务的处理流程,保证事务处理系统的一致性。
[0018]在一种可能的实现方式中,第一节点仅为第一事务的事务协调者,则第二阶段日志包括第一节点作为事务协调者为第一事务生成的提交日志;或,第一节点既是第一事务的事务协调者又是第一事务的事务参与者时,第二阶段日志包括第一节点作为事务协调者
为第一事务生成的提交日志和第一节点作为事务参与者为第一事务生成的提交日志。
[0019]通过上述设计,第一节点既是第一事务的事务协调者又是第一事务的事务参与者时,第二阶段日志包括第一节点作为事务协调者为第一事务生成的提交日志(如第一提交日志)和第一节点作为事务参与者为第一事务生成的提交日志(如第二提交日志),这样第一节点可以通过一个磁盘IO写入第一提交日志和第二提交日志,节省磁盘IO。
[0020]在一种可能的实现方式中,若第一节点接收到第二节点发送的准备成功的准备响应之后,具体用于发送用于指示所述第一事务处理成功的处理响应;为所述第一事务生成对应的提本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种事务处理系统,其特征在于,包括第一节点和一个或多个第二节点;所述第一节点为第一事务的事务协调者,所述一个或多个第二节点为事务参与者;所述第一事务为多阶段分布式事务;所述第一节点,用于获取所述第一事务的处理请求,并根据所述处理请求为所述第一事务生成对应的准备请求,并将所述准备请求发送至任一所述第二节点,其中,所述准备请求用于询问所述第二节点是否可以提交所述第一事务;记录所述第一事务的第一阶段日志;任一所述第二节点,用于接收所述第一节点发送的所述准备请求,并向所述第一节点返回用于指示准备成功或失败的准备响应;所述第一节点,还用于根据所述第二节点返回的准备响应,发送用于指示所述第一事务处理成功或失败的处理响应。2.如权利要求1所述的系统,其特征在于,所述第一阶段日志包括所述第一节点作为事务协调者为所述第一事务生成的准备日志;或所述第一阶段日志包括所述第一节点作为事务协调者为所述第一事务生成的准备日志和所述第一节点作为事务参与者为所述第一事务生成的准备日志。3.如权利要求1或2所述的系统,其特征在于,所述第一节点,具体用于在接收到所有所述第二节点均发送的准备成功的准备响应之后,发送用于指示所述第一事务处理成功的处理响应;所述第一节点,还用于为所述第一事务生成对应的提交请求,并将所述提交请求发送至任一所述第二节点;以及执行所述第一事务对应的本地提交操作,所述本地提交操作包括生成所述第一事务的第二阶段日志;任一所述第二节点,还用于接收所述第一节点发送的所述提交请求,并执行所述第一事务对应的本地提交操作。4.如权利要求3所述的系统,其特征在于,所述第二阶段日志包括所述第一节点作为事务协调者为所述第一事务生成的提交日志;或所述第二阶段日志包括所述第一节点作为事务协调者为所述第一事务生成的提交日志和所述第一节点作为事务参与者为所述第一事务生成的提交日志。5.如权利要求1或2所述的系统,其特征在于,所述第一节点,具体用于在接收到所有所述第二节点均发送的准备成功的准备响应之后,发送用于指示所述第一事务处理成功的处理响应;所述第一节点,还用于为所述第一事务生成对应的提交请求,并将所述提交请求发送至任一所述第二节点;以及缓存所述提交请求,当定时时间到达,获取缓存的一个或多个提交请求,并通过一个写IO执行所述一个或多个提交请求对应的本地提交操作;所述一个或多个提交请求包括所述第一事务的提交请求;任一所述第二节点,还用于接收所述第一节点发送的所述提交请求,并缓存所述提交请求,当定时时间到达,获取缓存的一个或多个提交请求,并通过一个写IO执行所述一个或多个提交请求对应的本地提交操作;所述一个或多个提交请求包括所述第一事务的提交请求。6.一种事务处理装置,其特征在于,包括:
获取模块,用于获取第一事务的处理请求;所述第...

【专利技术属性】
技术研发人员:舒巴姆马
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1