文件存储和读取的方法及装置与流程

文档序号:11157584阅读:780来源:国知局
文件存储和读取的方法及装置与制造工艺

本申请涉及数据处理技术领域,尤其涉及一种文件存储和读取的方法及装置。



背景技术:

近年来,数字视频的应用迅猛发展。在数字视频系统中,视频的采集、传输、编码、解码等过程会不可避免地引入存储问题,存储的性能,直接影响到视频的观看质量。

单论存储,目前业界有各种不同的存储。针对视频存储而言,视频的数据量大,访问呈现形式是流式。在实现本申请过程中,发明人发现相关技术中至少存在如下问题:有些网络存储,在大规模内容分发网络或者直播场景下,并不适合部署,成本太高。而传统的分布式存储因小文件众多,对节点内存使用过大,也不适用,并且,某些文件系统响应速度比较慢,也不适合在低延时的视频应用中做中继或者边缘节点使用。



技术实现要素:

本申请实施例提供了一种文件存储和读取的方法及装置,以至少解决现有技术中存储成本高及读取速度不够快的问题。

第一方面,本申请实施例提供一种文件存储方法,包括:

将待存储的文件,分成N个源码块;

对所述N个源码块进行分组,生成M个码块组,其中,每个码块组均包括至少一个源码块,M>N;

对所述M个码块组分别进行编码,以生成M个编码块;

将所述M个编码块存储至多个存储装置中。

第二方面,本申请实施例提供一种文件存储装置,包括:

分块模块,配置用于将待存储的文件,分成N个源码块;

分组模块,配置用于对所述N个源码块进行分组,生成M个码块组,其中,每个码块组均包括至少一个源码块,M>N;

编码模块,配置用于对所述M个码块组分别进行编码,以生成M个编码块;

存储模块,配置用于将所述M个编码块存储至多个存储装置中。

第三方面,本申请实施例还提供了一种电子设备,包括:至少一个处理器;以及存储器;其中,所述存储器存储有可被所述至少一个处理器执行的程序,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请上述任一项文件存储方法。

第四方面,本申请实施例还提供一种文件读取方法,包括:

根据文件读取请求,确定所述文件的源码块的数量N、编码块的数量M、以及所述M个编码块所在的多个存储装置;

向各存储装置发送编码块获取请求;

当自所述存储装置接收到S个编码块时,对所述S个编码块进行译码,其中,N≤S<M;

当译码后成功恢复所述文件时,利用所述恢复后的文件响应所述文件读取请求。

第五方面,本申请实施例提供一种文件读取装置,包括:

确定模块,配置用于根据文件读取请求,确定所述文件的源码块的数量N、编码块的数量M、以及所述M个编码块所在的多个存储装置;

发送模块,配置用于向各存储装置发送编码块获取请求;

译码模块,配置用于当自所述存储装置接收到S个编码块时,对所述S个编码块进行译码,其中,N≤S<M;

响应模块,配置用于当译码后成功恢复所述文件时,利用所述恢复后的文件响应所述文件读取请求。

第六方面,本申请实施例还提供了一种电子设备,包括:至少一个处理器;以及存储器;其中,所述存储器存储有可被所述至少一个处理器执行的程序,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请上述任一项文件读取方法。

本申请实施例的文件存储方法可以实现利用零碎的空间存储数据,例如视频数据这种可以切分的数据。本申请实施例的文件读取方法,可以实现不用等到所有请求被响应,即可开始恢复数据,从而可以有效的提高读取性能,降低部署成本。

附图说明

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

图1是本申请一实施例提供的一种文件存储方法的流程图;

图2是本申请一实施例提供的另一种文件存储方法的流程图;

图3是本申请一实施例提供的一种文件读取方法的流程图;

图4是本申请一实施例提供的另一种文件读取方法的流程图;

图5是本申请一实施例提供的又一种文件读取方法的流程图;

图6是本申请一实施例提供的文件读取方法的一种实现的流程图;

图7是本申请一实施例提供的一种文件存储装置的结构示意图;

图8是本申请一实施例提供的一种文件读取装置的结构示意图;

图9是本申请一实施例提供的电子设备的结构示意图。

具体实施方式

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

请参考图1,其示出了本申请一实施例提供的一种文件存储方法的流程图,本实施例的技术方案可适用于将一个文件分成多个部分并进行多个备份的存储,该方法可以由文件存储的电子设备来执行。

本申请实施例提供的一种文件存储方法,包括如下步骤:

步骤101,将待存储的文件,分成N个源码块;

步骤102,对N个源码块进行分组,生成M个码块组,其中,每个码块组均包括至少一个源码块,M>N;

步骤103,对M个码块组分别进行编码,以生成M个编码块;

步骤104,将M个编码块存储至多个存储装置中。

在本实施例中,对于步骤101,电子设备可以将待存储的文件,分成N个源码块,可以将一个待存储的视频文件切分成多块,例如讲一个视频文件切分成9块,还可以依次对其进行编号,形成编号为1、2、3、4、5、6、7、8、9的9个源码块,从而之后可以利用比较零碎的空间来存储视频。

之后,对于步骤102,电子设备可以对之前在步骤101中分成的N个源码块进行重新分组,形成M个码块组,其中,每一个码块组中可以包括至少一个源码块。例如可以将前面的9个源码块分为一个一组、两个一组、三个一组等,当然也可以分为更多个例如8个一组之类的,但是如果一组里面有太多源码块的话,也违背了当初把文件切分成多块的初衷,所以比较优选的还是分成少量的几个一组,例如三个一组,具体的,可以是123、246、589、478之类的。

然后,对于步骤103,电子设备可以对分好的M个码块组分别进行编码,以形成M个编码块,例如对之前的123、246、589之类的码块组重新编码,形成新的编码块,例如123可以对应为编码块a,246可以对应为编码块b,589可以对应为编码块c,当然也可以有其他编码方式和命名,本申请在此方面没有限制。

最后,对于步骤104,电子设备可以将M个编码块分别存储至多个存储装置中,例如可以存储在磁盘中,当然也可以存储在其他外部设备如硬盘、软盘、U盘、光盘之类的,本申请在此方面没有限制。需要说明的是,不同的编码块也可以存储在相同的存储装置中,例如也可以存储在同一磁盘的不同位置。

本实施例的文件存储方法,通过对待存储文件进行分块、分组、编码和存储,可以将一个文件分成多个部分存储在不同的地方,从而可以利用比较零碎的空间存储文件,进一步地,由于多个编码块中一般都会或多或少存在重复的部分,因此,相当于对文件进行了一次或多次备份,从而即使其中部分编码块损坏,也不会影响文件的完整性,也能凭借部分编码块对文件进行恢复。

请参考图2,其示出了本申请一实施例提供的另一种文件存储方法的流程图。本实施例中的流程是对图1中步骤103的细化的流程,具体包括以下步骤:

步骤201,根据每个码块组中的源码块的数量,选择相应的编码方式;

步骤202,利用编码方式对每个码块组进行编码以生成相应的编码块。

在本实施例中,对于步骤201,电子设备可以根据每一个码块组中源码块的数量,选择不同的编码方式或者选择不同的命名方式,从而是各种数量的编码块更易被识别,例如,当码块组中只含有一个源码块时,可以在编码和命名时有所区别,例如编成以a开头的,例如a3可以指代只有一个源码块,是只包含源码块为3的码块组。

之后,对于步骤202,电子设备可以按照之前的方式对码块组进行编码以生成相应的编码块。

本实施例的方法,在图1的实施例所对应的方法的基础上,通过根据码块组中的源码块的数量在编码时有所区别,可以使编码块更加容易被识别,从而可以加快之后译码的速度。

进一步参考图3,其示出了本申请一实施例提供的一种文件读取方法的流程图。本实施例的技术方案可适用于响应于文件读取请求,快速向用户提供该文件,该方法可以由文件读取的电子设备来执行。具体包括如下步骤:

步骤301,根据文件读取请求,确定文件的源码块的数量N、编码块的数量M以及M个编码块所在的多个存储装置;

步骤302,向各存储装置发送编码块获取请求;

步骤303,当自存储装置接收到S个编码块时,对S个编码块进行译码,其中,N≤S<M;

步骤304,当译码后成功恢复文件时,利用恢复后的文件响应文件读取请求。

在本实施例中,对于步骤301,电子设备根据接收到的文件读取请求,确定该文件的源码块的数量N,编码块的数量M以及M个编码块所在的多个存储装置,例如,其中源码块的数量可以为9,编码块的数量可以为30,存储装置的数量没有限制。

之后,对于步骤302,电子设备向各个存储装置发送编码块获取请求。

之后,对于步骤303,当自各存储装置接收到的编码块的个数S≥N时,对S个编码块进行译码,其中,S<M,从而,不用收到全部的M个编码块就可以开始译码。

最后,对于步骤304,当译码后成功恢复文件时,利用恢复后的文件响应之前的文件读取请求,将恢复后的文件发送给相应的设备。

本实施例的方法,通过在没有接收到所有的编码块的时候就开始译码从而可以能够快速的恢复文件,更加快速的对文件读取请求作出响应。

请参考图4,其示出了本申请一实施例提供的另一种文件读取方法的流程图。本实施例中的流程是对图3中步骤301的细化的流程,具体包括以下步骤:

步骤401,根据文件读取请求,获取文件的文件名;

步骤402,根据文件名,索引并解析文件名所对应的元数据,其中,元数据包括文件的源码块的数量N、编码块的数量M、以及M个编码块所在的多个存储装置。

在本实施例中,对于步骤401,电子设备根据接收到的文件读取请求,获取待读取的文件的文件名。例如,可以对文件读取请求中的相关字段进行解析以提取出相应的文件名。

之后,对于步骤402,电子设备根据获取的文件名,按照该文件名索引出相应的元数据,之后对该元数据进行解析,并获取其中的某些字段,例如文件的源码块的数量N、编码块的数量M、以及M个编码块所在的多个存储装置。进一步地,当存储装置为磁盘时,还可以获取元数据类型,文件片序号,长度,所在磁盘编号,所在磁盘文件编号,长度,文件片校验值(例如循环冗余校验值)。

本实施例的文件读取方法,通过根据文件名找到元数据,之后解析元数据中的相关字段获取所需的信息,从而之后可以根据解析出来的信息发送编码块获取请求,可以实现对文件读取请求的解析。

可选的,元数据中还可以包括多个编码块的校验信息,电子设备还可以通过查询多个编码块在存储装置中的具体存储地址,从而确定每一存储地址中均存储有与所述每一存储地址对应的编码块;并根据每一编码块的校验信息对每一编码块进行校验,当多个编码块均校验通过时,向所述多个存储地址发起编码块获取请求。进一步地,也可以在其中超过阈值数量的编码块都通过校验时发起请求,而不用校验所有的编码块,从而可以节省校验的时间,其中,该阈值可以大于源码块的数量N,小于编码块的数量M,从而可以减少校验的数量,节省时间,更快速地响应。

在另一些可选的实施例中,元数据还包括由每一编码块及与每一编码块对应的源码块的映射关系形成的编码库,电子设备还可以基于编码块根据预设的译码算法对所接收的编码块进行译码;之后,如果译码失败,继续接收新的编码块并继续译码;重复上述步骤直至译码成功,从而得到N个源码块。从而可以在失败之后继续接收和译码,从而也能在一定时间上加快对读取请求的响应速度。

进一步参考图5,其示出了本申请一实施例提供的另一种文件读取方法的流程图。本实施例的流程是在图3中的步骤302进一步细化的流程。具体包括如下步骤:

步骤501,基于待获取的M个编码块确定待发送的M个输入输出请求数据包;

步骤502,检测数据包中是否存在向同一个存储装置发送的数据包;

步骤503,对向同一个存储装置发送的数据包进行合并处理;

步骤504,向各存储装置发送经合并处理后的多个输入输出请求数据包。

在本实施例中,对于步骤501,电子设备根据待获取的M个编码块确定待发送的M个输入输出(I/O,Input/Output)请求数据包。之后,对于步骤502,检测所有的M个数据包中是否存在向同一个存储装置发送的数据包,之后对于步骤503,当检测到其中存在向同一个存储装置发送的数据包时,对其进行合并处理,例如存在三个数据包都是向存储装置A发出的,则对这三个数据包进行合并,将这三个请求合并在一起,从而通过一次I/O请求就能读取三次数据。最后,对于步骤504,电子设备向各个存储装置发送经过合并处理之后的多个I/O请求。

本实施例的文件读取方法,通过对向同一存储装置发送的多个输入输出请求数据包进行合并处理,从而可以减少发送的请求数据包的数量,通过一次请求即可读取多个数据,从而可以减少发送数据包和读取数据的时间,进一步地可以减少处理的时间,提高处理效率,快速对读取请求作出响应。

请参考图6,其示出了本申请一实施例提供的文件读取方法的一种实现的流程图。以下实施例重在解决视频回看,以及点播中文件读取的性能方面做优化。提高数据读取速度。从而提高视频服务器的性能。降低视频的卡顿比。

在本实施例中,对于步骤601,对待每次请求数据,检索数据元数据,根据元数据,确定数据分片所在具体的磁盘。之后,对于步骤602,若元数据损坏,则不对该数据进行处理,通过后台方式对数据进行恢复。然后对于步骤603,向各个磁盘发起IO请求。最后,对于步骤604,数据到达一定可恢复阈值,利用编码运算,恢复数据的原貌。

其中,整个系统可以包括元数据模块、I/O模块以及编解码模块。

在元数据模块中,元数据索引以文件名为索引,元数据内容为:元数据类型,文件片序号,长度,所在磁盘编号,所在磁盘文件编号,长度,文件片CRC(循环冗余校验)校验值。读取文件元数据后,对文件的元数据进行解码,解析出上述字段,并检查磁盘,文件是否存储,校验元数据正确性。

在I/O模块中,并行向所有文件块发起请求,等待所有I/O请求到达可恢复文件的阈值。在这个模块,相同的I/O请求会合并,进一步减少磁盘I/O的数量,提高系统有效I/O能力。

编解码模块,可以利用喷泉码的思想。所谓喷泉码,是指这种编码的发送端随机编码,由k个原始分组生成任意数量的编码分组,源节点在不知道这些数据包是否被成功接收的情况下,持续发送数据包。而接收端只要收到N=k(1+ε)个编码分组的任意子集(ε>0),即收到一个稍微大于原来k值的N个子集,就可通过译码以高概率(与ε有关)成功地恢复全部原始分组。

现我们将I/O获得的结果作为输入源,只要输入源>K,利用我们的编码库,对数据进行恢复。

以上提出了一种针对存储于多磁盘的存储方式,可以有效的提高读取性能,降低部署成本。不仅可以提高存储读取性能,并能够提供数据完备性的方案,将备份与快速读取合为一体。本发明还可以让用户自定义编码加密功能,保证数据的安全性。

请参考图7,其示出了本申请一实施例提供的一种文件存储装置的结构示意图。如图7所示,本实施例的文件存储装置700包括分块模块701、分组模块702、编码模块703以及存储模块704。其中,分块模块701,配置用于将待存储的文件,分成N个源码块;分组模块702,配置用于对N个源码块进行分组,生成M个码块组,其中,每个码块组均包括至少一个源码块,M>N;编码模块703,配置用于对M个码块组分别进行编码,以生成M个编码块;以及存储模块704,配置用于将M个编码块存储至多个存储装置中。

在一些可选的实施例中,编码模块703包括选择模块和生成模块(图中为示出)。其中,选择模块,配置用于根据每个码块组中的源码块的数量,选择相应的编码方式;以及生成模块,配置用于利用编码方式对每个码块组进行编码以生成相应的编码块。

请参考图8,其示出了本申请一实施例提供的一种文件读取装置的结构示意图。如图8所示,文件读取装置800包括确定模块801、发送模块802、译码模块803和响应模块804。其中,确定模块801,配置用于根据文件读取请求,确定文件的源码块的数量N、编码块的数量M、以及M个编码块所在的多个存储装置;发送模块802,配置用于向各存储装置发送编码块获取请求;译码模块803,配置用于当自存储装置接收到S个编码块时,对S个编码块进行译码,其中,N≤S<M;以及响应模块804,配置用于当译码后成功恢复文件时,利用恢复后的文件响应文件读取请求。

在一些可选的实施例中,确定模块801包括文件名获取模块和索引解析模块(图中未示出)。其中,文件名获取模块,配置用于根据文件读取请求,获取文件的文件名;以及索引解析模块,配置用于根据文件名,索引并解析文件名所对应的元数据,其中,元数据包括文件的源码块的数量N、编码块的数量M、以及M个编码块所在的多个存储装置。

在另一些可选的实施例中,发送模块802包括请求确定模块、检测模块、合并处理模块和请求发送模块(图中未示出)。其中,请求确定模块,配置用于基于待获取的M个编码块确定待发送的M个输入输出请求数据包;检测模块,配置用于检测数据包中是否存在向同一个存储装置发送的数据包;合并处理模块,配置用于对向同一个存储装置发送的数据包进行合并处理;以及请求发送模块,配置用于向各存储装置发送经合并处理后的多个输入输出请求数据包。

应当理解,图7和图8中记载的诸模块与参考图1、图2、图3、图4以及图5描述的方法中的各个步骤相对应。由此,上文针对方法描述的特征和效果同样适用于图7和图8中的诸模块,在此不再赘述。

值得注意的是,本发明的实施例中的模块并不用于限制本发明的方案,例如分块模块可以描述为用于将待存储的文件,分成N个源码块的模块。另外,还可以通过硬件处理器来实现相关功能模块,例如分块模块也可以用处理器实现,在此不再赘述。

本申请实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的文件存储方法;

作为一种实施方式,本发明的非易失性计算机存储介质存储有计算机可执行指令,所述计算机可执行指令设置为:

将待存储的文件,分成N个源码块;

对所述N个源码块进行分组,生成M个码块组,其中,每个码块组均包括至少一个源码块,M>N;

对所述M个码块组分别进行编码,以生成M个编码块;

将所述M个编码块存储至多个存储装置中。

作为另一种实施方式,本发明的非易失性计算机存储介质存储有计算机可执行指令,所述计算机可执行指令设置为:

根据文件读取请求,确定所述文件的源码块的数量N、编码块的数量M、以及所述M个编码块所在的多个存储装置;

向各存储装置发送编码块获取请求;

当自所述存储装置接收到S个编码块时,对所述S个编码块进行译码,其中,N≤S<M;

当译码后成功恢复所述文件时,利用所述恢复后的文件响应所述文件读取请求。

作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的文件存储方法对应的程序指令/模块(例如,附图7所示的分块模块701、分组模块702、编码模块703以及存储模块704)。所述一个或者多个模块存储在所述非易失性计算机可读存储介质中,当被处理器执行时,执行上述任意方法实施例中的文件存储方法或文件读取方法。

非易失性计算机可读存储介质可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据文件存储系统的使用所创建的数据等。此外,非易失性计算机可读存储介质可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,非易失性计算机可读存储介质可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至文件存储装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项文件存储方法或文件读取方法。

图9是本申请一实施例提供的电子设备的结构示意图,如图9所示,该设备包括:

一个或多个处理器910以及存储器920,图9中以一个处理器910为例。

文件存储方法的设备还可以包括:输入装置930和输出装置940。

处理器910、存储器920、输入装置930和输出装置940可以通过总线或者其他方式连接,图9中以通过总线连接为例。

存储器920为上述的非易失性计算机可读存储介质。处理器910通过运行存储在存储器920中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例文件存储方法。

输入装置930可接收输入的数字或字符信息,以及产生与文件存储装置的用户设置以及功能控制有关的键信号输入。输出装置940可包括显示屏等显示设备。

上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。

作为一种实施方式,上述电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

将待存储的文件,分成N个源码块;

对所述N个源码块进行分组,生成M个码块组,其中,每个码块组均包括至少一个源码块,M>N;

对所述M个码块组分别进行编码,以生成M个编码块;

将所述M个编码块存储至多个存储装置中。

作为另一种实施方式,上述电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

根据文件读取请求,确定所述文件的源码块的数量N、编码块的数量M、以及所述M个编码块所在的多个存储装置;

向各存储装置发送编码块获取请求;

当自所述存储装置接收到S个编码块时,对所述S个编码块进行译码,其中,N≤S<M;

当译码后成功恢复所述文件时,利用所述恢复后的文件响应所述文件读取请求。

本申请实施例的电子设备以多种形式存在,包括但不限于:

(1)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

(2)其他具有数据交互功能的电子装置。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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