CN112667437A - 一种多副本分布式集群恢复方法、装置、设备及存储介质 - Google Patents
一种多副本分布式集群恢复方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112667437A CN112667437A CN202011538350.5A CN202011538350A CN112667437A CN 112667437 A CN112667437 A CN 112667437A CN 202011538350 A CN202011538350 A CN 202011538350A CN 112667437 A CN112667437 A CN 112667437A
- Authority
- CN
- China
- Prior art keywords
- node
- list
- data object
- recovery
- cluster
- 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.)
- Granted
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 148
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种多副本分布式集群恢复方法,该方法包括:在检测到集群的构成状态发生变化时,将当前位于本节点的数据对象列表发送给主节点,以使主节点确定每个节点的待恢复列表;根据待恢复列表,确定拉取列表;依次遍历拉取列表进行数据对象的拉取操作;在集群恢复过程中,如果接收到主节点发送的恢复取消指令,则重复执行将本节点的数据对象列表发送给主节点的步骤;在数据对象均拉取完成后,向主节点发送恢复完成信息,以使主节点在所有节点恢复完成时标记本次集群恢复完成。应用本申请所提供的技术方案,可以高效地进行集群恢复,减少对客户端业务的影响。本申请还公开了一种多副本分布式集群恢复装置、设备及存储介质,具有相应技术效果。
Description
技术领域
本申请涉及计算机应用技术领域,特别是涉及一种多副本分布式集群恢复方法、装置、设备及存储介质。
背景技术
多副本分布式集群由多个节点构成,在多副本分布式集群中,数据以多副本的形式存在于各个节点上,数据的组织形式为数据对象,每个数据对象大小可自定义,n个副本的数据对象依据一定的算法分散存储在m个节点上。对于一个特定的数据对象,在同一个构成状态下,其分布的位置是一定的。
在多副本分布式集群运行过程中,可能会出现节点的上线、离线等情况,这种情况会改变集群的构成状态,需要对集群中的数据对象进行重新分布,以进行集群恢复,集群恢复过程将会对客户端业务产生影响。所以,如何高效地进行集群恢复,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供一种多副本分布式集群恢复方法、装置、设备及存储介质,以高效地进行集群恢复,减少对客户端业务的影响。
为解决上述技术问题,本申请提供如下技术方案:
一种多副本分布式集群恢复方法,应用于多副本分布式集群中的任意一个节点,所述方法包括:
在检测到所述多副本分布式集群的构成状态发生变化的情况下,将当前位于本节点的数据对象列表发送给所述多副本分布式集群的主节点,以使所述主节点基于收集到的所述数据对象列表,确定每个节点的待恢复列表,并分别分发给各个节点;
根据接收到的所述待恢复列表,确定需从其他节点拉取数据对象的拉取列表;
依次遍历所述拉取列表,从相应节点拉取相应的数据对象到本节点;
在集群恢复过程中,如果接收到所述主节点发送的恢复取消指令,则重复执行所述将本节点的数据对象列表发送给所述多副本分布式集群的主节点的步骤;
在所述拉取列表中的数据对象均拉取完成后,向所述主节点发送恢复完成信息,以使所述主节点在接收到所有节点发送的所述恢复完成信息后,标记本次集群恢复完成。
在本申请的一种具体实施方式中,所述待恢复列表为:所述主节点在基于收集到的所述数据对象列表,获得集群对象列表后,对所述集群对象列表按照副本数以节点拆分获得的列表。
在本申请的一种具体实施方式中,所述根据接收到的所述待恢复列表,确定需从其他节点拉取数据对象的拉取列表,包括:
根据所述多副本分布式集群的当前构成状态,对位于本节点中的所有数据对象进行分类,获得稳定列表,所述稳定列表包括位于本节点的所有数据对象中在当前构成状态下属于本节点的数据对象;
将接收到的所述待恢复列表与所述稳定列表进行比较,将存在于所述待恢复列表中但未存在于所述稳定列表中的数据对象确定为需从其他节点拉取的数据对象,生成拉取列表。
在本申请的一种具体实施方式中,所述依次遍历所述拉取列表,从相应节点拉取相应的数据对象到本节点,包括:
针对所述拉取列表中的任意一个数据对象,确定该数据对象所在的节点;
在该数据对象所在的节点中拉取该数据对象到本节点。
在本申请的一种具体实施方式中,所述确定该数据对象所在的节点,包括:
查询所述待恢复列表,获得该数据对象所在的节点;
或者,
按照设定的数据对象存放规则,计算得到该数据对象所在的节点。
在本申请的一种具体实施方式中,在所述拉取列表中的数据对象均拉取完成后,所述向所述主节点发送恢复完成信息之前,还包括:
删除位于本节点中在当前构成状态下不属于本节点的数据对象。
在本申请的一种具体实施方式中,所述拉取列表为双向链表形式,所述方法还包括:
在集群恢复过程中,如果接收到的客户端下发的IO所针对的数据对象为所述拉取列表中未拉取的数据对象,则在当前拉取操作完成后,将所述双向链表的指针移动到所述IO所针对的数据对象上,以优先拉取所述IO所针对的数据对象。
一种多副本分布式集群恢复装置,应用于多副本分布式集群中的任意一个节点,所述装置包括:
数据对象列表发送模块,用于在检测到所述多副本分布式集群的构成状态发生变化的情况下,将当前位于本节点的数据对象列表发送给所述多副本分布式集群的主节点,以使所述主节点基于收集到的所述数据对象列表,确定每个节点的待恢复列表,并分别分发给各个节点;
拉取列表确定模块,用于根据接收到的所述待恢复列表,确定需从其他节点拉取数据对象的拉取列表;
数据对象拉取模块,用于依次遍历所述拉取列表,从相应节点拉取相应的数据对象到本节点;
恢复控制模块,用于在集群恢复过程中,如果接收到所述主节点发送的恢复取消指令,则重复执行所述将本节点的数据对象列表发送给所述多副本分布式集群的主节点的步骤;
恢复完成信息发送模块,用于在所述拉取列表中的数据对象均拉取完成后,向所述主节点发送恢复完成信息,以使所述主节点在接收到所有节点发送的所述恢复完成信息后,标记本次集群恢复完成。
一种多副本分布式集群恢复设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任一项所述多副本分布式集群恢复方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述多副本分布式集群恢复方法的步骤。
应用本申请实施例所提供的技术方案,增加了可被打断的恢复流程,在集群恢复过程中,在有新的恢复事件发生时,主节点向各节点发送恢复取消指令,打断当前的恢复流程,重新进行恢复操作。这样可以缩短多次恢复事件连续发生时的恢复时间,高效地进行集群恢复,减少对客户端业务的影响。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种多副本分布式集群恢复方法的实施流程图;
图2为本申请实施例中一种多副本分布式集群恢复装置的结构示意图;
图3为本申请实施例中一种多副本分布式集群恢复设备的结构示意图。
具体实施方式
本申请的核心是提供一种多副本分布式集群恢复方法,该方法可以应用于多副本分布式集群中的任意一个节点。多副本分布式集群由多个节点构成,在多副本分布式集群中,数据以多副本的形式存在于各个节点上,数据的组织形式为数据对象。
在多副本分布式集群中,只要有节点的上线、离线,就会产生一个恢复事件。在相关技术中,会按照时间顺序依次处理每次恢复事件,每次都需要进行全局计算,将数据对象在全局范围内均衡。一次恢复事件完全处理完成后,才会进行下一次恢复事件的处理,而两次恢复事件在时间上可能非常相近,这就会产生连续的大批量的数据读写,同时会带来过大的网络带宽消耗,进而影响客户端正常业务IO(Input/Output,输入/输出)的下发。
本申请实施例针对这种情况,增加了可被打断的恢复流程,在集群恢复过程中,在有新的恢复事件发生时,主节点向各节点发送恢复取消指令,打断当前的恢复流程,重新进行恢复操作。这样可以缩短多次恢复事件连续发生时的恢复时间,高效地进行集群恢复,减少对客户端业务的影响。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,为本申请实施例所提供的一种多副本分布式集群恢复方法的实施流程图,该方法可以包括以下步骤:
S110:在检测到多副本分布式集群的构成状态发生变化的情况下,将当前位于本节点的数据对象列表发送给多副本分布式集群的主节点,以使主节点基于收集到的数据对象列表,确定每个节点的待恢复列表,并分别分发给各个节点。
在实际应用中,在多副本分布式集群中,如果有节点上线或离线,都会导致集群的构成状态发生变化。构成状态可以用epoch来表示,表示集群在某一时刻状态,其信息包含当前集群中存在哪些节点。
各节点在检测到多副本分布式集群的构成状态发生变化的情况下,可以将当前位于本节点的数据对象列表发送给多副本分布式集群的主节点。该主节点可以通过各节点选举得到,或者通过设定规则得到,如将第一个上线的节点确定为主节点。主节点为多副本分布式集群中的一个节点。本申请实施例的技术方案应用于多副本分布式集群中的任意一个节点,其中包括主节点。
主节点在收集到各节点发送的数据对象列表后,可以基于收集到的数据对象列表,确定每个节点的待恢复列表,并分别分发给各个节点。
具体的,待恢复列表可以为:主节点在基于收集到的数据对象列表,获得集群对象列表后,对集群对象列表按照副本数以节点拆分获得的列表。
主节点可以对收集到的数据对象列表进行汇总和识别,获得集群对象列表,集群对象列表中包含集群的所有数据对象,该数据对象为单副本数据对象。主节点对集群对象列表中的数据对象按照副本数以节点拆分,可以得到各个节点的待恢复列表。然后将各个节点的待恢复列表分别分发给各节点。副本数可以根据实际情况进行设定和调整,如为3。
S120:根据接收到的待恢复列表,确定需从其他节点拉取数据对象的拉取列表。
多副本分布式集群中的任意一个节点,可以接收到主节点下发的待恢复列表。对于任意一个节点而言,该节点可以根据接收到的待恢复列表,确定哪些数据对象需要从其他节点拉取,基于这些数据对象可以生成拉取列表。具体的,可以将待恢复列表中的所有数据对象均确定为需从其他节点拉取的数据对象,生成拉取列表。
在本申请的一种具体实施方式中,该步骤可以包括以下步骤:
步骤一:根据多副本分布式集群的当前构成状态,对位于本节点中的所有数据对象进行分类,获得稳定列表,稳定列表包括位于本节点的所有数据对象中在当前构成状态下属于本节点的数据对象;
步骤二:将接收到的待恢复列表与稳定列表进行比较,将存在于待恢复列表中但未存在于稳定列表中的数据对象确定为需从其他节点拉取的数据对象,生成拉取列表。
为便于描述,将上述两个步骤结合起来进行说明。
在本申请实施例中,节点在检测到多副本分布式集群的构成状态发生变化的情况下,可以根据多副本分布式集群的当前构成状态,对位于本节点中的所有数据对象进行分类。具体的,可以通过对位于本节点中的所有数据对象进行哈希计算,确定位于本节点中的各数据对象在当前构成状态下是否属于本节点,属于本节点的为一类,不属于本节点的为另一类。各节点可以基于同一计算规则确定一个数据对象在当前构成状态下属于哪个节点,得到的结果是一致的。
对位于本节点中的所有数据对象进行分类后,可以获得稳定列表,该稳定列表中包括位于本节点的所有数据对象中在当前构成状态下属于本节点的数据对象。同时,还可以获得不稳定列表,该不稳定列表中包括位于本节点的所有数据对象中在当前构成状态下不属于本节点的数据对象。稳定列表可以表示为stable列表,不稳定列表可以表示为unstable列表。
集群中的每个节点在检测到多副本分布式集群的构成状态发生变化的情况下,都可以获得这两个列表。节点在接收到主节点下发的待恢复列表后,可以将接收到的待恢复列表与本节点的稳定列表进行比较。待恢复列表中包括的是在当前构成状态下属于本节点的所有数据对象,稳定列表中包括的是当前位于本节点的所有数据对象中在当前构成状态下属于本节点的数据对象,将这两个列表进行比较,容易得出哪些数据对象属于本节点但当前没有位于本节点,需从其他节点拉取。可以将存在于待恢复列表中但未存在于稳定列表中的数据对象确定为需从其他节点拉取的数据对象,生成拉取列表。
将待恢复列表与稳定列表进行比较后,生成拉取列表,可以使得当前位于本节点同时在当前构成状态下也属于本节点的数据对象可以不从其他节点拉取,减少拉取数据量,减少数据读写量。
S130:依次遍历拉取列表,从相应节点拉取相应的数据对象到本节点。
确定需从其他节点拉取数据对象的拉取列表后,可以依次遍历拉取列表,从相应节点拉取相应的数据对象到本节点。具体的,针对拉取列表中的任意一个数据对象,可以确定该数据对象所在的节点,在该数据对象所在的节点中拉取该数据对象到本节点。确定该数据对象所在的节点,可以通过查询待恢复列表,获得该数据对象所在的节点,或者,按照设定的数据对象存放规则,计算得到该数据对象所在的节点。
即对于到哪个节点拉取哪个数据对象可以通过以下方式确定:
一种方式为:主节点在确定每个节点的待恢复列表时,可以同时通过数据对象存放规则,如通过哈希计算得到每个数据对象的存放位置,并将存放位置信息附加在待恢复列表中。这样各节点在接收到主节点下的待恢复列表后,即可得到待恢复列表中每个数据对象的存放位置信息,可以获知应该到哪个节点拉取哪个数据对象。
另一种方式为:各节点接收到待恢复列表,并确定拉取列表后,可以通过数据对象存放规则,如对拉取列表中的每个数据对象进行哈希计算,确定每个数据对象的存放位置,以确定应该到哪个节点拉取哪个数据对象。
S140:在集群恢复过程中,确定是否接收到主节点发送的恢复取消指令,如果接收到,则重复执行步骤S110将本节点的数据对象列表发送给多副本分布式集群的主节点的步骤。
节点依次遍历拉取列表,从相应节点拉取相应的数据对象到本节点。在集群恢复过程中,可能会因为其他节点的离线、新节点的上线等产生新的恢复事件,在这种情况下,主节点可以向各节点发送恢复取消指令。在接收到主节点发送的恢复取消指令后,可以重复执行步骤S110将本节点的数据对象列表发送给多副本分布式集群的主节点的步骤。在新的构成状态下重新开始恢复流程。
在实际应用中,各节点可以使用多线程处理,在各节点中可以单独添加管理线程,用于在接收到恢复取消指令时,取消当前恢复流程。
S150:在拉取列表中的数据对象均拉取完成后,向主节点发送恢复完成信息,以使主节点在接收到所有节点发送的恢复完成信息后,标记本次集群恢复完成。
多副本分布式集群中的每个节点均有相对应的拉取列表,各节点在拉取列表中的数据对象均拉取完成后,可以向主节点发送恢复完成信息,以通知主节点在本节点上的数据对象恢复已完成,即本节点中已经存在当前构成状态下属于本节点的所有数据对象。主节点在接收到所有节点发送的恢复完成信息后,可以标记本地集群恢复完成。当前构成状态即为集群最新的构成状态。
应用本申请实施例所提供的方法,增加了可被打断的恢复流程,在集群恢复过程中,在有新的恢复事件发生时,主节点向各节点发送恢复取消指令,打断当前的恢复流程,重新进行恢复操作。这样可以缩短多次恢复事件连续发生时的恢复时间,高效地进行集群恢复,减少对客户端业务的影响。
在本申请的一个实施例中,在拉取列表中的数据对象均拉取完成后,向主节点发送恢复完成信息之前,还包括:
删除位于本节点中在当前构成状态下不属于本节点的数据对象。
在本申请实施例中,在拉取列表中的数据对象均拉取完成后,本节点中已经存在当前构成状态下属于本节点的所有数据对象,可以删除位于本节点中在当前构成状态下不属于本节点的数据对象,以节省存储空间。具体的,如果本节点设置有不稳定列表,则可以直接将不稳定列表中的数据对象删除。
在将位于本节点中在当前构成状态下不属于本节点的数据对象删除后,可以向主节点发送恢复完成信息,表明本节点已经完成数据恢复操作。
在本申请的一个实施例中,拉取列表可以为双向链表形式,该方法还可以包括以下步骤:
在集群恢复过程中,如果接收到的客户端下发的IO所针对的数据对象为拉取列表中未拉取的数据对象,则在当前拉取操作完成后,将双向链表的指针移动到该IO所针对的数据对象上,以优先拉取该IO所针对的数据对象。
在本申请实施例中,拉取列表可以为双向链表形式,通过指针可以指向想要进行拉取的数据对象。
各节点依次遍历拉取列表,从相应节点拉取相应的数据对象到本节点。对于一个数据对象来说,在该数据对象没有被拉取完成时,如果接收到的客户端下发的IO针对该数据对象,则该IO将无法被响应,影响客户端业务。
本申请在集群恢复过程中,如果接收到的客户端下发的IO所针对的数据对象为拉取列表中未拉取的数据对象,则在当前拉取操作完成后,将双向链表的指针移动到该IO所针对的数据对象上,然后继续向下遍历,这样可以优先拉取该IO所针对的数据对象,保证客户端业务IO相关的数据对象被优先恢复,以及时对该IO进行响应,避免阻塞客户端业务IO。
本申请实施例通过集群恢复流程打断机制,有效避免了在节点连续上下线时集群的多次恢复,节省了网络带宽与业务流量,同时,优先恢复IO相关数据对象,可以保证客户端IO的正常下发,避免集群恢复过程中IO阻塞的情况发生。
相应于上面的方法实施例,本申请实施例还提供了一种多副本分布式集群恢复装置,应用于多副本分布式集群中的任意一个节点,下文描述的多副本分布式集群恢复与上文描述的多副本分布式集群恢复方法可相互对应参照。
参见图2所示,该装置包括以下模块:
数据对象列表发送模块210,用于在检测到多副本分布式集群的构成状态发生变化的情况下,将当前位于本节点的数据对象列表发送给多副本分布式集群的主节点,以使主节点基于收集到的数据对象列表,确定每个节点的待恢复列表,并分别分发给各个节点;
拉取列表确定模块220,用于根据接收到的待恢复列表,确定需从其他节点拉取数据对象的拉取列表;
数据对象拉取模块230,用于依次遍历拉取列表,从相应节点拉取相应的数据对象到本节点;
恢复控制模块240,用于在集群恢复过程中,如果接收到主节点发送的恢复取消指令,则重复执行将本节点的数据对象列表发送给多副本分布式集群的主节点的步骤;
恢复完成信息发送模块250,用于在拉取列表中的数据对象均拉取完成后,向主节点发送恢复完成信息,以使主节点在接收到所有节点发送的恢复完成信息后,标记本次集群恢复完成。
应用本申请实施例所提供的装置,增加了可被打断的恢复流程,在集群恢复过程中,在有新的恢复事件发生时,主节点向各节点发送恢复取消指令,打断当前的恢复流程,重新进行恢复操作。这样可以缩短多次恢复事件连续发生时的恢复时间,高效地进行集群恢复,减少对客户端业务的影响。
在本申请的一种具体实施方式中,待恢复列表为:主节点在基于收集到的数据对象列表,获得集群对象列表后,对集群对象列表按照副本数以节点拆分获得的列表。
在本申请的一种具体实施方式中,拉取列表确定模块220,用于:
根据多副本分布式集群的当前构成状态,对位于本节点中的所有数据对象进行分类,获得稳定列表,稳定列表包括位于本节点的所有数据对象中在当前构成状态下属于本节点的数据对象;
将接收到的待恢复列表与稳定列表进行比较,将存在于待恢复列表中但未存在于稳定列表中的数据对象确定为需从其他节点拉取的数据对象,生成拉取列表。
在本申请的一种具体实施方式中,数据对象拉取模块230,用于:
针对拉取列表中的任意一个数据对象,确定该数据对象所在的节点;
在该数据对象所在的节点中拉取该数据对象到本节点。
在本申请的一种具体实施方式中,数据对象拉取模块230,用于:
查询待恢复列表,获得该数据对象所在的节点;
或者,
按照设定的数据对象存放规则,计算得到该数据对象所在的节点。
在本申请的一种具体实施方式中,还包括数据对象删除模块,用于:
在拉取列表中的数据对象均拉取完成后,向主节点发送恢复完成信息之前,删除位于本节点中在当前构成状态下不属于本节点的数据对象。
在本申请的一种具体实施方式中,拉取列表为双向链表形式,该装置还包括优先拉取控制模块,用于:
在集群恢复过程中,如果接收到的客户端下发的IO所针对的数据对象为拉取列表中未拉取的数据对象,则在当前拉取操作完成后,将双向链表的指针移动到IO所针对的数据对象上,以优先拉取IO所针对的数据对象。
相应于上面的方法实施例,本申请实施例还提供了一种多副本分布式集群恢复设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述多副本分布式集群恢复方法的步骤。
如图3所示,为多副本分布式集群恢复设备的组成结构示意图,多副本分布式集群恢复设备可以包括:处理器10、存储器11、通信接口12和通信总线13。处理器10、存储器11、通信接口12均通过通信总线13完成相互间的通信。
在本申请实施例中,处理器10可以为中央处理器(Central Processing Unit,CPU)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
处理器10可以调用存储器11中存储的程序,具体的,处理器10可以执行多副本分布式集群恢复方法的实施例中的操作。
存储器11中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器11中至少存储有用于实现以下功能的程序:
在检测到多副本分布式集群的构成状态发生变化的情况下,将当前位于本节点的数据对象列表发送给多副本分布式集群的主节点,以使主节点基于收集到的数据对象列表,确定每个节点的待恢复列表,并分别分发给各个节点;
根据接收到的待恢复列表,确定需从其他节点拉取数据对象的拉取列表;
依次遍历拉取列表,从相应节点拉取相应的数据对象到本节点;
在集群恢复过程中,如果接收到主节点发送的恢复取消指令,则重复执行将本节点的数据对象列表发送给多副本分布式集群的主节点的步骤;
在拉取列表中的数据对象均拉取完成后,向主节点发送恢复完成信息,以使主节点在接收到所有节点发送的恢复完成信息后,标记本次集群恢复完成。
在一种可能的实现方式中,存储器11可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能(比如信息交互功能、数据拉取功能)所需的应用程序等;存储数据区可存储使用过程中所创建的数据,如对象数据、列表数据等。
此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
通信接口13可以为通信模块的接口,用于与其他设备或者系统连接。
当然,需要说明的是,图3所示的结构并不构成对本申请实施例中多副本分布式集群恢复设备的限定,在实际应用中多副本分布式集群恢复设备可以包括比图3所示的更多或更少的部件,或者组合某些部件。
相应于上面的方法实施例,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述多副本分布式集群恢复方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (10)
1.一种多副本分布式集群恢复方法,其特征在于,应用于多副本分布式集群中的任意一个节点,所述方法包括:
在检测到所述多副本分布式集群的构成状态发生变化的情况下,将当前位于本节点的数据对象列表发送给所述多副本分布式集群的主节点,以使所述主节点基于收集到的所述数据对象列表,确定每个节点的待恢复列表,并分别分发给各个节点;
根据接收到的所述待恢复列表,确定需从其他节点拉取数据对象的拉取列表;
依次遍历所述拉取列表,从相应节点拉取相应的数据对象到本节点;
在集群恢复过程中,如果接收到所述主节点发送的恢复取消指令,则重复执行所述将本节点的数据对象列表发送给所述多副本分布式集群的主节点的步骤;
在所述拉取列表中的数据对象均拉取完成后,向所述主节点发送恢复完成信息,以使所述主节点在接收到所有节点发送的所述恢复完成信息后,标记本次集群恢复完成。
2.根据权利要求1所述的方法,其特征在于,所述待恢复列表为:所述主节点在基于收集到的所述数据对象列表,获得集群对象列表后,对所述集群对象列表按照副本数以节点拆分获得的列表。
3.根据权利要求1所述的方法,其特征在于,所述根据接收到的所述待恢复列表,确定需从其他节点拉取数据对象的拉取列表,包括:
根据所述多副本分布式集群的当前构成状态,对位于本节点中的所有数据对象进行分类,获得稳定列表,所述稳定列表包括位于本节点的所有数据对象中在当前构成状态下属于本节点的数据对象;
将接收到的所述待恢复列表与所述稳定列表进行比较,将存在于所述待恢复列表中但未存在于所述稳定列表中的数据对象确定为需从其他节点拉取的数据对象,生成拉取列表。
4.根据权利要求1所述的方法,其特征在于,所述依次遍历所述拉取列表,从相应节点拉取相应的数据对象到本节点,包括:
针对所述拉取列表中的任意一个数据对象,确定该数据对象所在的节点;
在该数据对象所在的节点中拉取该数据对象到本节点。
5.根据权利要求4所述的方法,其特征在于,所述确定该数据对象所在的节点,包括:
查询所述待恢复列表,获得该数据对象所在的节点;
或者,
按照设定的数据对象存放规则,计算得到该数据对象所在的节点。
6.根据权利要求1所述的方法,其特征在于,在所述拉取列表中的数据对象均拉取完成后,所述向所述主节点发送恢复完成信息之前,还包括:
删除位于本节点中在当前构成状态下不属于本节点的数据对象。
7.根据权利要求1至6之中任一项所述的方法,其特征在于,所述拉取列表为双向链表形式,所述方法还包括:
在集群恢复过程中,如果接收到的客户端下发的IO所针对的数据对象为所述拉取列表中未拉取的数据对象,则在当前拉取操作完成后,将所述双向链表的指针移动到所述IO所针对的数据对象上,以优先拉取所述IO所针对的数据对象。
8.一种多副本分布式集群恢复装置,其特征在于,应用于多副本分布式集群中的任意一个节点,所述装置包括:
数据对象列表发送模块,用于在检测到所述多副本分布式集群的构成状态发生变化的情况下,将当前位于本节点的数据对象列表发送给所述多副本分布式集群的主节点,以使所述主节点基于收集到的所述数据对象列表,确定每个节点的待恢复列表,并分别分发给各个节点;
拉取列表确定模块,用于根据接收到的所述待恢复列表,确定需从其他节点拉取数据对象的拉取列表;
数据对象拉取模块,用于依次遍历所述拉取列表,从相应节点拉取相应的数据对象到本节点;
恢复控制模块,用于在集群恢复过程中,如果接收到所述主节点发送的恢复取消指令,则重复执行所述将本节点的数据对象列表发送给所述多副本分布式集群的主节点的步骤;
恢复完成信息发送模块,用于在所述拉取列表中的数据对象均拉取完成后,向所述主节点发送恢复完成信息,以使所述主节点在接收到所有节点发送的所述恢复完成信息后,标记本次集群恢复完成。
9.一种多副本分布式集群恢复设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述多副本分布式集群恢复方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述多副本分布式集群恢复方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011538350.5A CN112667437B (zh) | 2020-12-23 | 2020-12-23 | 一种多副本分布式集群恢复方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011538350.5A CN112667437B (zh) | 2020-12-23 | 2020-12-23 | 一种多副本分布式集群恢复方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667437A true CN112667437A (zh) | 2021-04-16 |
CN112667437B CN112667437B (zh) | 2024-07-02 |
Family
ID=75408211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011538350.5A Active CN112667437B (zh) | 2020-12-23 | 2020-12-23 | 一种多副本分布式集群恢复方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667437B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454720A (zh) * | 2022-09-20 | 2022-12-09 | 中电云数智科技有限公司 | 基于daos分布式存储系统中数据增量重构系统和方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060112121A1 (en) * | 2004-11-23 | 2006-05-25 | Mckenney Paul E | Atomically moving list elements between lists using read-copy update |
CN108874531A (zh) * | 2017-05-12 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 用于熔断服务的方法、装置、系统及电子设备 |
CN111581020A (zh) * | 2020-04-22 | 2020-08-25 | 上海天玑科技股份有限公司 | 一种分布式块存储系统中数据恢复的方法和装置 |
CN112100004A (zh) * | 2020-08-12 | 2020-12-18 | 福建天泉教育科技有限公司 | Redis集群节点的管理方法、存储介质 |
-
2020
- 2020-12-23 CN CN202011538350.5A patent/CN112667437B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060112121A1 (en) * | 2004-11-23 | 2006-05-25 | Mckenney Paul E | Atomically moving list elements between lists using read-copy update |
CN108874531A (zh) * | 2017-05-12 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 用于熔断服务的方法、装置、系统及电子设备 |
CN111581020A (zh) * | 2020-04-22 | 2020-08-25 | 上海天玑科技股份有限公司 | 一种分布式块存储系统中数据恢复的方法和装置 |
CN112100004A (zh) * | 2020-08-12 | 2020-12-18 | 福建天泉教育科技有限公司 | Redis集群节点的管理方法、存储介质 |
Non-Patent Citations (3)
Title |
---|
张宇;: "基于VMware vSAN集群节点损坏的数据恢复研究", 电脑知识与技术, no. 01, 5 January 2020 (2020-01-05) * |
张浩: "RainbowD:一种异构云环境下高效的Docker镜像分发系统", 计算机学报, 23 December 2019 (2019-12-23) * |
王芬;顾乃杰;黄增士;: "基于Bully算法的Redis集群选举方案优化", 计算机科学, no. 10, 15 October 2017 (2017-10-15) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454720A (zh) * | 2022-09-20 | 2022-12-09 | 中电云数智科技有限公司 | 基于daos分布式存储系统中数据增量重构系统和方法 |
CN115454720B (zh) * | 2022-09-20 | 2024-04-02 | 中电云计算技术有限公司 | 基于daos分布式存储系统中数据增量重构系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112667437B (zh) | 2024-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109493076B (zh) | 一种Kafka消息唯一消费方法、系统、服务器及存储介质 | |
EP3185125B1 (en) | Data backup method, system, node and computer storage media | |
CN110351313B (zh) | 数据缓存方法、装置、设备及存储介质 | |
CN102833281B (zh) | 一种分布式自增计数的实现方法、装置及系统 | |
US9652307B1 (en) | Event system for a distributed fabric | |
US11411799B2 (en) | Scalable statistics and analytics mechanisms in cloud networking | |
CN112948064B (zh) | 一种数据读取方法、装置及数据读取系统 | |
CN111694517B (zh) | 分布式数据迁移方法、系统和电子设备 | |
CN109582459A (zh) | 应用的托管进程进行迁移的方法及装置 | |
CN112965839A (zh) | 消息传输方法、装置、设备及存储介质 | |
CN112506710A (zh) | 分布式文件系统数据修复方法、装置、设备及存储介质 | |
CN110209526A (zh) | 一种存储层同步系统、及存储介质 | |
CN112667437A (zh) | 一种多副本分布式集群恢复方法、装置、设备及存储介质 | |
CN111625402A (zh) | 数据恢复方法、装置、电子设备及计算机可读存储介质 | |
CN111258840B (zh) | 一种集群节点管理方法、装置及集群 | |
CN107426012B (zh) | 一种基于超融合架构的故障恢复方法及其装置 | |
CN114791901A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111400241B (zh) | 数据重构方法和装置 | |
CN117435569A (zh) | 缓存系统动态扩容方法、装置、设备、介质和程序产品 | |
CN111324513B (zh) | 一种人工智能开发平台的监控管理方法及系统 | |
CN112685220A (zh) | 用于备份数据的方法、电子设备和计算机程序产品 | |
CN110569231A (zh) | 数据迁移方法、装置、设备和介质 | |
CN112395263B (zh) | 一种osd的数据恢复方法及装置 | |
JP2015069391A (ja) | 情報処理装置、方法、プログラム、及びシステム | |
CN114422280B (zh) | 网络部署方法、装置、节点及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |