一种文件数据的多副本存储方法及多副本存储系统与流程

文档序号:24235833发布日期:2021-03-12 13:07阅读:104来源:国知局
一种文件数据的多副本存储方法及多副本存储系统与流程

本发明涉及数据处理技术领域,特别是涉及一种文件数据的多副本存储方法及多副本存储系统。



背景技术:

分布式文件存储系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。分布式文件存储系统把大量数据分散到不同的节点上存储,大大减小了数据丢失的风险。

现有客户端执行一次文件数据的多副本存储方法为:客户端向控制节点发送针对目标文件的写入请求;控制节点接收并校验写入请求,当校验成功时,向客户端返回预设数量个存储节点的地址信息;客户端接收地址信息,向各存储节点发送包含待写入数据的数据写入请求;存储节点接收并执行数据写入请求对应的写操作,之后向客户端返回写入结果信息;客户端在接收到预设数量个存储节点返回的写入结果信息,且各写入结果均表示写入成功时,将写入结果信息发送给控制节点;控制节点接收到表示写入成功的写入结果时,更新目标文件对应的元数据信息。

然而,发明人发现使用现有文件数据的多副本存储方法对文件数据的存储过程中,因存储节点宕机等原因,会导致一个或多个存储节点中目标文件写入失败,便会影响整个目标文件写入速度,导致多副本存储效率较低;或是某一存储节点写入数据较慢,导致整个目标文件写入较慢,使得整个文件数据的多副本存储效率较低。



技术实现要素:

本发明实施例的目的在于提供一种文件数据的多副本存储方法及多副本存储系统,以提高文件数据的多副本存储效率。具体技术方案如下:

第一方面,本发明实施例提供了一种文件数据的多副本存储方法,应用于分布式文件存储系统中的客户端,所述分布式文件存储系统包括:客户端、控制节点和存储节点,所述方法包括:

接收所述控制节点返回的第一预设数量个存储节点对应的地址信息,并从所述第一预设数量个存储节点中选取第二预设数量个存储节点,得到各待写入存储节点;

分别向各所述待写入存储节点发送第一写入请求;

确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,所述写入结果信息表示所述待写入存储节点执行所述第一写入请求对应写操作的结果;

当接收到表示写入成功的写入结果信息个数不为零时,将写入成功的存储节点对应的信息确定为存储结果信息;

将所述存储结果信息发送给所述控制节点,以使所述控制节点基于所述存储结果信息对所述目标文件对应的元数据信息进行更新。

可选的,在接收所述控制节点返回的第一预设数量个存储节点对应的地址信息之前,所述方法还包括:

向所述控制节点发送针对目标文件的第二写入请求,以使所述控制节点对所述第二写入请求进行校验,并在校验成功的情况下返回第一预设数量个存储节点对应的地址信息。

可选的,所述方法还包括:

当接收到表示写入成功的写入结果信息个数为零时,判断向各所述待写入存储节点发送第一写入请求的次数是否达到预设次数;

如果向各所述待写入存储节点发送第一写入请求的次数达到预设次数,则将目标文件多副本存储失败的信息确定为存储结果信息,并执行将所述存储结果信息发送给所述控制节点的步骤;

如果向各所述待写入存储节点发送第一写入请求的次数没有达到预设次数,则执行从所述第一预设数量个存储节点中选取第二预设数量个存储节点的步骤。

第二方面,本发明实施例提供了一种文件数据的多副本存储方法,应用于分布式文件存储系统中的控制节点,所述分布式文件存储系统包括:客户端、控制节点和存储节点,所述方法包括:

对所述客户端发送的针对目标文件的第二写入请求进行校验,所述第二写入请求对应相应的待写入数据;

当对所述第二写入请求校验成功时,为所述待写入数据选取第一预设数量个存储节点,得到第一预设数量个存储节点对应的地址信息;

将所述第一预设数量个存储节点对应的地址信息发送给所述客户端,以使所述客户端将第一写入请求发送给待写入存储节点,所述待写入存储节点分别根据所述第一写入请求执行对应的写操作,并将写入结果信息返回给所述客户端;其中,所述待写入存储节点是从所述第一预设数量个存储节点中选取的,所述第一写入请求中包含所述针对目标文件的第二写入请求对应的待写入数据;

接收所述客户端返回的存储结果信息;

在所述存储结果信息包含写入成功的存储节点对应信息的情况下,判断写入成功的存储节点的个数是否与第二预设数量相同;

如果写入成功的存储节点的个数与所述第二预设数量不同,则将所述写入成功的存储节点中所述目标文件对应的数据,备份至除各所述待写入存储节点之外的存储节点中,并对所述目标文件对应的元数据信息进行更新。

可选的,所述方法还包括:

如果写入成功的存储节点的个数与所述第二预设数量相同,则对所述目标文件对应的元数据信息进行更新。

可选的,所述将所述写入成功的存储节点中所述目标文件对应的数据,备份至除各所述待写入存储节点之外的存储节点中的步骤,包括:

基于所述写入成功的存储节点的个数,确定写入失败的存储节点的个数作为第一数量;

将所述写入成功的存储节点中所述目标文件对应的数据,备份至第一预设数量个存储节点中除各所述待写入存储节点之外的第一数量个存储节点中。

可选的,所述为所述待写入数据选取第一预设数量个存储节点的步骤,包括:

根据所述第二写入请求对应相应的待写入数据的大小,以及各存储节点的剩余空间大小,为所述待写入数据选取第一预设数量个存储节点。

可选的,所述方法还包括:

在所述存储结果信息包含目标文件多副本存储失败信息的情况下,不对所述目标文件对应的元数据信息进行更新。

可选的,所述方法还包括:

接收存储节点发送的自身状态信息,所述存储节点的自身状态信息包括:所述存储节点的节点状态,以及所述存储节点的剩余空间大小。

第三方面,本发明实施例提供了一种文件数据的多副本存储系统,所述文件数据的多副本存储系统包括:客户端和控制节点;

所述客户端,用于向所述控制节点发送针对目标文件的第二写入请求,以及接收所述控制节点返回的第一预设数量个存储节点对应的地址信息,并从所述第一预设数量个存储节点中选取第二预设数量个存储节点,得到各待写入存储节点,分别向各所述待写入存储节点发送第一写入请求,确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,当接收到表示写入成功的写入结果信息个数不为零时,将写入成功的存储节点对应的信息确定为存储结果信息,将所述存储结果信息发送给所述控制节点;其中,所述写入结果信息表示所述待写入存储节点执行所述第一写入请求对应写操作的结果;

所述控制节点,用于对所述客户端发送的针对目标文件的第二写入请求进行校验,当对所述第二写入请求校验成功时,为所述待写入数据选取第一预设数量个存储节点,得到第一预设数量个存储节点对应的地址信息,将所述第一预设数量个存储节点对应的地址信息发送给所述客户端,以及接收所述客户端返回的存储结果信息,在所述存储结果信息包含写入成功的存储节点对应信息的情况下,判断写入成功的存储节点的个数是否与第二预设数量相同,如果写入成功的存储节点的个数与所述第二预设数量不同,则将所述写入成功的存储节点中所述目标文件对应的数据,备份至除各所述待写入存储节点之外的存储节点中,并对所述目标文件对应的元数据信息进行更新;其中,所述第二写入请求对应相应的待写入数据。

可选的,所述系统还包括存储节点;

所述存储节点,用于接收客户端发送的第一写入请求,根据所述第一写入请求执行对应的写操作,并将写入结果信息返回给所述客户端。

可选的,所述客户端,还用于:

在接收到表示写入成功的写入结果信息个数为零时,判断向各所述待写入存储节点发送第一写入请求的次数是否达到预设次数;

如果向各所述待写入存储节点发送第一写入请求的次数达到预设次数,则将目标文件多副本存储失败的信息确定为存储结果信息,并执行将所述存储结果信息发送给控制节点的操作;

如果向各所述待写入存储节点发送第一写入请求的次数没有达到预设次数,则执行从所述第一预设数量个存储节点中选取第二预设数量个存储节点的操作。

可选的,所述控制节点,还用于:

在写入成功的存储节点的个数与所述第二预设数量相同时,对所述目标文件对应的元数据信息进行更新。

可选的,所述控制节点,具体用于:

基于所述写入成功的存储节点的个数,确定写入失败的存储节点的个数作为第一数量;

将所述写入成功的存储节点中所述目标文件对应的数据,备份至第一预设数量个存储节点中除各所述待写入存储节点之外的第一数量个存储节点中。

可选的,所述控制节点,还用于:

在所述存储结果信息包含目标文件多副本存储失败信息的情况下,不对所述目标文件对应的元数据信息进行更新。

可选的,所述存储节点,还用于:

向所述控制节点发送自身的状态信息,所述自身的状态信息包括:所述节点状态以及剩余空间大小。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的一种文件数据的多副本存储方法的方法步骤。

第五方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第二方面所述的一种文件数据的多副本存储方法的方法步骤。

本发明实施例有益效果:

本发明实施例提供的一种文件数据的多副本存储方法及多副本存储系统,客户端可以向各待写入存储节点发送第一写入请求,以实现多个副本文件的并发写,且,客户端设定预设超时时间段,进而确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,能够及时发现由于存储节点宕机或存储节点写数据较慢导致数据写入失败的情况,并将存储结果信息发送给控制节点。控制节点在写入成功的存储节点的个数与第二预设数量不同的情况下,将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,实现写入失败数据的异步恢复,并对目标文件对应的元数据信息进行更新,避免了由于存储节点宕机或存储节点写数据较慢引起的数据写入失败导致的多副本存储效率低的问题,能够提高文件数据的多副本存储效率。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

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

图1为本发明实施例提供的第一种文件数据的多副本存储方法的流程示意图;

图2为本发明实施例提供的第二种文件数据的多副本存储方法的流程示意图;

图3为本发明实施例提供的第三种文件数据的多副本存储方法的流程示意图;

图4为本发明实施例提供的一种异步数据恢复实施方式流程示意图;

图5为本发明实施例提供的一种文件数据的多副本存储方法的交互示意图;

图6为本发明实施例提供的一种文件数据的多副本存储系统的结构示意图。

具体实施方式

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

分布式文件存储系统具有冗余性,部分节点的故障并不影响整体的正常运行,而且即使出现故障的计算机存储的数据已经损坏,也可以由其它节点将损坏的数据恢复出来。典型的分布式文件存储系统,一般由控制节点(或称元数据服务器)与存储节点(或称数据服务器)组成。控制节点的作用主要有:管理目录树,管理客户端(或称用户)上传的文件的元数据信息(例如文件目录、文件名、文件的上传时间、文件的大小、文件数据分布在哪些存储节点上等),管理分布式文件存储系统中所有的存储节点。存储节点的作用主要有:存储客户端上传的文件数据。

为了解决现有因存储节点宕机等原因,会导致一个或多个存储节点中目标文件写入失败,便会影响整个目标文件写入速度,导致多副本存储效率较低;或是某一存储节点写入数据较慢,导致整个目标文件写入较慢,使得整个文件数据的多副本存储效率较低的问题,本发明实施例提供了一种文件数据的多副本存储方法,应用于分布式文件存储系统中的客户端,该分布式文件存储系统包括:客户端、控制节点和存储节点,该方法可以包括:

接收所述控制节点返回的第一预设数量个存储节点对应的地址信息,并从所述第一预设数量个存储节点中选取第二预设数量个存储节点,得到各待写入存储节点;

分别向各所述待写入存储节点发送第一写入请求;

确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,所述写入结果信息表示所述待写入存储节点执行所述第一写入请求对应写操作的结果;

当接收到表示写入成功的写入结果信息个数不为零时,将写入成功的存储节点对应的信息确定为存储结果信息;

将所述存储结果信息发送给所述控制节点,以使所述控制节点基于所述存储结果信息对所述目标文件对应的元数据信息进行更新。

本发明实施例提供的一种文件数据的多副本存储方法及多副本存储系统,客户端可以向各待写入存储节点发送第一写入请求,以实现多个副本文件的并发写,且,客户端设定预设超时时间段,进而确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,能够及时发现由于存储节点宕机或存储节点写数据较慢导致数据写入失败的情况,并将存储结果信息发送给控制节点。控制节点在写入成功的存储节点的个数与第二预设数量不同的情况下,将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,实现写入失败数据的异步恢复,并对目标文件对应的元数据信息进行更新,避免了由于存储节点宕机或存储节点写数据较慢引起的数据写入失败导致的多副本存储效率低的问题,能够提高文件数据的多副本存储效率。

下面对本发明实施例提供的一种文件数据的多副本存储方法进行详细介绍:

本发明实施例中,文件数据的多副本存储方法应用于分布式文件存储系统,在该分布式文件存储系统中可以包含客户端、控制节点和多个存储节点。示例性的,控制节点和多个存储节点可以是分别布置于不同服务器上的数据存储模块等。

如图1所示,本发明实施例提供了第一种文件数据的多副本存储方法,应用于分布式文件存储系统中的客户端,该方法可以包括以下步骤:

s101,接收控制节点返回的第一预设数量个存储节点对应的地址信息,并从第一预设数量个存储节点中选取第二预设数量个存储节点,得到各待写入存储节点。

作为本发明实施例一种可选的实施方式,在步骤s101接收控制节点返回的第一预设数量个存储节点对应的地址信息之前,还可以执行以下步骤:

向控制节点发送针对目标文件的第二写入请求,以使控制节点对第二写入请求进行校验,并在校验成功的情况下返回第一预设数量个存储节点对应的地址信息。

本发明实施例中,在需要对目标文件进行数据写入时,客户端可以向控制节点发送针对目标文件的第二写入请求。作为本发明实施例一种可选的实施方式,客户端发送的第二写入请求中可以包含:客户端的标识,针对目标文件的第二写入请求对应相应的待写入数据数据量的大小等信息,以便于控制节点对该第二写入请求进行校验。

客户端接收控制节点对第二写入请求校验成功的情况下,返回的第一预设数量个存储节点对应的地址信息,从第一预设数量个存储节点中选取第二预设数量个存储节点,确定为待写入存储节点。本领域技术人员可根据实际需求设置第一预设数量以及第二预设数量。

示例性的,客户端与控制节点交互时,控制节点对第二写入请求校验成功的情况下,可以返回5-6个存储节点对应的地址信息,客户端从5-6个存储节点中选取3个存储节点确定为待写入存储节点,具体选取的依据可以是各存储节点的剩余存储空间等。

s102,分别向各待写入存储节点发送第一写入请求。

其中,该第一写入请求中可以包含针对目标文件的第二写入请求对应的待写入数据。

s103,确定预设超时时间段内接收到的表示写入成功的写入结果信息个数。

客户端可以预先设定预设超时时间段,该预设超时时间段可以是分布式文件存储系统中大部分存储节点正常写入数据所需的时间,具体的本领域技术人员可根据实际需求进行设定。

客户端在分别向各待写入存储节点发送第一写入请求后,各待写入存储节点执行第一写入请求对应的写操作,并返回写入结果信息,客户端可以确定在预设超时时间段内接收到的表示写入成功的写入结果信息个数,该写入结果信息表示待写入存储节点执行第一写入请求对应写操作的结果。

s104,当接收到表示写入成功的写入结果信息个数不为零时,将写入成功的存储节点对应的信息确定为存储结果信息。

当接收到表示写入成功的写入结果信息个数不为零时,说明在预设超时时间段内有待写入存储节点写入目标文件成功,此时,将写入成功的存储节点对应的信息确定为存储结果信息。其中,写入成功的存储节点对应的信息可以包含写入成功的存储节点的标识,地址信息以及剩余存储空间等信息。

s105,将存储结果信息发送给控制节点,以使控制节点基于存储结果信息对目标文件对应的元数据信息进行更新。

其中,目标文件对应的元数据信息可以包括:目标文件的大小,目标文件所写入的存储节点的信息。

本发明实施例提供的一种文件数据的多副本存储方法,客户端可以向各待写入存储节点发送第一写入请求,以实现多个副本文件的并发写,且,客户端设定预设超时时间段,进而确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,能够及时发现由于存储节点宕机或存储节点写数据较慢导致数据写入失败的情况,并将存储结果信息发送给控制节点。控制节点在写入成功的存储节点的个数与第二预设数量不同的情况下,将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,实现写入失败数据的异步恢复,并对目标文件对应的元数据信息进行更新,避免了由于存储节点宕机或存储节点写数据较慢引起的数据写入失败导致的多副本存储效率低的问题,能够提高文件数据的多副本存储效率。

如图2所示,本发明实施例提供了第二种文件数据的多副本存储方法,应用于分布式文件存储系统中的客户端,该方法可以包括以下步骤:

s201,向控制节点发送针对目标文件的第二写入请求,以使控制节点对第二写入请求进行校验,并在校验成功的情况下返回第一预设数量个存储节点对应的地址信息。

s202,接收控制节点返回的第一预设数量个存储节点对应的地址信息,并从第一预设数量个存储节点中选取第二预设数量个存储节点,得到各待写入存储节点。

s203,分别向各待写入存储节点发送第一写入请求。

s204,确定预设超时时间段内接收到的表示写入成功的写入结果信息个数。

其中,写入结果信息表示待写入存储节点执行第一写入请求对应写操作的结果。

s205,当接收到表示写入成功的写入结果信息个数不为零时,将写入成功的存储节点对应的信息确定为存储结果信息。

s206,将存储结果信息发送给控制节点,以使控制节点基于存储结果信息对目标文件对应的元数据信息进行更新。

其中,目标文件对应的元数据信息包括:目标文件的大小,目标文件所写入的存储节点的信息。

其中,步骤s201-s206的实现过程可与上述步骤s101-s105相同,本发明实施例在此不再赘述。

s207,当接收到表示写入成功的写入结果信息个数为零时,判断向各待写入存储节点发送第一写入请求的次数是否达到预设次数。

当接收到表示写入成功的写入结果信息个数为零时,说明在预设超时时间段内没有待写入存储节点写入目标文件成功,此时,判断向各待写入存储节点发送第一写入请求的次数是否达到预设次数。该预设次数可以是预先设定的目标文件重试写入次数,本领域技术人员可以根据实际需求设定,示例性的,该预设次数可以设置为3次或5次等。

示例性的,本发明实施例中,客户端可以统计向待写入存储节点发送第一写入请求的次数,将该次数与预设的重试写入次数进行比较,在目标文件写入失败时,实现对目标文件对应数据的重试写入。

s208,如果向各待写入存储节点发送第一写入请求的次数达到预设次数,则将目标文件多副本存储失败的信息确定为存储结果信息,并执行步骤s206的操作。

在判断出向各待写入存储节点发送第一写入请求的次数达到预设次数,即目标文件的重试写入次数达到预设次数时,不再重试写入目标文件,将目标文件多副本存储失败的信息确定为存储结果信息,并执行步骤s206将存储结果信息发送给控制节点的操作。

在判断出向各待写入存储节点发送第一写入请求的次数没有达到预设次数,即目标文件的重试写入次数没有达到预设次数时,返回执行步骤s202中从第一预设数量个存储节点中选取第二预设数量个存储节点的操作。

作为本发明实施例一种可选的实施方式,在判断出向各待写入存储节点发送第一写入请求的次数没有达到预设次数时,可以从第一预设数量个存储节点中选取除已选择的待写入存储节点之外的第二预设数量个存储节点,作为目标文件重试写入的待写入存储节点,以提高目标文件写入成功的概率。

本发明实施例提供的一种文件数据的多副本存储方法,客户端可以向各待写入存储节点发送第一写入请求,以实现多个副本文件的并发写,且,客户端设定预设超时时间段,进而确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,能够及时发现由于存储节点宕机或存储节点写数据较慢导致数据写入失败的情况,并将存储结果信息发送给控制节点,同时在预设超时时间段内没有目标文件写入成功时,设定重试次数对目标文件进行重试写入,以提高目标文件写入成功的概率。控制节点在写入成功的存储节点的个数与第二预设数量不同的情况下,将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,实现写入失败数据的异步恢复,并对目标文件对应的元数据信息进行更新,避免了由于存储节点宕机或存储节点写数据较慢引起的数据写入失败导致的多副本存储效率低的问题,能够提高文件数据的多副本存储效率。

如图3所示,本发明实施例提供了第三种文件数据的多副本存储方法,应用于分布式文件存储系统中的控制节点,该方法可以包括以下步骤:

s301,对客户端发送的针对目标文件的第二写入请求进行校验。其中,第二写入请求对应相应的待写入数据。

作为本发明实施例一种可选的实施方式,客户端发送的针对目标文件的第二写入请求中可以包含:客户端的标识,针对目标文件的第二写入请求对应相应的待写入数据数据量的大小等信息,进而,控制节点对客户端发送的针对目标文件的第二写入请求进行校验,可以是对客户端的权限进行校验。例如,当接收到客户端发送的针对目标文件的第二写入请求时,可以判断该客户端是否有权限执行针对目标文件的写操作等。控制节点对客户端发送的针对目标文件的第二写入请求进行校验,还可以是对第二写入请求对应相应的待写入数据的数据量进行校验等。

s302,当对第二写入请求校验成功时,为待写入数据选取第一预设数量个存储节点,得到第一预设数量个存储节点对应的地址信息。

本发明实施例,控制节点中可以存储有不同文件的管理目录树,文件的元数据信息以及存储节点信息等,该元数据信息可以包含:文件目录、文件名、文件的上传时间、文件的大小、文件数据分布在哪些存储节点上等,存储节点信息可以包含存储节点的剩余空间大小,或存储节点的剩余空间可利用率等。

在控制节点对第二写入请求校验成功时,可以为针对目标文件的待写入数据选取第一预设数量个存储节点,得到第一预设数量个存储节点对应的地址信息。该第一预设数量本领域技术人员可以根据实际需求进行设置,示例性的,为保证文件数据的可靠性以及目标文件写入的成功率,可以设置预设数量为5-6个,以便于客户端从5-6个存储节点中选取3个存储节点确定为待写入存储节点。

作为本发明实施例一种可选的实施方式,为待写入数据选取第一预设数量个存储节点的步骤,可以包括:

根据第二写入请求对应相应的待写入数据的大小,以及各存储节点的剩余空间大小,为待写入数据选取第一预设数量个存储节点。

本发明实施例,控制节点可以根据第二写入请求对应相应的待写入数据数据量的大小,以及各存储节点的剩余空间大小,对能够存储待写入数据的存储节点进行排序,得到存储节点序列,进而从该存储节点序列中选择预设数量个存储节点。

s303,将第一预设数量个存储节点对应的地址信息发送给客户端,以使客户端将第一写入请求发送给待写入存储节点,待写入存储节点分别根据第一写入请求执行对应的写操作,并将写入结果信息返回给客户端。

其中,待写入存储节点是从第一预设数量个存储节点中选取的,第一写入请求中包含针对目标文件的第二写入请求对应的待写入数据。

s304,接收客户端返回的存储结果信息。

s305,在存储结果信息包含写入成功的存储节点对应信息的情况下,判断写入成功的存储节点的个数是否与第二预设数量相同。

控制节点接收客户端返回的存储结果信息,并在存储结果信息包含写入成功的存储节点对应信息的情况下,进一步判断写入成功的存储节点的个数是否与第二预设数量相同。如果写入成功的存储节点的个数与第二预设数量相同,表示目标文件的期望数量个多副本存储成功,如果写入成功的存储节点的个数与第二预设数量不同,表示没有完成期望数量个目标文件的多副本存储,只是完成了部分目标文件的副本存储,此时,执行s306的步骤。

s306,如果写入成功的存储节点的个数与第二预设数量不同,则将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,并对目标文件对应的元数据信息进行更新。

如果写入成功的存储节点的个数与第二预设数量不同,即没有完成期望数量个目标文件的多副本存储,只是完成了部分目标文件的副本存储,将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,进行目标文件对应数据的异步恢复,以完成期望数量个目标文件的多副本存储,并对目标文件对应的元数据信息进行更新。其中,目标文件对应的元数据信息包括:目标文件的大小,目标文件所写入的存储节点的信息。

本发明实施例提供的一种文件数据的多副本存储方法,控制节点在写入成功的存储节点的个数与第二预设数量不同的情况下,将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,实现写入失败数据的异步恢复,以完成期望数量个目标文件的多副本存储,并对目标文件对应的元数据信息进行更新,避免了由于存储节点宕机或存储节点写数据较慢引起的数据写入失败导致的多副本存储效率低的问题,能够提高文件数据的多副本存储效率。

作为本发明实施例一种可选的实施方式,上述第三种文件数据的多副本存储方法,还可以包括:

在存储结果信息包含目标文件多副本存储失败信息的情况下,不对目标文件对应的元数据信息进行更新。

本发明实施例中,控制节点在接收到的存储结果信息中包含目标文件多副本存储失败信息时,即在目标文件多副本存储失败的情况下,不对目标文件对应的元数据信息进行更新。

作为本发明实施例一种可选的实施方式,上述第三种文件数据的多副本存储方法,还可以包括:

如果写入成功的存储节点的个数与第二预设数量相同,则对目标文件对应的元数据信息进行更新。

如果写入成功的存储节点的个数与第二预设数量相同,表示目标文件的期望数量个多副本存储成功,此时直接对目标文件对应的元数据信息进行更新。

作为本发明实施例一种可选的实施方式,如图4所示,步骤s306中将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中的实施方式,可以包括:

s3061,基于写入成功的存储节点的个数,确定写入失败的存储节点的个数作为第一数量。

根据目标文件的期望数量个多副本存储(即第二预设数量),以及写入成功的存储节点的个数,确定写入失败的存储节点的个数作为第一数量,示例性的,可以将第二预设数量与写入成功的存储节点的个数的差值,确定为写入失败的存储节点的个数,即第一数量。

s3062,将写入成功的存储节点中目标文件对应的数据,备份至第一预设数量个存储节点中除各待写入存储节点之外的第一数量个存储节点中。

在确定写入失败的存储节点个数后,可以将写入成功的存储节点中目标文件对应的数据,备份至第一预设数量个存储节点中除各待写入存储节点之外的第一数量个存储节点中,以提高目标文件对应待写入数据存储成功的概率。该待写入存储节点为:写入成功的存储节点对应的第一写入请求所对应的各存储节点。

作为本发明实施例一种可选的实施方式,控制节点还可以接收存储节点发送的自身状态信息,其中,存储节点的自身状态信息可以包括:存储节点的节点状态,以及存储节点的剩余空间大小。示例性的,存储节点的状态可以包含存储节点是否正常工作,数据写入的正常速度等信息,存储节点的剩余空间大小为存储节点当前还能够利用的空间的大小。

本发明实施例中,控制节点可以接收存储节点发送的自身状态信息,进而更新控制节点中所存储的存储节点的状态信息,以便于更准确的为待写入数据选取所要写入的存储节点。

示例性的,客户端a向控制节点发送针对目标文件的第二写入请求,控制节点接收到客户端a发送的针对目标文件的第二写入请求,可以对客户端a发送的第二写入请求进行校验,校验成功时,为待写入数据选取6个存储节点b、c、d、e、f和g,并将存储节点b、c、d、e、f和g对应的地址信息发送给客户端a。

客户端a接收控制节点返回的存储节点b、c、d、e、f和g对应的地址信息,从b、c、d、e、f和g中选取第二预设数量个(3个)存储节点b、c、d作为待写入存储节点,并分别向存储节点b、c、d发送第一写入请求。

客户端a确定预设超时时间段内接收到的表示写入成功的写入结果信息个数为1个,将写入成功的存储节点对应的信息确定为存储结果信息并发送给控制节点。控制节点接收存储结果信息,判断写入成功的存储节点的个数与第二预设数量不同,将写入成功的存储节点(假设存储节点b中数据写入成功)中目标文件对应的数据,备份至除各待写入存储节点(即存储节点b、c、d)之外的存储节点(e、f和g中的任意两个)中,并对目标文件对应的元数据信息进行更新。

或者,客户端a确定预设超时时间段内接收到的表示写入成功的写入结果信息个数为0个,进一步判断向各待写入存储节点发送第一写入请求的次数是否达到预设次数,如果向各待写入存储节点发送第一写入请求的次数(第三次)达到预设次数(三次),将目标文件多副本存储失败的信息确定为存储结果信息,并将存储结果信息发送给控制节点。控制节点接收包含目标文件多副本存储失败的信息的存储结果信息,不对目标文件对应的元数据信息进行更新。如果向各待写入存储节点发送第一写入请求的次数(第一次)没有达到预设次数(三次),从b、c、d、e、f和g中选取存储节点e、f和g作为待写入存储节点,并分别向存储节点e、f和g发送第一写入请求,并执行后续操作(与上述相同)。

如图5所示,图5为本发明实施例提供的一种文件数据的多副本存储方法的交互示意图。

客户端向控制节点发送针对目标文件的第二写入请求。

控制节点对客户端发送的针对目标数据的第二写入请求进行校验,当对第二写入请求校验成功时,为待写入数据选取第一预设数量个存储节点,得到第一预设数量个存储节点对应的地址信息,将第一预设数量个存储节点对应的地址信息发送给客户端。

客户端接收控制节点返回的第一预设数量个存储节点对应的地址信息,并从第一预设数量个存储节点中选取第二预设数量个存储节点,得到各待写入存储节点,分别向各待写入存储节点发送第一写入请求。

客户端确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,当接收到表示写入成功的写入结果信息个数不为零时,将写入成功的存储节点对应的信息确定为存储结果信息;当接收到表示写入成功的写入结果信息个数为零时,判断向各待写入存储节点发送第一写入请求的次数是否达到预设次数,如果向各待写入存储节点发送第一写入请求的次数达到预设次数,则将目标文件多副本存储失败的信息确定为存储结果信息,如果向各待写入存储节点发送第一写入请求的次数没有达到预设次数,则执行从第一预设数量个存储节点中选取第二预设数量个存储节点的步骤;以及将存储结果信息发送给控制节点。

控制节点接收客户端返回的存储结果信息,在存储结果信息包含写入成功的存储节点对应信息的情况下,判断写入成功的存储节点的个数是否与第二预设数量相同,如果写入成功的存储节点的个数与第二预设数量不同,则将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,并对目标文件对应的元数据信息进行更新;如果写入成功的存储节点的个数与第二预设数量相同,则对目标文件对应的元数据信息进行更新。在存储结果信息包含目标文件多副本存储失败信息的情况下,不对目标文件对应的元数据信息进行更新。

相应于上述方法实施例,本发明实施例还提供了相应的系统实施例。

如图6所示,本发明实施例提供了一种文件数据的多副本存储系统,文件数据的多副本存储系统包括:客户端和控制节点;

客户端402,用于向控制节点401发送针对目标文件的第二写入请求,以及接收控制节点401返回的第一预设数量个存储节点对应的地址信息,并从第一预设数量个存储节点中选取第二预设数量个存储节点,得到各待写入存储节点,分别向各待写入存储节点发送第一写入请求,确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,当接收到表示写入成功的写入结果信息个数不为零时,将写入成功的存储节点对应的信息确定为存储结果信息,将存储结果信息发送给控制节点401;其中,写入结果信息表示待写入存储节点执行第一写入请求对应写操作的结果。

控制节点401,用于对客户端402发送的针对目标文件的第二写入请求进行校验,当对第二写入请求校验成功时,为待写入数据选取第一预设数量个存储节点,得到第一预设数量个存储节点对应的地址信息,将第一预设数量个存储节点对应的地址信息发送给客户端402,以及接收客户端402返回的存储结果信息,在存储结果信息包含写入成功的存储节点对应信息的情况下,判断写入成功的存储节点的个数是否与第二预设数量相同,如果写入成功的存储节点的个数与第二预设数量不同,则将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,并对目标文件对应的元数据信息进行更新;其中,第二写入请求对应相应的待写入数据。

本发明实施例提供的一种文件数据的多副本存储系统,客户端可以向各待写入存储节点发送第一写入请求,以实现多个副本文件的并发写,且,客户端设定预设超时时间段,进而确定预设超时时间段内接收到的表示写入成功的写入结果信息个数,能够及时发现由于存储节点宕机或存储节点写数据较慢导致数据写入失败的情况,并将存储结果信息发送给控制节点。控制节点在写入成功的存储节点的个数与第二预设数量不同的情况下,将写入成功的存储节点中目标文件对应的数据,备份至除各待写入存储节点之外的存储节点中,实现写入失败数据的异步恢复,并对目标文件对应的元数据信息进行更新,避免了由于存储节点宕机或存储节点写数据较慢引起的数据写入失败导致的多副本存储效率低的问题,能够提高文件数据的多副本存储效率。

可选的,系统还包括存储节点403:

存储节点403,用于接收客户端402发送的第一写入请求,根据第一写入请求执行对应的写操作,并将写入结果信息返回给客户端402。

可选的,客户端402,还用于:

在接收到表示写入成功的写入结果信息个数为零时,判断向各待写入存储节点发送第一写入请求的次数是否达到预设次数;

如果向各待写入存储节点发送第一写入请求的次数达到预设次数,则将目标文件多副本存储失败的信息确定为存储结果信息,并执行将存储结果信息发送给控制节点401的操作;

如果向各待写入存储节点发送第一写入请求的次数没有达到预设次数,则执行从第一预设数量个存储节点中选取第二预设数量个存储节点的操作。

可选的,控制节点401,还用于:

在写入成功的存储节点403的个数与第二预设数量相同时,对目标文件对应的元数据信息进行更新。

可选的,控制节点401,具体用于:

基于写入成功的存储节点的个数,确定写入失败的存储节点的个数作为第一数量;

将写入成功的存储节点中目标文件对应的数据,备份至第一预设数量个存储节点中除各待写入存储节点之外的第一数量个存储节点中。

可选的,控制节点401,还用于:

在存储结果信息包含目标文件多副本存储失败信息的情况下,不对目标文件对应的元数据信息进行更新。

可选的,存储节点403,还用于:

向控制节点401发送自身的状态信息,自身的状态信息包括:节点状态以及剩余空间大小。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一一种文件数据的多副本存储方法的步骤,以达到相同的效果。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1