元数据上报的调度方法、存储系统、调度装置及存储介质与流程

专利2022-05-09  140


本发明涉及分布式存储领域,尤其是涉及元数据上报的调度方法、存储系统、调度装置及存储介质。



背景技术:

分布式存储集群通常包括存储数据的数据节点,以及为集群中的数据节点提供元数据服务的元数据管理服务器。

元数据服务提供的功能包括集群成员管理、数据寻址、副本分配、负载均衡、垃圾回收等。访问集群中的任一数据节点,都需要通过元数据管理服务器,这就要求集群内的数据节点的存储块信息和元数据管理服务器中记载的元数据信息需要保持一致,否则将无法正常访问集群内的数据节点中的数据。

而现有技术中,通常是基于数据节点的内存中的信息进行上报的,若数据节点的内存中的信息和数据节点的磁盘中的信息存在差异,数据节点和元数据管理服务器均未能及时感知这种差异,则一旦断电,数据节点和元数据管理服务器维护的信息将出现不一致的问题,由此导致元数据管理服务器因感知不到与数据节点的偏差,最终导致分布式存储系统出现可靠性降低的问题。



技术实现要素:

本发明提供一种元数据上报的调度方法、存储系统、调度装置及存储介质,用以解决现有技术中存在的上述技术问题。

第一方面,本发明实施例提供了一种元数据上报的调度方法,应用于集群中的元数据管理服务器,所述集群还包括多个数据节点,包括:

接收所述数据节点在启动阶段内发送的请求上报元数据的请求信息;其中,所述元数据为所述数据节点中描述数据块的数据;

将携带有指定时间的响应信息发送给所述数据节点,使所述数据节点上报所述指定时间之后新增的元数据;

接收并更新所述数据节点上报的所述新增的元数据。

一种可能的实施方式,所述方法还包括:

将新上线的数据节点加入元数据的汇报队列,将新下线的数据节点从所述汇报队列中删除;

定期调度所述汇报队列中的数据节点执行元数据的全量汇报;其中,所述全量汇报包括内存全量汇报和扫盘全量汇报,所述内存全量汇报是汇报所述汇报队列中当前调度的数据节点内存中的所有元数据,所述扫盘全量汇报是汇报所述当前调度的数据节点中本地磁盘的所有元数据。

一种可能的实施方式,定期调度所述汇报队列中的数据节点执行元数据的全量汇报之前,还包括:

在每个调度周期,判断所述集群中当前可执行的数据节点总数是否大于冗余节点数,获得判断结果;其中,所述当前可执行的数据节点为已上线且数据读写端口压力小的数据节点,所述冗余节点数是为当前数据读写配置的冗余数据节点的总数;

根据所述判断结果确定所述全量汇报采用的汇报形式。

一种可能的实施方式,根据所述判断结果确定所述全量汇报采用的汇报形式,包括:

若所述判断结果为所述当前可执行的数据节点总数大于所述冗余节点数,所述汇报形式为所述扫盘全量汇报;

若所述判断结果为所述当前可执行的数据节点总数小于或等于所述冗余节点数,所述汇报形式为所述内存全量汇报。

一种可能的实施方式,所述汇报队列包括优先汇报队列、普通汇报队列、超时汇报队列、延迟下发汇报队列,将新上线的数据节点加入元数据的汇报队列,将新下线的数据节点从所述汇报队列中删除,包括:

将指定节点类型的所述新上线的数据节点加入所述优先汇报队列,并设置对应的汇报条件为间隔周期达到第一预设时长和当前并发执行所述全量汇报的数据节点总数未达到预设并发数;

将已完成汇报的数据节点移入所述普通汇报队列,以及将所述指定节点类型外的其它节点类型的所述新上线的数据节点加入所述普通汇报队列,并设置对应的汇报条件为间隔周期达到第二预设时长;

将在进行全量汇报时超过设定时长仍未完成汇报的数据节点移入所述超时汇报队列;

将所述超时汇报队列中经历一轮汇报仍未完成汇报的数据节点移入所述延迟下发汇报队列;其中,所述延迟汇报队列中的数据节点在当前并发执行所述全量汇报的数据节点总数未达到所述预设并发数时执行。

一种可能的实施方式,定期调度所述汇报队列中的数据节点执行元数据的全量汇报,包括:

依次对所述优先汇报队列、所述普通汇报队列、所述超时汇报队列、所述延迟下发汇报队列进行轮询,对当前轮询到的汇报队列中满足对应汇报条件的数据节点进行调度;

生成满足对应汇报条件的数据节点的汇报指令,所述汇报指令中包含所述汇报形式;

发送所述汇报指令给对应数据节点,使之按所述汇报形式进行汇报。

一种可能的实施方式,若所述当前轮询到的汇报队列为所述优先汇报队列,对所述优先汇报队列中满足对应汇报条件的数据节点进行调度,包括:

针对所述优先汇报队列中位于队首的数据节点,判断上一个被调度的数据节点完成所述全量汇报的时间与当前时间的差值是否大于或等于第一预设时长,若为否,将位于所述队首的数据节点移动到所述优先汇报队列的队末,并执行是否大于或等于所述第一预设时长的判断,直至完成对所述优先汇报队列中每个数据节点的判断,或直至确定所述优先汇报队列中位于队首的数据节点对应的差值大于或等于所述第一预设时长;

若所述优先汇报队列中位于队首的数据节点对应的差值大于或等于所述第一预设时长,判断当前并发执行所述全量汇报的数据节点总数是否达到所述预设并发数,若为是,则结束本次对所述优先汇报队列的轮询;若为否,将所述优先汇报队列中位于所述队首的数据节点加入下发列表,以等待调度所述当前需要调度的数据节点执行所述全量汇报。

一种可能的实施方式,定期调度所述汇报队列中的数据节点执行元数据的全量汇报之后,还包括:

在完成本轮全量汇报时,确定与下一轮全量汇报的间隔周期;其中,完成一轮全量汇报为汇报完所述汇报队列中所有数据节点的元数据;

根据完成所述本轮全量汇报的完成时间及所述间隔周期,确定并更新下一轮全量汇报的开始时间。

一种可能的实施方式,在所述元数据管理服务器启动后首次发起所述全量汇报的开始时间,是根据所述元数据管理服务器的启动时间和所述间隔周期对应的最小间隔周期确定的。

一种可能的实施方式,当从所述数据节点新接收到的元数据的长度大于所述元数据服务器中对应元数据的长度时,用所述新接收到的元数据更新所述元数据服务器中对应的元数据。

第二方面,本发明实施例提供了一种分布式集群存储系统,包括:

多个数据节点,所述数据节点用于对外提供存储服务;

元数据管理服务器,用于对所述数据节点执行如第一方面所述的元数据上报的调度方法。

第三方面,本发明实施例还提供一种元数据上报的装置,包括:

至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如上述第一方面所述的方法。

第四方面,本发明实施例还提供一种可读存储介质,包括:

存储器,

所述存储器用于存储指令,当所述指令被处理器执行时,使得包括所述可读存储介质的装置完成如上述第一方面所述的方法。

通过本发明实施例的上述一个或多个实施例中的技术方案,本发明实施例至少具有如下技术效果:

在本发明提供的实施例中,元数据管理服务器根据集群中数据节点在启动阶段发送的元数据上报的请求信息,向对应数据节点发送携带指定时间的响应信息,让对应数据节点上报指定时间之后的新增的元数据(即增量数据),而不必像现有技术那样需要启动后上报所有的元数据,从而能够使元数据管理服务器能快速获知数据节点中变化的元数据,防止突发事件如掉电等的影响而不能完全获知数据节点中元数据的变化导致集群不稳定,并且通过上述方式使数据节点在启动阶段需要上报的数据量变少了,也就让数据节点在启动阶段便能完成了增量元数据的上报,从而能快速让新启动的数据节点对外提供服务,进而提高的整个集群的稳定性。

附图说明

图1为本发明实施例提供的一种元数据上报的调度方法的流程图;

图2为本发明实施例提供的集群的结构示意图;

图3为本发明实施例提供的一种分布式集群存储系统的结构示意图。

具体实施方式

本发明实施列提供一种元数据上报的调度方法、存储系统、装置及存储介质,以解决现有技术中存在的上述技术问题。

为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

请参考图1,本发明实施例提供一种元数据上报的调度方法,应用于集群中的元数据管理服务器,该集群还包括多个数据节点,该调度方法的处理过程如下。步骤101:接收数据节点在启动阶段内发送的请求上报元数据的请求信息;其中,元数据为数据节点中描述数据块的数据;

步骤102:将携带有指定时间的响应信息发送给数据节点,使数据节点上报指定时间之后新增的元数据;

步骤103:接收并更新数据节点上报的新增的元数据。请参见图2为本发明实施例提供的集群的结构示意图。

在图2中集群包括元数据管理服务器、多个数据设备、每个数据设备即为本发明中所指的数据节点。在集群中,各数据节点由于各种原因可能有些数据节点一直在线,有些可能会定期上线、下线,有些数据设备出现故障后会下线,当故障被修复后会上线。

数据节点上线启动的一段时间称之为数据节点的启动阶段,在数据节点的启动阶段内,需要向集群中的元数据管理服务器发送元数据上报的请求信息,使元数据管理服务器通过返回的响应信息,告知数据节点需要上报指定时间后新增的元数据,数据节点据此将指定时间节点后新增的元数据上报给元数据管理服务器。

其中,指定时间可是元数据管理服务器具体告知的一个时间点,也可以是元数据服务隐含告知的,如元数据管理服务器在响应信息中携带的是一个时间段(如1天),相当于隐含告知指定时间为从当前时间点起向前推最近1天对应的时间点。

例如,假设指定时间节点是由元数据管理服务器直接告知的一个时间点,具体为启动前1一天的1点,集群中的一个数据节点在启动阶段向元数据管理服务器发送元数据上报的请求信息后,元数据管理服务器通过响应消息直接告知该数据节点指定时间为启动前1一天的1点,此数据节点便将启动前1天的1点后新增的元数据上报给元数据管理服务器。

又如,假设指定时间节点是由元数据管理服务器隐含告知的一个时间点,具体为向前推1天的时间点,集群中的一个数据节点在启动阶段向元数据管理服务器发送元数据上报的请求信息后,元数据管理服务器通过响应消息直接告知该数据节点指定时间为向前推1天的时间点,此数据节点便将从当前时间点开始向前推1天对应的时间点作为指定时间,并将指定时间后新增的元数据上报给元数据管理服务器。

在本发明提供的实施例中,元数据管理服务器根据集群中数据节点在启动阶段发送的元数据上报的请求信息,向对应数据节点发送携带指定时间的响应信息,让对应数据节点上报指定时间之后的新增的元数据(即增量数据),而不必像现有技术那样需要启动后上报所有的元数据,从而能够使元数据管理服务器能快速获知数据节点中变化的元数据,防止突发事件如掉电等的影响而不能完全获知数据节点中元数据的变化导致集群不稳定,并且通过上述方式使数据节点在启动阶段需要上报的数据量变少了,也就让数据节点在启动阶段便能完成了增量元数据的上报,从而能快速让新启动的数据节点对外提供服务,进而提高的整个集群的稳定性。

元数据管理服务器对于集群中处于非启动阶段的数据节点进行元数据上报的调度方式包括:

将新上线的数据节点加入元数据的汇报队列,将新下线的数据节点从汇报队列中删除;定期调度汇报队列中的数据节点执行元数据的全量汇报;其中,全量汇报包括内存全量汇报和扫盘全量汇报,内存全量汇报是汇报汇报队列中当前调度的数据节点内存中的所有元数据,扫盘全量汇报是汇报当前调度的数据节点中本地磁盘的所有元数据。

例如,一个集群包括30个数据节点,其中20个数据节点(记为数据节点1~数据节点20)已上线,其余(记为数据节点21~数据节点30)未上线,且数据节点1~数据节点20已加入在汇报队列。

当前数据节点21上线了,数据节点21在此时即为新上线的数据节点,元数据管理服务器将数据节点21加入汇报队列,而数据节点5由于出现故障而下线,此时数据节点5即为新下线的数据节点,元数据管理服务器将数据节点5从汇报队列中删除。元数据管理服务器每隔一定时间间隔调度汇报队列中的数据节点各执行一次全量汇报。

在本发明提供的实施例中,通过定期调度汇报队列中的数据节点执行元数据的全量汇报,让数据节点在进行全量汇报时,不仅可以执行内存扫描汇报,还可以执行扫盘全量汇报,使得不必像现有技术中那样在上报元数据时仅采用内存全量汇报,从而能够让数据节点的磁盘中的元数据与数据节点的内存中的元数据保持一致,防止内存没能及时感知磁盘中元数据的变化,而使上报给元数据管理服务器的元数据与数据节点中磁盘中的元数据不一致,导致数据节点不能正常对外提供服务的情况出现,从而进一步提高集群的稳定性。

一种可能的实施方式,定期调度汇报队列中的数据节点执行元数据的全量汇报之前,还需要确定对应数据节点进行全量汇报的汇报形式,具体可以采用下列方式实现:

在每个调度周期,判断集群中当前可执行的数据节点总数是否大于冗余节点数,获得判断结果;其中,当前可执行的数据节点为已上线且数据读写端口压力小的数据节点,冗余节点数是为当前数据读写配置的冗余数据节点的总数;根据判断结果确定全量汇报采用的汇报形式。端口的数据读写的压力大下可以通过将端口的数据读写的压力与设定的压力进行比较,大于此设定的压力对应的端口,其数据读写端口压力大,反之则小。

可执行的数据节点总数可以采用下列公式计算:

n=m(1-q);

其中,n为可执行的数据节点总数,m为集群中当前已上线的数据节点数,q为集群中数据节点的负载均衡比,默认的负载均衡比可以设置为60%,该值可动态配置;冗余数据节点的总数=存储数据所需总节点数×扫盘全量汇报激活比/100,存储数据所需总节点数为存储真实数据所需的节点数与存储纠删码(erasurecoding,ec)所需节点数之和,存储纠删码所需节点用于存储真实数据的冗余校验码。扫盘全量汇报激活比为已执行扫盘全量汇报的数据节点总数与所有执行全量扫盘汇报的数据节点总数的比值。

例如,集群中共有30个数据节点,其中20个已上线,当前根据用户的访问量,确定集群需要投入使用的数据节点的总数为15,需要配置的冗余数据节点的总数为3,在当前的一个调度周期内,以当前调度汇报队列中的一个数据节点(记为数据节点2)为例,元数据管理服务器将当前已上线、且数据读写端口压力小的数据节点确定为当前可执行的数据节点,并统计当前可执行的数据节点总数为19个,然后判断当前可执行的数据节点总数(19)是否大于冗余节点数(3),得到的判断结果为大于,然后根据上述判断结果确定数据节点2应采用何种汇报形式进行全量汇报。

在本发明提供的实施例中,根据群中当前可执行的数据节点总数与冗余节点数的关系,决定当前进行全量汇报的数据节点的汇报形式,可以让集群中的数据节点在执行全量汇报时,还能有额外的能力承担外部访问的数据读写任务。

一种可能的实施方式,根据判断结果确定全量汇报采用的汇报形式,可以通过下列方式实现:

若判断结果为当前可执行的数据节点总数大于冗余节点数,汇报形式为扫盘全量汇报;若判断结果为当前可执行的数据节点总数小于或等于冗余节点数,汇报形式为内存全量汇报。

例如,根据判断结果确定当前可执行的数据节点总数大于冗余节点数,元数据管理服务器便确定当前进行全量汇报的数据节点采用扫盘全量汇报的形式进行汇报;在下一时间,通过前面的方式确定判断结果确定当前可执行的数据节点总数小于冗余节点数,元数据管理服务器便确定当前进行全量汇报的数据节点采用内存全量汇报的形式进行汇报。

一种可能的实施方式,汇报队列包括优先汇报队列、普通汇报队列、超时汇报队列、延迟下发汇报汇报队列,将新上线的数据节点加入元数据的汇报队列,将新下线的数据节点从汇报队列中删除,包括:将指定节点类型的新上线的数据节点加入优先汇报队列,并设置对应的汇报条件为间隔周期达到预设时长和当前并发执行全量汇报的数据节点总数未达到预设并发数;将已完成汇报的数据节点移入普通汇报队列,以及将指定节点类型外的其它节点类型的新上线的数据节点加入普通汇报队列,并设置对应的汇报条件为间隔周期达到第二预设时长;将在进行全量汇报时超过设定时长仍未完成汇报的数据节点移入超时汇报队列;将超时汇报队列中经历一轮汇报仍未完成汇报的数据节点移入延迟下发汇报队列;其中,延迟汇报队列中的数据节点在当前并发执行全量汇报的数据节点总数未达到预设并发数时执行。

例如,指定节点类型可以为smr节点,将新上线的smr节点类型的数据节点(记为数据节点1)加入优先汇报队,并设置对应的汇报条件为间隔周期达到第一预设时长和当前并发执行全量汇报的数据节点总数未达到预设并发数。假设第一时长为4小时,预设并发数为1,则数据节点1在上线后4小时且当前并发执行全量汇报的数据节点总数为0时执行内存全量汇报。

将新上线的smr节点之外的其它节点类型(如新上线的cmr节点,记为数据节点2)加入普通汇报队列,位于优先汇报队列中的数据节点1完成汇报后,将数据节点1移入普通汇报队列,并设置对的汇报条件为间隔周期达到第二预设时长,第二预设时长的取值范围为1~7天,每个数据节点对应的第二预设时长可以不同;假设数据节点1对应的第二预设时长为1天,则加入普通汇报队列的数据节点1在加入后1天执行全量汇报。

假设数据节点3在执行全量汇报时,汇报的时长超过了设定时长(假设为1小时)也没能完成汇报,则停止数据节点1的汇报,并将数据节点1移入超时汇报队列。

假设在本轮汇报中,数据节点1未能完成汇报,则将数据节点1移入延迟下发汇报队列,在后续其它轮汇报中,数据节点1在当前并发执行全量汇报的数据节点总数未达到预设并发数时执行汇报。

一种可能的实施方式,定期调度汇报队列中的数据节点执行元数据的全量汇报,可以通过下列方式实现:

依次对优先汇报队列、普通汇报队列、超时汇报队列、延迟下发汇报队列进行轮询,对当前轮询到的汇报队列的满足对应汇报条件数据节点进行调度;生成满足对应汇报条件的数据节点的汇报指令,汇报指令中包含汇报形式;发送汇报指令给对应数据节点,使之按汇报形式进行汇报。

例如,优先汇报队列中包括数据节点1~数据节点3、普通汇报队列中包括数据节点4~数据节点9、超时汇报队列中包括数据节点10、延迟下发汇报队列中包括数据节点11,在进行一个调度周期内依次对汇报队列包括的优先汇报队列、普通汇报队列、超时汇报队列、延迟下发汇报队列进行轮询,对当前轮询到的汇报队列的满足对应汇报条件数据节点进行调度。

以当前轮询到的汇报队列为优先汇报队列为例,在优先汇报队列中先确定出数据节点1不满足对应的汇报条件,则进一步判断数据节点2是否满足对应的汇报条件,如满足则生成数据节点2的汇报指令,汇报指令中包含以内存全量汇报的形式进行汇报,之后便将对应的汇报指令发送给数据节点2,使其以内存全量汇报的形式进行汇报。

数据节点2完成汇报后或达到设定时长数据节点2还没有完成汇报,则对普通汇报队列进行轮询(即当前轮询到的是普通汇报队列),假设确定普通汇报队列中的数据节点4满足对应的汇报条件,则生成数据节点4的汇报指令,该汇报指令中包含以扫盘全量汇报的形式进行汇报,将该汇报指令发送给数据节点4。

数据节点4完成汇报后或达到设定时长数据节点4还没有完成汇报,则对超时汇报队列进行轮询,生成数据节点10的汇报指令,该汇报指令中包含以扫盘全量汇报的形式进行汇报,将该汇报指令发送给数据节点10。

数据节点10完成汇报后或达到设定时长数据节点10还没有完成汇报,则对延迟下发汇报队列,在确定当前并发执行全量汇报的数据节点总数未达到预设并发数时,生成数据节点11的汇报指令,该汇报指令中包含以扫盘全量汇报的形式进行汇报,将该汇报指令发送给数据节点11。

一种可能的实施方式,若当前轮询到的汇报队列为优先汇报队列,对优先汇报队列中满足对应汇报条件的数据节点进行调度,可以通过下列方式实现:

针对优先汇报队列中位于队首的数据节点,判断上一个被调度的数据节点完成全量汇报的时间与当前时间的差值是否大于或等于第一预设时长,若为否,将位于队首的数据节点移动到优先汇报队列的队末,并执行是否大于或等于第一预设时长的判断,直至完成对优先汇报队列中每个数据节点的判断,或直至确定优先汇报队列中位于队首的数据节点对应的差值大于或等于第一预设时长;若优先汇报队列中位于队首的数据节点对应的差值大于或等于第一预设时长,判断当前并发执行全量汇报的数据节点总数是否达到预设并发数,若为是,则结束本次对优先汇报队列的轮询;若为否,将优先汇报队列中位于队首的数据节点加入下发列表,以等待调度当前需要调度的数据节点执行全量汇报。

例如,优先汇报队列中包括数据节点3~数据节点9,先判断上一个被调度的数据节点完成全量汇报的时间与当前时间的差值,是否大于等于位于队首的数据节点3对应的第一预设时长,若不满足则将数据节点3移至优先汇报队列的队末,此时数据节点4位于优先汇报队列的队首,继续判断上一个被调度的数据节点完成全量汇报的时间与当前时间的差值,是否大于或等于数据节点4对应的第一预设长度,若满足则进一步判断当前并发执行全量汇报的数据节点总数是否达到预设并发数,若为是,则结束本次对优先汇报队列的轮询;若为否,则将数据节点4加入下发列表,以等待调度当前需要调度的数据节点进行全量汇报。

一种可能的实施方式,定期调度汇报队列中的数据节点执行元数据的全量汇报之后,还需要确定下一轮全量汇报的开始时间,具体通过下列方式实现:

在完成本轮全量汇报时,确定与下一轮全量汇报的间隔周期;其中,完成一轮全量汇报为汇报完汇报队列中所有数据节点的元数据;根据完成本轮全量汇报的完成时间及间隔周期,确定并更新下一轮全量汇报的开始时间。

例如,当前完成了汇报队列中所有数据节点的权利汇报,则确定完成了本轮全量汇报,此时需要先确定与下一轮全量汇报的间隔周期(如为3天),进而可以确定下一轮全量汇报的开始时间为3天后的此时。

间隔周期的理论值的计算公式,包括:

△t=(n-m)×△t×n;

其中,△t为间隔周期的理论值,当理论值大于间隔周期对应的最大间隔周期时,汇报间隔周期的取值为最大间隔周期,否则汇报间隔周期的取值为理论值;n为集群中当前已上线的数据节点总数,m为集群进行数据读写所需数据节点的最大数,△t为增加一个数据节点对应增加的时长,n为集群中扫盘全量汇报的总次数。△t可以为4小时,即每增加一台数据节点,扫盘间隔周期增加4个小时。

例如,间隔周期的取值范围为1~7天,相应的最小间隔周期即为1,最大间隔周期即为7,通过上述公式计算出间隔周期的理论值为8,则间隔周期应取最大间隔周期7。

一种可能的实施方式,在元数据管理服务器启动后首次发起全量汇报的开始时间,是根据元数据管理服务器的启动时间和间隔周期对应的最小间隔周期确定的。

例如,当前(12点)元数据服务器重新启动了,首次发起全量汇报的开始时间是12点及最小间隔周期(假设为4小时)确定的,即为16点。即元数据服务器启动后首次发起全量汇报的开始时间是间隔一个最小间隔周期的时间。

一种可能的实施方式,当从数据节点新接收到的元数据的长度大于元数据服务器中对应元数据的长度时,用新接收到的元数据更新元数据服务器中对应的元数据。

例如,元数据服务器在接收到一个数据节点上报的一个元数据时,发现次元数据的长度大于元数据服务器中对应元数据的长度时,可以确定发生了冲突,此时用新接收到的元数据更新元数据服务器中对应的元数据。

基于同一发明构思,本发明一实施例中提供一种分布式集群存储系统,请参见图3,该系统包括:

多个数据节点301,所述数据节点用于对外提供存储服务;

元数据管理服务器402,用于对所述数据节点执行如上所述的元数据上报的调度方法。

基于同一发明构思,本发明实施例中提供了一种元数据上报的装置,包括:至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行上所述的元数据上报的调度方法。

基于同一发明构思,本发明实施例还提一种可读存储介质,包括:

存储器,

所述存储器用于存储指令,当所述指令被处理器执行时,使得包括所述可读存储介质的装置完成如上所述的元数据上报的调度方法。

本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。


技术特征:

1.一种元数据上报的调度方法,应用于集群中的元数据管理服务器,所述集群还包括多个数据节点,其特征在于,包括:

接收所述数据节点在启动阶段内发送的请求上报元数据的请求信息;其中,所述元数据为所述数据节点中描述数据块的数据;

将携带有指定时间的响应信息发送给所述数据节点,使所述数据节点上报所述指定时间之后新增的元数据;

接收并更新所述数据节点上报的所述新增的元数据。

2.如权利要求1所述的调度方法,其特征在于,还包括:

将新上线的数据节点加入元数据的汇报队列,将新下线的数据节点从所述汇报队列中删除;

定期调度所述汇报队列中的数据节点执行元数据的全量汇报;其中,所述全量汇报包括内存全量汇报和扫盘全量汇报,所述内存全量汇报是汇报所述汇报队列中当前调度的数据节点内存中的所有元数据,所述扫盘全量汇报是汇报所述当前调度的数据节点中本地磁盘的所有元数据。

3.如权利要求2所述的调度方法,其特征在于,定期调度所述汇报队列中的数据节点执行元数据的全量汇报之前,还包括:

在每个调度周期,判断所述集群中当前可执行的数据节点总数是否大于冗余节点数,获得判断结果;其中,所述当前可执行的数据节点为已上线且数据读写端口压力小的数据节点,所述冗余节点数是为当前数据读写配置的冗余数据节点的总数;

根据所述判断结果确定所述全量汇报采用的汇报形式。

4.如权利要求3所述的调度方法,其特征在于,根据所述判断结果确定所述全量汇报采用的汇报形式,包括:

若所述判断结果为所述当前可执行的数据节点总数大于所述冗余节点数,所述汇报形式为所述扫盘全量汇报;

若所述判断结果为所述当前可执行的数据节点总数小于或等于所述冗余节点数,所述汇报形式为所述内存全量汇报。

5.如权利要求3所述的调度方法,其特征在于,所述汇报队列包括优先汇报队列、普通汇报队列、超时汇报队列、延迟下发汇报队列,将新上线的数据节点加入元数据的汇报队列,将新下线的数据节点从所述汇报队列中删除,包括:

将指定节点类型的所述新上线的数据节点加入所述优先汇报队列,并设置对应的汇报条件为间隔周期达到第一预设时长和当前并发执行所述全量汇报的数据节点总数未达到预设并发数;

将已完成汇报的数据节点移入所述普通汇报队列,以及将所述指定节点类型外的其它节点类型的所述新上线的数据节点加入所述普通汇报队列,并设置对应的汇报条件为间隔周期达到第二预设时长;

将在进行全量汇报时超过设定时长仍未完成汇报的数据节点移入所述超时汇报队列;

将所述超时汇报队列中经历一轮汇报仍未完成汇报的数据节点移入所述延迟下发汇报队列;其中,所述延迟汇报队列中的数据节点在当前并发执行所述全量汇报的数据节点总数未达到所述预设并发数时执行。

6.如权利要求5所述的调度方法,其特征在于,定期调度所述汇报队列中的数据节点执行元数据的全量汇报,包括:

依次对所述优先汇报队列、所述普通汇报队列、所述超时汇报队列、所述延迟下发汇报队列进行轮询,对当前轮询到的汇报队列中满足对应汇报条件的数据节点进行调度;

生成满足所述汇报条件的数据节点的汇报指令,所述汇报指令中包含所述汇报形式;

发送所述汇报指令给对应数据节点,使之按所述汇报形式进行汇报。

7.如权利要求6所述的调度方法,其特征在于,若所述当前轮询到的汇报队列为所述优先汇报队列,对所述优先汇报队列中满足对应汇报条件的数据节点进行调度,包括:

针对所述优先汇报队列中位于队首的数据节点,判断上一个被调度的数据节点完成所述全量汇报的时间与当前时间的差值是否大于或等于第一预设时长,若为否,将位于所述队首的数据节点移动到所述优先汇报队列的队末,并执行是否大于或等于所述第一预设时长的判断,直至完成对所述优先汇报队列中每个数据节点的判断,或直至确定所述优先汇报队列中位于队首的数据节点对应的差值大于或等于所述第一预设时长;

若所述优先汇报队列中位于队首的数据节点对应的差值大于或等于所述第一预设时长,判断当前并发执行所述全量汇报的数据节点总数是否达到所述预设并发数,若为是,则结束本次对所述优先汇报队列的轮询;若为否,将所述优先汇报队列中位于所述队首的数据节点加入下发列表,以等待调度所述当前需要调度的数据节点执行所述全量汇报。

8.如权利要求2所述的调度方法,其特征在于,定期调度所述汇报队列中的数据节点执行元数据的全量汇报之后,还包括:

在完成本轮全量汇报时,确定与下一轮全量汇报的间隔周期;其中,完成一轮全量汇报为汇报完所述汇报队列中所有数据节点的元数据;

根据完成所述本轮全量汇报的完成时间及所述间隔周期,确定并更新下一轮全量汇报的开始时间。

9.如权利要求8所述的调度方法,其特征在于,在所述元数据管理服务器启动后首次发起所述全量汇报的开始时间,是根据所述元数据管理服务器的启动时间和所述间隔周期对应的最小间隔周期确定的。

10.如权利要求1-9任一项所述的调度方法,其特征在于,当从所述数据节点新接收到的元数据的长度大于所述元数据服务器中对应元数据的长度时,用所述新接收到的元数据更新所述元数据服务器中对应的元数据。

11.一种分布式集群存储系统,其特征在于,包括:

多个数据节点,所述数据节点用于对外提供存储服务;

元数据管理服务器,用于对所述数据节点执行如权利要求1-9任一项所述的元数据上报的调度方法。

12.一种元数据上报的调度装置,其特征在于,包括:

至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如权利要求1~9任一项所述的方法。

13.一种可读存储介质,其特征在于,包括存储器,

所述存储器用于存储指令,当所述指令被处理器执行时,使得包括所述可读存储介质的装置完成如权利要求1-9中任一项所述的方法。

技术总结
本发明公开了元数据上报的调度方法、存储系统、调度装置及存储介质,用以解决现有技术中存在的分布式存储系统可靠性低的技术问题,该方法包括:接收数据节点在启动阶段内发送的请求上报元数据的请求信息;其中,元数据为数据节点中描述数据块的数据;将携带有指定时间的响应信息发送给数据节点,使数据节点上报指定时间之后新增的元数据;接收并更新数据节点上报的新增的元数据。

技术研发人员:江瑜;邱小冬;罗心;江文龙;周明伟;李丛
受保护的技术使用者:浙江大华技术股份有限公司
技术研发日:2021.05.31
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-2126.html

最新回复(0)