一种分布式事务节点信息存储方法、装置、设备及介质
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种分布式事务节点信息存储方法、装置、设备及介质。
背景技术
在分布式数据库系统中,用于接收和处理客户端各种请求且自身不存储任何数据的节点称为计算节点(CN),为计算节点提供数据并处理计算节点的数据修改请求节点称为数据节点(DN)。计算节点的一个事务对应多个数据节点的分支事务,这种计算节点和数据节点通过网络协作,共同完成的事务总体构成一个分布式事务。
当计算节点的事务提交或回滚时,各数据节点的分支事务也要同步提交或回滚,从而保证不同节点之间的事务一致性,即分布式事务一致性。一个事务对应相关节点的数据修改都提交了,或都回滚了,才能保证事务一致性。
为解决分布式事务一致性的问题,计算节点的事务提交操作可以分为一阶段和二阶段。某个数据节点中的事务在完成一阶段提交后仍可执行回滚,且故障重启后事务信息不会丢失。在一阶段提交时,只要有一个数据节点一阶段提交失败,就表示系统出现故障,一阶段的操作全部需要回滚。只有当所有分支事务都完成一阶段提交,才可以继续通知数据节点执行二阶段提交。一阶段全部数据节点都提交成功,表示一阶段提交成功,可以进入二阶段提交,二阶段提交成功表示该分布式事务提交成功。
分布式数据库在故障处理时为保证事务的一致性,需要计算节点收集所有分支事务的状态并以此为依据确定后续操作,如:当有数据节点未完成一阶段提交时,说明一阶段提交失败,此时计算节点需要通知全部数据节点执行回滚;当所有数据节点都完成一阶段提交,说明一阶段提交成功,计算节点需要继续通知数据节点执行二阶段提交。而该操作的一个前提就是拥有一张明确的分布式事务节点清单,分布式事务节点清单需要包含本分布式事务涉及到的所有数据节点信息,以确定对应数据节点中的分支事务状态、分布式事务整体的事务状态以及后续的提交或回滚操作。
由于计算节点本身不保存任何数据,为避免故障重启后事务信息丢失,计算节点需要将一张包含了全部分布式事务节点的清单发送到每一个数据节点并进行数据落地,当计算节点发生故障重启时,就可以由数据节点通知计算节点根据节点清单重新构造分布式事务。但上述操作存在的问题是,当分布式事务涉及很多个数据节点时,计算节点发送分布式事务节点清单的消息就会膨胀,数据节点保存节点清单的操作也会因数据量较大而影响写入性能。
发明内容
本发明提供一种分布式事务节点信息存储方法、装置、设备及介质,以实现当计算节点发生故障并重启时,可以快速准确从相关数据节点中获取节点信息,并最终构造出完整的分布式事务节点清单。
第一方面,本发明实施例提供了一种分布式事务节点信息存储方法,包括:
获取分布式事务关联的分支事务信息,构建分布式事务节点清单;
确定所述分布式事务节点清单中各数据节点分别对应的存储节点,其中,存储节点从所述分布式事务节点清单中除所对应数据节点以外的其他数据节点中选定;
当所述分布式事务提交时,将各所述数据节点的节点信息存储至对应的存储节点中。
可选的,所述确定所述分布式事务节点清单中各数据节点分别对应的存储节点,包括:
将所述分布式事务节点清单中包含的所有数据节点进行排序,确定首端数据节点、中间数据节点以及末端数据节点;
将所述末端数据节点作为所述首端数据节点对应的存储节点;
针对每个中间数据节点,将与所述中间数据节点相邻的前一数据节点作为所述中间数据节点对应的存储节点;
将与所述末端数据节点相邻的前一数据节点作为所述末端数据节点对应的存储节点。
可选的,所述将各所述数据节点的节点信息存储至对应的存储节点中,包括:
针对每个数据节点,确定所述数据节点的数据节点信息以及对应的存储节点的存储节点信息;
获取所述分布式事务的事务编号,基于所述事务编号、所述数据节点信息和所述存储节点信息形成所述数据节点的节点存储信息;
将所述节点存储信息发送至对应的存储节点进行存储。
可选的,所述方法还包括:
接收数据节点发送的检验节点存储信息;
当所述检验节点存储信息关联的目标分布式事务不存在时,根据所述检验节点存储信息构建目标分布式事务节点清单。
可选的,所述根据所述检验节点存储信息构建目标分布式事务节点清单,包括:
确定所述检验节点存储信息中包含的检验数据节点和检验存储节点;
将所述检验存储节点作为目标数据节点,获取所述目标数据节点存储的目标节点存储信息,确定所述目标节点存储信息中的目标存储节点;
将所述目标存储节点确定为下一个目标数据节点,继续确定下一个目标存储节点,直到新确定的目标存储节点为所述检验数据节点;
根据查找到的所有目标存储节点形成目标分布式事务节点清单。
第二方面,本发明实施例还提供了一种分布式事务节点信息存储装置,该装置包括:
事务节点清单构建模块,用于获取分布式事务关联的分支事务信息,构建分布式事务节点清单;
存储节点确定模块,用于确定所述分布式事务节点清单中各数据节点分别对应的存储节点,其中,存储节点从所述分布式事务节点清单中除所对应数据节点以外的其他数据节点中选定;
节点信息存储模块,用于当所述分布式事务提交时,将各所述数据节点的节点信息存储至对应的存储节点中。
第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明任意实施例所述的分布式事务节点信息存储方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明任意实施例所述的分布式事务节点信息存储方法。
本发明通过获取分布式事务关联的分支事务信息,构建分布式事务节点清单,确定分布式事务节点清单中各数据节点分别对应的存储节点,其中,存储节点从分布式事务节点清单中除所对应数据节点以外的其他数据节点中选定,当分布式事务提交时,将各数据节点的节点信息存储至对应的存储节点中,当计算节点发生故障并重启时,可以快速准确从相关数据节点中获取节点信息,并最终构造出完整的分布式事务节点清单,实现了在不丢失节点清单信息的情况下,降低节点信息传输和保存的数据量。
附图说明
图1是本发明实施例一提供的一种分布式事务节点信息存储方法的流程图;
图2是本发明实施例二提供的一种分布式事务节点信息存储方法的流程图;
图3是本发明实施例三提供的一种分布式事务节点信息存储装置的结构框图;
图4是本发明实施例四提供的一种计算机设备的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构,此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
图1为本发明实施例一提供的一种分布式事务节点信息存储方法的流程图,本实施例可适用于的情况,该方法可以由分布式事务节点信息存储装置来执行,该装置可以通过软件和/或硬件实现。
如图1所示,该方法具体包括如下步骤:
步骤110、获取分布式事务关联的分支事务信息,构建分布式事务节点清单。
其中,事务可以理解为记录应用程序的一组操作序列,以实现整体操作的一致性。在分布式数据库系统中,计算节点的一个事务对应多个数据节点的分支事务,这种计算节点和数据节点通过网络协作,共同完成的事务总体构成一个分布式事务。分布式事务节点清单可以理解为记载计算节点的一个事务涉及的数据节点的列表。
在实际应用中,计算节点可以记为CN,数据节点可以记为DN,那么可以将一个分布式事务节点清单记为LIST(DN1,DN2,....,DNn),表示该分布式事务在n个数据节点都存在分支事务。数据节点的分支事务的相关信息可以成为分支事务信息。
计算节点在获取某个分布式事务关联的所有分支事务信息后,通过遍历各分支事务信息,查找该分布式事务涉及了哪些数据节点,就可以构建该分布式事务的分布式事务节点清单。
步骤120、确定分布式事务节点清单中各数据节点分别对应的存储节点。
其中,存储节点可以从分布式事务节点清单中除所对应数据节点以外的其他数据节点中选定。
具体的,对于分布式事务节点清单中的每个数据节点,可以将分布式事务节点清单中的一个非己数据节点作为其对应的存储节点,以便保存数据节点的节点信息。
可选的,步骤120可以通过以下步骤实现:
步骤1201、将分布式事务节点清单中包含的所有数据节点进行排序,确定首端数据节点、中间数据节点以及末端数据节点。
其中,首端数据节点可以理解为对各数据节点进行排序后的第一个数据节点,末端数据节点可以理解为对各数据节点进行排序后的最后一个数据节点,中间数据节点则可以理解为除首端数据节点和末端数据节点之外其余的数据节点。
具体的,可以将计算节点进行数据计算时涉及数据节点的前后顺序对分布式事务节点清单中的数据节点进行排序。将排序后的第一个数据节点确定为首端数据节点,将排序后的最后一个数据节点确定为末端数据节点,将除首端数据节点和末端数据节点之外其余的数据节点确定为中间数据节点。
步骤1202、将末端数据节点作为首端数据节点对应的存储节点。
步骤1203、针对每个中间数据节点,将与中间数据节点相邻的前一数据节点作为中间数据节点对应的存储节点。
步骤1204、将与末端数据节点相邻的前一数据节点作为末端数据节点对应的存储节点。
步骤1202~步骤1204在执行时不分前后顺序。示例性的,一个分布式事务节点清单记为LIST(DN1,DN2,……,DNn-1,DNn),也就是说该分布式事务涉及数据节点DN1,DN2,……,DNn-1,DNn,在本实施中,可以将数据节点DN1确定为首端数据节点,将数据节点DN2,……,DNn-1确定为中间数据节点,将数据节点DNn确定为末端数据节点。对于首端数据节点DN1,可以将末端数据节点DNn作为首端数据节点DN1对应的存储节点,对于中间数据节点DN2,……,DNn-1,可以将与中间数据节点相邻的前一数据节点,即DN1,……,DNn-2分别作为中间数据节点DN2,……,DNn-1对应的存储节点,对于末端数据节点DNn,可以将与末端数据节点DNn相邻的前一数据节点DNn-1作为末端数据节点对应的存储节点。
可以理解的是,步骤1201~步骤1204只是介绍了选取数据节点对应的存储节点的一种情况,在对分布式事务节点清单中包含的所有数据节点进行排序后,还可以将与首端数据节点相邻的后一数据节点作为首端数据节点对应的存储节点,将与中间数据节点相邻的后一数据节点作为中间数据节点对应的存储节点,将首端数据节点作为末端数据节点对应的存储节点。另外,还可以包括多种存储节点的选取方式,只要选取的存储节点是非己的数据节点,并且所有存储节点和数据节点的对应关系可以形成一个闭环即可。
步骤130、当分布式事务提交时,将各数据节点的节点信息存储至对应的存储节点中。
具体的,在分布式事务提交时,就可以将每个数据节点的节点信息发送至对应的存储节点进行保存。当计算节点发生故障并重启时,计算节点可以通过从相关数据节点中逐个获取存储的数据节点的节点信息,最终重新构造出完整的分布式事务节点清单。
可选的,将各数据节点的节点信息存储至对应的存储节点中可以通过以下步骤实现:
步骤1301、针对每个数据节点,确定数据节点的数据节点信息以及对应的存储节点的存储节点信息。
其中,数据节点信息可以是数据节点的序列号等可以标识数据节点的信息,存储节点信息可以是存储节点的序列号等可以标识存储节点的信息。
步骤1302、获取分布式事务的事务编号,基于事务编号、数据节点信息和存储节点信息形成数据节点的节点存储信息。
在实际应用中,分布式系统中可能同时存在多个分布式事务,为了区分不同的分布式事务,一般会用序列号标识不同的分布式事务,分布式事务的序列号可以称为事务编号。
具体的,针对每个数据节点,可以将分布式事务的事务编号、数据节点信息和对应的存储节点信息进行关联,形成一条节点存储信息。
步骤1303、将节点存储信息发送至对应的存储节点进行存储。
在一个具体的例子中,数据节点DN1是数据节点DN2的存储节点,分布式事务的事务编号记为ID,那么在数据节点DN1中可以存储节点存储信息[DN1,ID,DN2],表示数据节点DN1保存了事务编号为ID的分布式事务的清单节点数据节点DN2。在计算节点重启后,计算节点收到数据节点DN1反馈的节点存储信息[DN1,ID,DN2]后,可以继续向数据节点DN2获取下一个节点存储信息[DN2,ID,DN3],直到DNn的节点存储信息保存的清单节点指回到数据节点DN1,这样形成一个闭环后,所有数据节点信息获取完毕。此时,所有数据节点信息就可以构造出完整的分布式事务节点清单。
本实施例的技术方案,通过获取分布式事务关联的分支事务信息,构建分布式事务节点清单,确定分布式事务节点清单中各数据节点分别对应的存储节点,其中,存储节点从分布式事务节点清单中除所对应数据节点以外的其他数据节点中选定,当分布式事务提交时,将各数据节点的节点信息存储至对应的存储节点中,当计算节点发生故障并重启时,可以快速准确从相关数据节点中获取节点信息,并最终构造出完整的分布式事务节点清单,实现了在不丢失节点清单信息的情况下,降低节点信息传输和保存的数据量。
实施例二
图2为本发明实施例二提供的一种分布式事务节点信息存储方法的流程图。本实施例在上述实施例的基础上,进一步优化了上述分布式事务节点信息存储方法。
如图2所示,该方法具体包括:
步骤210、获取分布式事务关联的分支事务信息,构建分布式事务节点清单。
步骤220、确定分布式事务节点清单中各数据节点分别对应的存储节点。
步骤230、当分布式事务提交时,将各数据节点的节点信息存储至对应的存储节点中。
实际应用中,存储节点可以以节点存储信息的形式存储对应数据节点的节点信息。
步骤240、接收数据节点发送的检验节点存储信息。
具体的,在进行事务提交时,数据节点可以不断向计算节点反馈存储的节点存储信息,在本实施例中,可以将数据节点反馈给计算节点的节点存储信息称为检验节点存储信息。计算节点在接收到任意数据节点发送的检验节点存储信息时,都要进行判断,由于检验节点存储信息中记载了分布式事务的事务编号,可以将检验节点存储信息中事务编号对应的分布式事务确定为目标分布式事务,计算节点可以查找目标分布式事务是否存在,如果不存在,则进行步骤250。
步骤250、当检验节点存储信息关联的目标分布式事务不存在时,根据检验节点存储信息构建目标分布式事务节点清单。
具体的,如果检验节点存储信息关联的目标分布式事务不存在,说明计算节点故障重启了,此时需要重新构建目标分布式事务对应的分布式事务节点清单,即目标分布式事务节点清单。
可选的,步骤250可以通过以下步骤实现:
步骤2501、确定检验节点存储信息中包含的检验数据节点和检验存储节点。
在本实施例中,可以将反馈检验节点存储信息的数据节点确定为检验数据节点,检验数据节点中存储的非己的数据节点作为检验存储节点。例如,检验节点存储信息为[DN1,ID,DN2],那么数据节点DN1即为检验数据节点,数据节点DN2即为检验存储节点。
步骤2502、将检验存储节点作为目标数据节点,获取目标数据节点存储的目标节点存储信息,确定目标节点存储信息中的目标存储节点。
具体的,可以将检验存储节点作为目标数据节点,继续查找与目标分布式事务相关的数据节点。继续步骤2501中的示例,将数据节点DN2作为目标数据节点,获取目标数据节点DN2存储的目标节点存储信息[DN2,ID,DN3],确定数据节点DN3为目标存储节点。
步骤2503、将目标存储节点确定为下一个目标数据节点,继续确定下一个目标存储节点,直到新确定的目标存储节点为检验数据节点。
具体的,通过循环遍历的方式,逐个查找到目标分布式事务相关的所有数据节点。继续步骤2502中的示例,可以将数据节点DN3作为下一个目标数据节点,获取目标数据节点DN3存储的目标节点存储信息[DN3,ID,DN4],确定数据节点DN4为下一个目标存储节点,以此类推,直到新确定的目标数据节点为DNn,目标数据节点DNn存储的目标节点存储信息为[DNn,ID,DN1],那么新确定的目标存储节点即为检验数据节点DN1,结束查找操作。
步骤2504、根据查找到的所有目标存储节点形成目标分布式事务节点清单。
具体的,可以根据查找到的所有目标存储节点DN1,DN2,……,DNn,形成目标分布式事务节点清单LIST(DN1,DN2,……,DNn)。
本实施例的技术方案,通过获取分布式事务关联的分支事务信息,构建分布式事务节点清单,确定分布式事务节点清单中各数据节点分别对应的存储节点,当分布式事务提交时,将各数据节点的节点信息存储至对应的存储节点中,并接收数据节点发送的检验节点存储信息,当检验节点存储信息关联的目标分布式事务不存在时,根据检验节点存储信息构建目标分布式事务节点清单。本实施例当计算节点发生故障并重启时,可以快速准确从相关数据节点中获取节点信息,并最终构造出完整的分布式事务节点清单,实现了在不丢失节点清单信息的情况下,降低节点信息传输和保存的数据量。
实施例三
本发明实施例所提供的分布式事务节点信息存储装置可执行本发明任意实施例所提供的分布式事务节点信息存储方法,具备执行方法相应的功能模块和有益效果。图3是本发明实施例三提供的一种分布式事务节点信息存储装置的结构框图,如图3所示,该装置包括:事务节点清单构建模块310、存储节点确定模块320和节点信息存储模块330。
事务节点清单构建模块310,用于获取分布式事务关联的分支事务信息,构建分布式事务节点清单。
存储节点确定模块320,用于确定所述分布式事务节点清单中各数据节点分别对应的存储节点,其中,存储节点从所述分布式事务节点清单中除所对应数据节点以外的其他数据节点中选定。
节点信息存储模块330,用于当所述分布式事务提交时,将各所述数据节点的节点信息存储至对应的存储节点中。
本实施例的技术方案,通过获取分布式事务关联的分支事务信息,构建分布式事务节点清单,确定分布式事务节点清单中各数据节点分别对应的存储节点,其中,存储节点从分布式事务节点清单中除所对应数据节点以外的其他数据节点中选定,当分布式事务提交时,将各数据节点的节点信息存储至对应的存储节点中,当计算节点发生故障并重启时,可以快速准确从相关数据节点中获取节点信息,并最终构造出完整的分布式事务节点清单,实现了在不丢失节点清单信息的情况下,降低节点信息传输和保存的数据量。
可选的,所述存储节点确定模块320,具体用于:
将所述分布式事务节点清单中包含的所有数据节点进行排序,确定首端数据节点、中间数据节点以及末端数据节点;
将所述末端数据节点作为所述首端数据节点对应的存储节点;
针对每个中间数据节点,将与所述中间数据节点相邻的前一数据节点作为所述中间数据节点对应的存储节点;
将与所述末端数据节点相邻的前一数据节点作为所述末端数据节点对应的存储节点。
可选的,所述节点信息存储模块330,具体用于:
当所述分布式事务提交时,针对每个数据节点,确定所述数据节点的数据节点信息以及对应的存储节点的存储节点信息;
获取所述分布式事务的事务编号,基于所述事务编号、所述数据节点信息和所述存储节点信息形成所述数据节点的节点存储信息;
将所述节点存储信息发送至对应的存储节点进行存储。
可选的,所述装置还包括事务节点清单重构模块,所述事务节点清单重构模块用于:
接收数据节点发送的检验节点存储信息;
当所述检验节点存储信息关联的目标分布式事务不存在时,根据所述检验节点存储信息构建目标分布式事务节点清单。
可选的,所述根据所述检验节点存储信息构建目标分布式事务节点清单,包括:
确定所述检验节点存储信息中包含的检验数据节点和检验存储节点;
将所述检验存储节点作为目标数据节点,获取所述目标数据节点存储的目标节点存储信息,确定所述目标节点存储信息中的目标存储节点;
将所述目标存储节点确定为下一个目标数据节点,继续确定下一个目标存储节点,直到新确定的目标存储节点为所述检验数据节点;
根据查找到的所有目标存储节点形成目标分布式事务节点清单。
实施例四
图4为本发明实施例四提供的一种计算机设备的结构框图,如图4所示,该计算机设备包括处理器410、存储器420、输入装置430和输出装置440;计算机设备中处理器410的数量可以是一个或多个,图4中以一个处理器410为例;计算机设备中的处理器410、存储器420、输入装置430和输出装置440可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的分布式事务节点信息存储方法对应的程序指令/模块(例如,分布式事务节点信息存储装置中的事务节点清单构建模块310、存储节点确定模块320和节点信息存储模块330)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的分布式事务节点信息存储方法。
存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种分布式事务节点信息存储方法,该方法包括:
获取分布式事务关联的分支事务信息,构建分布式事务节点清单;
确定所述分布式事务节点清单中各数据节点分别对应的存储节点,其中,存储节点从所述分布式事务节点清单中除所对应数据节点以外的其他数据节点中选定;
当所述分布式事务提交时,将各所述数据节点的节点信息存储至对应的存储节点中。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的分布式事务节点信息存储方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述分布式事务节点信息存储装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种跨数据源的数据存储装置