首页> 中国专利> 一种分布式系统全局一致性的时间点恢复方法及装置

一种分布式系统全局一致性的时间点恢复方法及装置

摘要

本发明公开了一种分布式系统全局一致性的时间点恢复方法及装置,所述方法,包括:根据全局各节点的信息确定目标逻辑时间;参照所述目标逻辑时间,各所述节点独立并发的回滚全局事务至协调节点的所述目标逻辑时间,实现全局一致的时间点状态。本发明根据全局各节点的信息确定目标逻辑时间,再进行回滚操作,实现了在分布式数据库中的全局事务按时间一致点恢复,达到了全局一致的时间点状态。

著录项

  • 公开/公告号CN113238892A

    专利类型发明专利

  • 公开/公告日2021-08-10

    原文格式PDF

  • 申请/专利权人 深圳巨杉数据库软件有限公司;

    申请/专利号CN202110507986.1

  • 申请日2021-05-10

  • 分类号G06F11/14(20060101);G06F16/23(20190101);G06F16/27(20190101);

  • 代理机构44202 广州三环专利商标代理有限公司;

  • 代理人陈旭红;吴落

  • 地址 518000 广东省深圳市南山区高新技术产业园北区清华信息港科研楼十楼1005

  • 入库时间 2023-06-19 12:10:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-01-04

    授权

    发明专利权授予

说明书

技术领域

本发明涉及分布式系统时间点管理技术领域,尤其涉及一种全局一致性时间点的实现方法及装置。

背景技术

在分布式数据库中,各个数据节点通常使用独立的日志来记录发生在本节点上数据的变更,在备份甚至恢复时也是按节点独立进行。这样做的好处在于可以提高各节点间的并发性,特别是在节点需要恢复时,各节点可以独立处理。但在全局事务需要跨多节点时,对如何保证节点间的事务在回放时仍然能保证全局事务的一致性提出了一个巨大的挑战。比如下面列出的两种场景:

1.由于备份开始时间的差距,某些节点的备份中可能包含了某个事务的提交日志,但其他节点的备份中尚未包含那些事务的提交日志信息。那么各节点独立实现恢复时部分节点会完成该事务,部分节点会回滚该事务,这样就无法保证所有节点恢复后整个分布式数据库数据的全局一致性。

2.分步式数据库在线恢复到过去某一时间点,由于各参与节点机器时间可能存在差异,虽然所有节点都有足够的日志进行回滚,但在对应特定时间点各节点事务状态可能不一致,如果各节点独立恢复的话,最终还是可能会造成特定事务在部分节点提交,而在另外的节点上回滚了,无法实现全局事务的一致性。

若采用全局统一的逻辑日志,虽然可以保证全局事务的一致性,但各节点上的操作必须相互协调,无法实现独立并发操作,导致性能效率低下。

发明内容

本发明目的在于,提供一种分布式系统全局一致性的时间点恢复方法及装置,以解决全局不统一的问题。

为实现上述目的,本发明提供一种分布式系统全局一致性的时间点恢复方法,包括:

根据全局各节点的信息确定目标逻辑时间;

参照所述目标逻辑时间,各所述节点独立并发的回滚全局事务至协调节点的所述目标逻辑时间,实现全局一致的时间点状态。

优选地,所述根据全局各节点的信息确定目标逻辑时间,包括:

根据所述时间序列协议,在各所述节点将所述逻辑时间与所述机器时间作对应转换,根据当下时间点(RT

若当下时间点的机器时间为RT

LT

若当下时间点的逻辑时间为LT

RT

优选地,所述根据全局各节点的信息确定目标逻辑时间,包括:

所述全局各节点的信息包括全局事务,根据给定的逻辑时间点,比较所述全局事务在读事务的开始时间与写事务的提交时间,确定在所述给定的逻辑时间点是否已经提交,若未提交,则所述全局事务在所述给定的逻辑时间点恢复时进行回滚;

各所述节点根据各自的日志上执行回滚,其中,每个节点都回滚了所有对指定时间点不可见的事务,达到全局一致性,确定所述目标逻辑时间。

优选地,所述参照所述目标逻辑时间,各所述节点独立并发的回滚全局事务至协调节点的所述目标逻辑时间,实现全局一致的时间点状态,包括:

在各所述节点执行回滚操作,其中,回滚前所述协调节点将所述目标逻辑时间发送至各所述节点,各所述节点将从回滚开始时的末尾或新一条日志记录开始反向扫描所述各所述节点全局事务的日志文件,各所述节点将回滚所有提交时间戳大于所述目标逻辑时间的事务。

本发明还提供一种分布式系统全局一致性的时间点恢复装置,包括:

确定模块,用于根据全局各节点的信息确定目标逻辑时间;

实现模块,用于参照所述目标逻辑时间,各所述节点独立并发的回滚全局事务至协调节点的所述目标逻辑时间,实现全局一致的时间点状态。

优选地,所述确定模块,还用于:

根据所述时间序列协议,在各所述节点将所述逻辑时间与所述机器时间作对应转换,根据当下时间点(RT

若当下时间点的机器时间为RT

LT

若当下时间点的逻辑时间为LT

RT

优选地,所述确定模块,还用于:

所述全局各节点的信息包括全局事务,根据给定的逻辑时间点,比较所述全局事务在读事务的开始时间与写事务的提交时间,确定在所述给定的逻辑时间点是否已经提交,若未提交,则所述全局事务在所述给定的逻辑时间点恢复时进行回滚;

各所述节点根据各自的日志上执行回滚,其中,每个节点都回滚了所有对指定时间点不可见的事务,达到全局一致性,确定所述目标逻辑时间。

优选地,所述实现模块,还用于:

在各所述节点执行回滚操作,其中,回滚前所述协调节点将所述目标逻辑时间发送至各所述节点,各所述节点将从回滚开始时的末尾或新一条日志记录开始反向扫描所述各所述节点全局事务的日志文件,各所述节点将回滚所有提交时间戳大于所述目标逻辑时间的事务。

本发明根据全局各节点的信息确定目标逻辑时间,参照目标逻辑时间,各节点的回滚全局事务至协调节点的目标逻辑时间,实现全局一致的时间点状态,实现了在分布式数据库中的全局事务按时间一致点恢复,达到了全局一致的时间点状态。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明某一实施例提供的分布式系统全局一致性的时间点恢复方法的流程示意图;

图2是本发明另一实施例提供的分布式系统全局一致性的时间点恢复方法的流程示意图;

图3是本发明某一实施例提供的分布式系统全局一致性的时间点恢复装置的结构示意图。

具体实施方式

下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,文中所使用的步骤编号仅是为了方便描述,不作为对步骤执行先后顺序的限定。

应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1,本发明提供一种分布式系统全局一致性的时间点恢复方法,包括:

S101、根据全局各节点的信息确定目标逻辑时间。

全局事务:巨杉数据库(SequoiaDB)使用时间序列协议(STP,Serial TimeProtocol)为分布式事务分配全局时间,并配合MVCC实现可见性算法的事务成为全局事务。时间序列协议:时间序列协议(STP,Serial Time Protocol)是巨杉数据库内部逻辑时间同步的协议,在巨杉数据库中,逻辑时间戳主要用于全局事务处理。全局逻辑时间:逻辑时间是巨杉数据库内部用于表示时间先后顺序,但区别于实际机器时间的逻辑时间戳,全局逻辑时间是STP server主节点上的逻辑时间,STP的其他节点通过STP的时间同步算法向STPserver主节点同步逻辑时间。恢复窗口:可以支持全局一致性时间点恢复的最小逻辑时间点和最大逻辑时间点组成恢复窗口。

具体的,分布式系统分为多个数据节点和一个协调节点,分布式数据库可以使用一个时间协议,保证各节点可以使用一个逻辑上可序列化的时间戳,其具体实现可以不同,可以是类似google原子钟的集中式实现,也可以是类似SequoiaDB STP的分布式实现,本发明以SequoiaDB提供的STP(Sequence Time Protocol)为例,STP产生的逻辑时间可供数据库内部区分各事务或操作的时间先后顺序,用于全局事务处理。STP部署于数据库集群的各个机器上,以机器为单位维护逻辑时间戳,各STP节点定期与STP server主节点同步对时维持一个较小的逻辑时间容忍误差,在STP基础上可以实现分布式全局逻辑时间到系统机器时间的对应转换,其基本原理如下:

根据时间序列协议,定时校验和保存逻辑时间和机器时间的影射关系,生成影射关系历史列表,其中,校验和保存包括,任意两段相邻时间的逻辑时间和机器时间的误差在一定误差范围内,比如50ms,不需要保存至影射关系历史列表,否则保存,具体的,STP主节点定时约1分钟尝试校验和保存一次逻辑时间和机器时间的影射关系,维护一个逻辑时间和机器时间的影射关系历史列表,并保存在STP管理的数据库中,进一步保证数据的持久化和可靠性,为了减小影射关系历史列表的大小,每次校验时,如果逻辑时间和机器时间之差和上次校验时的时间差在一定误差范围内,比如50ms,则不需要进行保存。

STP的其他节点通过SequoiaDB的数据同步算法,每隔一段时间向STP主节点增量同步逻辑时间和机器时间映射关系的历史列表,因此从整个STP集群来看,逻辑时间和机器时间的映射关系是全局一致的。

逻辑时间和机器时间转换的计算方法是基于历史时间记录计算的,例如,取一条最接近的较旧的历史记录进行计算,假设找到临近的历史记录(RT

若当下时间点的机器时间为RT

LT

若当下时间点的逻辑时间为LT

RT

如果没有历史记录,表示逻辑时间和机器时间之间没有时间差,可以直接返回输入作为结果,由于STP本身可以应用在各类分布式系统而不局限于数据库系统中,本发明实现的机器时间到逻辑时间的对应转换也可应用于各类分布式系统中。

全局各节点的信息包括全局事务,根据给定的逻辑时间点,比较某事务的提交时间和给定的逻辑时间点,确定该事务在给定的逻辑时间点是否已经提交,若未提交,则全局事务在给定的逻辑时间点恢复时进行回滚,各节点根据各自的日志上执行回滚,其中,每个节点都回滚了所有对指定时间点不可见的事务,达到全局一致性,确定目标逻辑时间。

分布式数据库集群本身也可使用时间协议来提供的逻辑时间,用于全局事务处理,具体的,在事务开始时和事务提交时,数据库通过STP分别获取两次全局逻辑时间作为事务的开始时间和提交时间,并通过读事务的开始时间和写事务的提交时间对MVCC记录的可见性进行判断。对于给定的一个逻辑时间点,通过比较事务提交时间可以确定这个事务在这个逻辑时间点是否已经提交,或者还没有提交,如果还没有提交,则这个事务需要在时间点恢复时进行回滚。

由于备份或日志以及部分操作类型的限制,每个节点可能会产生一个有效的时间窗,那么最终也会影响到汇总判断一个全局有效的时间窗口。但在广义的情况下,没有日志、备份或操作的限制,该时间窗口将是从数据库开始时间到恢复准备的时间。具体的,节点需要创建一个恢复时间窗口,其左侧由最小可恢复时间限制,右侧由最大可恢复时间限制,其中,最小的可恢复时间是可用日志的开始或最新的不可逆操作(以较晚者为准),最大可恢复时间取决于恢复方案:如果采用离线恢复方案,该节点可采用恢复时使用的备份时间,如果采用联机系统闪回恢复方案,节点则可以采用运行准备操作的时间。

协调节点从所有数据节点收集恢复时间窗口,并在每个节点上收集最大提交时间,全局一致性窗口表示群集可以恢复到的时间范围,它的计算方式为[min(set(minRecoverable Times)),min(min(set(max Recoverable Times)),max(set(max CommitTimes)))],如果窗口的右侧受max Recoverable Times的限制,则意味着在某些节点上的某些操作提交要晚于采用的备份时间或者是节点上的准备操作时间,如果右侧受到maxCommit Times的限制,则表示集群在两时间点之间没有事务的提交。

S102、参照所述目标逻辑时间,各所述节点独立并发的回滚全局事务至协调节点的所述目标逻辑时间,实现全局一致的时间点状态。

具体的,在各节点执行回滚操作,其中,回滚前协调节点将目标逻辑时间发送至各节点,各节点将从回滚开始时的末尾或新一条日志记录开始反向扫描各节点全局事务的日志文件,各节点将回滚所有提交时间戳大于目标逻辑时间的事务。

系统在恢复过程中需要冻结数据访问,主要是进行变更,以确保全局恢复窗口准确且子操作可重复,在分布式系统中,此类数据访问控制可以发生在访问发出的节点上,也可以发生在数据所处的节点上,每个节点在数据操作前可以检查系统是否处于恢复状态,如果设置了恢复状态,则将阻止尝试在节点上的事务读取或更改数据,当从备份中还原节点时,则将直接设置此状态,以防止在节点启动到恢复操作完成之间访问数据;在联机恢复时,用户可以通过一个恢复准备操作将所有节点设置成恢复状态,该状态在所有恢复操作成功完成后,或者用户取消恢复时重置。

为保证这个恢复状态被持久化,且所有新加入集群的节点都能看到该状态,当从协调节点发出的恢复准备操作时,编目节点上会设置成集群恢复状态,同时所有运行的数据节点也会设置成相应恢复状态。当新节点加入集群时,在向编目节点注册时,就可以提取到状态信息并设置本节点为恢复状态。这样可以保证分布式系统中所有节点都处于恢复状态。

请参照图2,通过在所有数据节点根据各自的日志上执行回滚操作,直到每个节点都回滚了所有针对指定时间点不可见的事务,可以达到全局一致性。回滚是通过以相反的顺序对数据库日志中的每个操作的进行逆向操作来撤销日志记录中描述的动作。传统的事务回滚涉及仅撤消指定事务的记录,其中,回滚可以根据条件并发的撤销多个事务中的记录。

回滚前协调节点会将目标时间发送到所有数据节点,各数据节点将从回滚开始时的末尾或最新日志记录开始反向扫描其日志文件,扫描读取一条记录,执行撤消操作,然后再读取前一条记录,撤消操作将作为新记录写入,并插入到数据库日志的末尾,这意味着日志将随着回滚的进行而增长,其中,撤销操作可能会因为各种原因操作失败,添加的日志保证在失败的情况下可恢复至撤销开始之前的状态。节点将回滚所有提交时间戳大于目标时间的事务,在日志中,提交记录将是事务的最后一条记录,因此反向扫描将首先找到该事务,并能够决定是否应撤消该事务,通过创建一个需要回滚事务的映射表,可以使扫描程序快速的确定某条日志是否需要被回滚。本系统可以保证完成后,在目标时间之后提交的所有事务都被完全回滚,只有这样,节点数据才可被视为处于目标时间点,恢复状态也保证在操作开始后没有任何新的数据操作日志直至恢复状态被重置。

本发明在分步式数据库中各节点仍然实现独立的日志,备份和恢复流程,节点间没有相互制约、通讯和等待,从而保证的运行状态和在备份恢复时的并发性和性能,通过结合机器时间到全局逻辑时间的对应关系,且根据需求持久化该对应关系,并在事务序列中使用该逻辑时间,提供了从机器时间到事务可见性的判断方式的转换,通过获取全局所有节点各自独立的信息,汇总生成全局一致的目标逻辑时间,然后各节点参照该逻辑时间独立并发的回滚全局事务至目标逻辑时间,达到全局一致的时间点状态。

请参阅图3,本发明提供一种分布式系统全局一致性的时间点恢复装置,包括:

确定模块11,用于根据全局各节点的信息确定目标逻辑时间。

实现模块12,用于参照所述目标逻辑时间,各所述节点独立并发的回滚全局事务至协调节点的所述目标逻辑时间,实现全局一致的时间点状态。

关于分布式系统全局一致性的时间点恢复装置的具体限定可以参见上文中对于的限定,在此不再赘述。上述分布式系统全局一致性的时间点恢复装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号