发明内容
本公开一个或多个实施例的目的之一是提供由文件发送设备执行的文件传输方法、由文件接收设备执行的文件传输方法、文件传输方法、文件发送设备、文件接收设备、以及文件传输系统。
根据本公开一个或多个实施例的第一方面,提供了一种由文件发送设备执行的文件传输方法,包括:将要传输的文件切分为多个文件分片,并根据第一预定规则命名每个文件分片;创建元文件,所述元文件包括每个文件分片的校验信息;根据第二预定规则将所述多个文件分片和所述元文件上传到文件服务器的存储目录中;以及将所述元文件的存储路径和校验信息通知文件接收设备,其中所述元文件的存储路径包括所述元文件的存储目录和所述元文件的文件名。
根据本公开一个或多个实施例的第二方面,提供了一种由文件接收设备执行的文件传输方法,包括:根据元文件的存储路径,从文件服务器下载所述元文件;根据所述元文件的校验信息校验所述元文件;响应于所述元文件的检验通过,从所述元文件中提取要传输的文件所包括的多个文件分片中的第一文件分片的校验信息;根据所述元文件的存储路径、以及元文件的存储路径与文件分片的存储路径之间的预定规则,从文件服务器下载所述第一文件分片;以及根据所述第一文件分片的校验信息的对所述第一文件分片进行校验。
根据本公开一个或多个实施例的第三方面,提供了一种由文件接收设备执行的文件传输方法,包括:根据元文件的存储路径,从文件服务器下载所述元文件;根据所述元文件的校验信息校验所述元文件;响应于所述元文件的检验通过,从所述元文件中提取要传输的文件所包括的文件分片的个数、以及各文件分片的校验信息;根据所述元文件的存储路径、以及元文件的存储路径与文件分片的存储路径之间的预定规则,从文件服务器下载各文件分片;以及根据各文件分片的校验信息的对各文件分片进行校验。
根据本公开一个或多个实施例的第四方面,提供了一种文件传输方法,包括:由文件发送设备:将要传输的文件切分为多个文件分片,并根据第一预定规则命名每个文件分片;创建元文件,所述元文件包括每个文件分片的校验信息;根据第二预定规则将所述多个文件分片和所述元文件上传到文件服务器的存储目录中;以及将所述元文件的存储路径和校验信息通知文件接收设备,其中所述元文件的存储路径包括所述元文件的存储目录和所述元文件的文件名,以及由文件接收设备:根据所述元文件的存储路径,从文件服务器下载所述元文件;根据所述元文件的校验信息校验所述元文件;响应于所述元文件的检验通过,从所述元文件中提取要传输的文件所包括的多个文件分片中的第一文件分片的校验信息;根据所述元文件的存储路径以及所述第一和第二预定规则确定所述第一文件分片的存储路径,并从文件服务器下载所述第一文件分片;以及根据所述第一文件分片的校验信息的对所述第一文件分片进行校验。
根据本公开一个或多个实施例的第五方面,提供了一种文件传输方法,包括:由文件发送设备:将要传输的文件切分为多个文件分片,并根据第一预定规则命名每个文件分片;创建元文件,所述元文件包括要传输的文件所包括的文件分片的个数、以及每个文件分片的校验信息;根据第二预定规则将所述多个文件分片和所述元文件上传到文件服务器的存储目录中;以及将所述元文件的存储路径和校验信息通知文件接收设备,其中所述元文件的存储路径包括所述元文件的存储目录和所述元文件的文件名,以及由文件接收设备:根据所述元文件的存储路径,从文件服务器下载所述元文件;根据所述元文件的校验信息校验所述元文件;响应于所述元文件的检验通过,从所述元文件中提取要传输的文件所包括的文件分片的个数、以及各文件分片的校验信息;根据所述元文件的存储路径以及所述第一和第二预定规则确定各文件分片的存储路径,并从文件服务器下载各文件分片;以及根据各文件分片的校验信息的对各文件分片进行校验。
根据本公开一个或多个实施例的第六方面,提供了一种文件发送设备,包括:切分单元,被配置为将要传输的文件切分为多个文件分片,并根据第一预定规则命名每个文件分片;创建单元,被配置为创建元文件,所述元文件包括每个文件分片的校验信息;上传单元,被配置为根据第二预定规则将所述多个文件分片和所述元文件上传到文件服务器的存储目录中;以及通知单元,被配置为将所述元文件的存储路径和校验信息通知文件接收设备,其中所述元文件的存储路径包括所述元文件的存储目录和所述元文件的文件名。
根据本公开一个或多个实施例的第七方面,提供了一种文件接收设备,包括:下载单元,被配置为根据元文件的存储路径,从文件服务器下载所述元文件;校验单元,被配置为根据所述元文件的校验信息校验所述元文件;提取单元,被配置为响应于所述元文件的检验通过,从所述元文件中提取要传输的文件所包括的多个文件分片中的第一文件分片的校验信息;以及确定单元,被配置为根据所述元文件的存储路径、以及元文件的存储路径与文件分片的存储路径之间的预定规则,确定所述第一文件分片的存储路径,其中,所述下载单元还被配置为根据所述第一文件分片的存储路径从文件服务器下载所述第一文件分片;以及所述校验单元还被配置为根据所述第一文件分片的校验信息的对所述第一文件分片进行校验。
根据本公开一个或多个实施例的第八方面,提供了一种文件接收设备,包括:下载单元,被配置为根据元文件的存储路径,从文件服务器下载所述元文件;校验单元,被配置为根据所述元文件的校验信息校验所述元文件;提取单元,被配置为响应于所述元文件的检验通过,从所述元文件中提取要传输的文件所包括的文件分片的个数、以及各文件分片的校验信息;以及确定单元,被配置为根据所述元文件的存储路径、以及元文件的存储路径与文件分片的存储路径之间的预定规则,确定各文件分片的存储路径,其中,所述下载单元还被配置为根据各文件分片的存储路径从文件服务器下载各文件分片;以及所述校验单元还被配置为根据各文件分片的校验信息的对各文件分片进行校验。
根据本公开一个或多个实施例的第九方面,提供了一种文件传输系统,包括文件发送设备、多个文件接收设备和文件服务器,其中,所述文件发送设备被配置为:将要传输的文件切分为多个文件分片,并根据第一预定规则命名每个文件分片;创建元文件,所述元文件包括每个文件分片的校验信息;根据第二预定规则将所述多个文件分片和所述元文件上传到文件服务器的存储目录中;以及将所述元文件的存储路径和校验信息通知文件接收设备,其中所述元文件的存储路径包括所述元文件的存储目录和所述元文件的文件名,以及所述多个文件接收设备中的每个文件接收设备被配置为:根据所述元文件的存储路径,从文件服务器下载所述元文件;根据所述元文件的校验信息校验所述元文件;响应于所述元文件的检验通过,从所述元文件中提取要传输的文件所包括的多个文件分片中的第一文件分片的校验信息;根据所述元文件的存储路径以及所述第一和第二预定规则确定所述第一文件分片的存储路径,并从文件服务器下载所述第一文件分片;以及根据所述第一文件分片的校验信息的对所述第一文件分片进行校验。
根据本公开一个或多个实施例的第十方面,提供了一种文件传输系统,包括文件发送设备、文件接收设备和文件服务器,其中,所述文件发送设备被配置为:将要传输的文件切分为多个文件分片,并根据第一预定规则命名每个文件分片;创建元文件,所述元文件包括要传输的文件所包括的文件分片的个数、以及每个文件分片的校验信息;根据第二预定规则将所述多个文件分片和所述元文件上传到文件服务器的存储目录中;以及将所述元文件的存储路径和校验信息通知文件接收设备,其中所述元文件的存储路径包括所述元文件的存储目录和所述元文件的文件名,以及所述文件接收设备被配置为:根据所述元文件的存储路径,从文件服务器下载所述元文件;根据所述元文件的校验信息校验所述元文件;响应于所述元文件的检验通过,从所述元文件中提取要传输的文件所包括的文件分片的个数、以及各文件分片的校验信息;根据所述元文件的存储路径以及所述第一和第二预定规则确定各文件分片的存储路径,并从文件服务器下载各文件分片;以及根据各文件分片的校验信息的对各文件分片进行校验。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
具体实施方式
为了使本技术领域的人员更好地理解本公开中的技术方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。然而应当理解的是,本公开一个或多个实施例可以以多种不同的方式呈现出来,并不局限于下文描述的实施例。还应当理解的是,本公开一个或多个实施例能够以各种方式进行组合,从而提供更多额外的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
应当理解的是,本文中的用语仅用于描述特定的实施例,并不旨在限定。本文使用的所有术语(包括技术术语和科学术语)除非另外定义,均具有本领域技术人员通常理解的含义。为简明和/或清楚起见,公知的功能或结构可以不再详细说明。
在本文中,用语“连接”意图包含一个特征与另一个特征的物理、电性、和/或通信连接,并且这一个特征与另一个特征之间可以存在也可以不存在中间特征。当连接为通信连接时,即使提及A与B“直接连接”,只是意图强调A与B的连接之间不存在本公开一个或多个实施例所强调的一个或多个特征,但并不代表限制A与B之间不经过任何元件而连接,本领域技术人员应理解,A与B之间可以通过线缆、路由器、网关、信道、链路、网络等相连接。需要说明的是,在本公开一个或多个实施例的附图中,A与B之间的无论是直接连接还是间接连接都通过连接在A与B之间的直线或其他图形元素来表示。
在本文中,用语“A或B”包括“A和B”以及“A或B”,而不是排他地仅包括“A”或者仅包括“B”,除非另有特别说明。
在本文中,用语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开一个或多个实施例不受在上述技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
在本文中,用语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。用语“基本上”还允许由寄生效应、噪声以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
另外,仅仅为了参考的目的,还可以在本文中使用“第一”、“第二”等类似术语,并且因而并非意图限定。例如,除非上下文明确指出,否则涉及结构或元件的词语“第一”、“第二”和其它此类数字词语并没有暗示顺序或次序。
还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
需要说明的是:在其他实施例中并不一定按照本公开示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本公开所描述的更多或更少。此外,本公开中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本公开中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
在数据消费方只获取要传输的数据文件的一部分的情况下,如何保证所获取的部分数据的完整性是需要解决的问题。一种解决方案是,数据提供方将要传输的数据文件预先切分成多个文件分片,分别存储在不同的存储路径。数据消费方逐个存储路径下载文件分片,分别进行文件摘要校验,校验通过后再进行加工处理。在这种方案中,数据提供方需要针对每个文件分片分别向数据消费方通知存储路径和校验信息(例如文件分片的摘要值),信息交换过程较为繁琐。
下面先结合图1说明根据本公开一个或多个示例性实施例的由文件发送设备执行的文件传输方法100。文件传输方法100包括如下描述的操作110至操作140。在一些实施例中,文件发送设备可以为数据拥有方/数据提供方的计算机设备,该计算机设备可以从数据库下载需要传输的数据文件,并执行文件传输方法100。在一些实施例中,文件发送设备可以为数据拥有方/数据提供方的代理设备,该代理设备可以从数据拥有方/数据提供方获取需要传输的数据文件,并执行文件传输方法100。在一些实施例中,文件发送设备可以为数据拥有方/数据提供方的计算机设备和数据拥有方/数据提供方的代理设备的组合,计算机设备和代理设备协同执行文件传输方法100。
在操作110,文件发送设备将要传输的文件切分为多个文件分片,并根据第一预定规则命名每个文件分片。文件发送设备可以先确定每个文件分片的大小,然后再将要传输的文件切分为多个文件分片。多个文件分片可以具有相同或不同的大小。在一些实施例中,文件发送设备可以根据文件接收设备(可以为一个或多个)的限制条件,例如处理器的处理能力限制和/或存储器的存储能力限制等,来确定每个文件分片的大小。在一些实施例中,文件发送设备可以根据网络的限制条件,例如传输带宽和/或信号强度等,来确定文件分片的大小。文件发送设备根据文件分片的大小将要传输的文件切分为多个文件分片,以使得可以通过传输多个文件分片来将整个文件传输给文件接收设备。
文件发送设备基于要传输的文件中的数据的语义单元将要传输的文件切分为多个文件分片。每个文件分片包含一个或多个完整的语义单元,而不能在切分的时候将语义单元切断。语义单元是指要传输的文件中的数据能够表达一个完整语义的最小单位。例如,如果要传输的文件中的数据是以行为单位存储的表数据,则该文件中的数据的语义单元为行。文件发送设备在进行文件分片的切分是,需要在要传输的文件中的数据中的换行符处进行切分,即在一行数据的结束处进行切分,而不能在一行数据的中间切断一行完整的数据。在一些实施例中,在进行文件分片切分时,还要考虑语义单元之间的相关性,对于具有相关性而需要一起进行数据处理的语义单元,需要切分到同一个文件分片中。
文件发送设备还根据第一预定规则命名每个文件分片。第一预定规则可以为文件发送设备和文件接收设备共同知晓的任何为各文件分片命名的规则。这使得文件接收设备可以根据第一预定规则获知每个文件分片的命名,以便于文件接收设备能够检索到各文件分片。在一些实施例中,第一预定规则可以为将各文件分片命名为“特定的文件分片名前缀”+“相应的文件分片的序号”+“文件扩展名”。以“特定的文件分片名前缀”为“AAA”为例,要传输的文件所切分出的第一个文件分片可以被命名为“AAA0.slice”,第二个文件分片可以被命名为“AAA1.slice”,依此类推,第N个文件分片可以被命名为“AAA(N-1).slice”。在一些实施例中,第一预定规则可以为基于每个文件分片的校验信息命名相应的文件分片,以使得文件接收设备根据每个文件分片的校验信息(例如,如下文所述,可以从元文件中获得)能够获知相应的文件分片的文件名。文件分片的校验信息可以是相应的文件分片的摘要值。例如,要传输的文件所切分出的第一个文件分片的摘要值为yyy0,则第一个文件分片可以被命名为“yyy0.slice”;第二个文件分片的摘要值为yyy1,则第二个文件分片可以被命名为“yyy1.slice”;依此类推,第N个文件分片的摘要值为yyy(N-1),则第N个文件分片可以被命名为“yyy(N-1).slice”。
需要说明的是,文件扩展名也是第一预定规则中需要明确的一部分,以便于文件接收设备能够根据第一预定规则检索到文件发送设备上传到文件服务器的各文件分片。为示出简明起见,在本文的举例中,以“.slice”作为文件分片的文件扩展名。本领域技术人员应理解,实际文件分片的文件扩展名与要传输的文件和/或文件分片的属性相关,例如根据情况可以为“.zip”、“.zip.001”、“.dat”、“.txt”等。
在操作120,文件发送设备创建元文件。图5为根据本公开一个或多个示例性实施例的元文件的内容结构的示意图。其中,元文件中包括一个数组,数组中的每个元素为文件分片的描述符,使得该数组中的第i个元素记录了要传输的文件的第i个文件分片的校验信息。在一些实施例中,文件分片的校验信息可以包括相应的文件分片的摘要值,文件发送设备对每个文件分片分别计算相应的文件分片的摘要值作为相应的文件分片的校验信息。例如,可以通过安全散列算法(Secure Hash Algorithm,SHA),例如SHA-256,来计算文件分片的摘要值。
在一些实施例中,可以基于文件分片的整体数据计算文件分片的摘要值。例如,对一个文件分片中所包括的全部语义单元进行拼接后,一次性地计算该文件分片的摘要值。在一些实施例中,可以边读取文件边计算摘要值。例如,从当前文件分片的起始位置开始,逐个地读取数据单元并计算该数据单元的摘要值,即单元摘要值,并将计算得到的每个单元摘要值进行累加(即异或运算),直到读取的数据单元的个数使得当前文件分片的大小满足分片条件(例如,文件分片的大小达到所确定的文件分片的大小、和/或文件分片中所包括的数据单元的个数达到限制等),将以及为当前的文件分片读取的多个数据单元拼接为一个文件分片(即完成了当前的文件分片的切分),并且将为当前的文件分片计算的多个数据单元的单元摘要值的累加值作为该文件分片的摘要值。需要说明的是,计算单元摘要值的单位“数据单元”,可以是上文所述的“语义单元”,也可以与语义单元不同。例如,在语义单元为一个数据行的情况下,用于计算单元摘要值的数据单元可以是一个数据行、更多个数据行、或一个数据行的一部分。
在图5所示的示例中,元文件还包括文件分片的个数的信息。这有利于文件接收设备可以容易地获知所传输的文件所包含的文件分片的总数。本领域技术人员应理解,元文件中也可以不包括文件分片的个数,文件接收设备可以根据元文件所包括的文件分片的描述符的个数(这可以由文件接收设备根据文件分片的描述符的区域的总长度、以及每个文件分片的描述符的长度来确定)来确定所传输的文件所包含的文件分片的总数。
在操作130,文件发送设备根据第二预定规则将多个文件分片和元文件上传到文件服务器的存储目录中。第二预定规则可以为文件发送设备和文件接收设备共同知晓的任何为多个文件分片和元文件的存储目录所预先指定的规则。这使得文件接收设备在获知了元文件的存储目录的情况下,可以根据第二预定规则获知每个文件分片的存储目录,以便于文件接收设备能够检索到各文件分片。在一些实施例中,第二预定规则可以为多个文件分片和元文件位于文件服务器的同一个存储目录中。例如,可以将要传输的文件所切分出的多个文件分片、以及为该要传输的文件所创建的元文件均存储在目录“https://www.fileserver.com/aaaa1/bbbb2”中。本领域技术人员应理解,第二预定规则也可以为其他的形式。在一些实施例中,第二预定规则可以为多个文件分片位于元文件所在的存储目录的以特定的目录名标识的下一级目录中。例如,可以将为要传输的文件所创建的元文件均存储在目录“https://www.fileserver.com/aaaa1/bbbb2”中,并将要传输的文件所切分出的多个文件分片存储在目录“https://www.fileserver.com/aaaa1/bbbb2/xxx-slice”中。其中“xxx”可以为该元文件的文件名。
在操作140,文件发送设备将元文件的存储路径和校验信息通知文件接收设备。需要说明的是,本文所称的“存储路径”包括存储目录和文件名。因此,这里所说的元文件的存储路径包括元文件的存储目录和元文件的文件名。以元文件的文件名为“xxx.meta”为例,若文件发送设备将元文件存储在目录“https://www.fileserver.com/aaaa1/bbbb2”中,则该元文件的存储路径为“https://www.fileserver.com/aaaa1/bbbb2/xxx.meta”。
元文件的校验信息可以为元文件的摘要值。在一些实施例中,文件发送设备基于元文件的校验信息命名元文件,例如将元文件命名为其摘要值。例如,文件发送设备计算得到元文件的摘要值为xxx,则可以将该元文件命名为“xxx.meta”。如此,文件发送设备将元文件的存储路径(例如“https://www.fileserver.com/aaaa1/bbbb2/xxx.meta”)通知文件接收设备时,同时也将该元文件的校验信息(例如摘要值xxx)被包括在元文件的存储路径中通知给了文件接收设备。需要说明的是,为示出简明起见,在本文的举例中,以“.meta”作为元文件的文件扩展名。本领域技术人员应理解,实际元文件的文件扩展名可以被根据需要制定,例如“.dat”、“.txt”等。在一些实施例中,文件发送设备可以将元文件的校验信息单独于元文件的存储路径通知给文件接收设备。
下面结合图2说明根据本公开一个或多个示例性实施例的由文件接收设备执行的文件传输方法200。文件传输方法200包括如下描述的操作210至操作250。在一些实施例中,文件接收设备可以为数据消费方的计算机设备,例如数据处理系统的计算机设备,这些计算机设备执行文件传输方法200从文件服务器下载所传输文件并对文件中的数据进行处理。在一些实施例中,文件接收设备可以为数据消费方的代理设备,该代理设备可以执行文件传输方法200从文件服务器获取所传输的数据文件,并将其传输给数据处理设备进行处理。在一些实施例中,文件接收设备可以为数据消费方的计算机设备和数据消费方的代理设备的组合,计算机设备和代理设备协同执行文件传输方法200并对文件中的数据进行处理。
在操作210,文件接收设备根据元文件的存储路径,从文件服务器下载元文件。例如,文件发送设备在将元文件和多个文件分片上传到文件服务器之后,将元文件的存储路径,例如“https://www.fileserver.com/aaaa1/bbbb2/xxx.meta”,通知文件接收设备。文件接收设备从该路径下载元文件xxx.meta。
在操作220,文件接收设备根据元文件的校验信息校验元文件。文件接收设备计算从文件服务器上下载的元文件的摘要值,并根据元文件的校验信息进行校验。在一些实施例中,文件接收设备从元文件的存储路径所包括的元文件的文件名中提取元文件的校验信息,例如从元文件的文件名中提取元文件的摘要值xxx,从而将该摘要值xxx与计算的所下载的元文件的摘要值进行比对。如果比对结果相同,则认为元文件的校验通过。
在操作230,响应于元文件的检验通过,文件接收设备从元文件中提取要传输的文件所包括的文件分片的个数、以及各文件分片的校验信息。在一些实施例中,元文件具有如图5所示的内容结构。例如,假设文件接收设备预先得知元文件的内容结构为先包括1个字节(byte)的数据以指示要传输的文件所包括的文件分片的个数N、以及紧接着为存储各文件分片的描述符的数组。数组中的每个元素为文件分片的描述符,使得该数组中的第i个元素记录了要传输的文件的第i个文件分片的校验信息,其中i=0,1,…,N-1。其中每个校验信息均为32个字节。则文件接收设备从元文件的起始字节读取要传输的文件所包括的文件分片的个数,并从元文件之后的数据中读取各文件分片的校验信息。
在一些实施例中,数据消费方为分布式计算或集群计算系统,即数据消费方包括多个文件接收设备,则文件接收设备不需要下载要传输的文件所包括的所有文件分片,而只需要根据分布式计算或集群计算系统的调度下载其中的一个或几个文件分片即可。在这些情况下,文件接收设备不需要从元文件中提取要传输的文件所包括的文件分片的个数,其只需要根据系统的调度信息,从元文件中提取自己需要下载的文件分片的校验信息即可。例如,系统的调度信息指示该文件接收设备需要下载要传输的文件的第j个文件分片(j=0,1,…,N-1),则该文件接收设备可以从元文件的第(1+j×32)个字节处开始提取第j个文件分片的校验信息(假设元文件具有图5所示的内容结构)。
在操作240,文件接收设备根据元文件的存储路径、以及元文件的存储路径与文件分片的存储路径之间的预定规则,从文件服务器下载各文件分片。元文件的存储路径与文件分片的存储路径之间的预定规则,即上文所述的第二预定规则,其可以为文件发送设备和文件接收设备共同知晓的任何为多个文件分片和元文件的存储目录所预先指定的规则。在第二预定规则为多个文件分片和元文件位于文件服务器的同一个存储目录中的实施例中,文件接收设备可以根据元文件的存储路径所包括的元文件的存储目录确定文件分片的存储目录。例如,可以根据元文件的存储路径元文件的存储路径为“https://www.fileserver.com/aaaa1/bbbb2/xxx.meta”得到元文件的存储目录“https://www.fileserver.com/aaaa1/bbbb2”,其也是文件分片的存储目录。文件接收设备还可以根据文件分片的命名规则来确定相应的文件分片的文件名。文件分片的命名规则即上文所述的第一预定规则,其可以为文件发送设备和文件接收设备共同知晓的任何为各文件分片命名的规则。在第一预定规则为基于每个文件分片的校验信息命名相应的文件分片的实施例中,文件接收设备可以根据在操作230中提取的文件分片的校验信息,来确定相应的文件分片的文件名。例如,文件接收设备在操作230中提取的第j个文件分片的校验信息为摘要值yyyj,则可以确定第j个文件分片的文件名为“yyyj.slice”。从而,文件接收设备根据所确定的文件分片的存储目录和文件分片的校验信息,得到相应的文件分片的存储路径,例如得到第j个文件分片的存储路径为“https://www.fileserver.com/aaaa1/bbbb2/yyyj.slice”,从而根据该文件分片的存储路径从文件服务器下载该文件分片。
在操作250,文件接收设备根据各文件分片的校验信息的对各文件分片进行校验。文件接收设备计算从文件服务器上下载的文件分片的摘要值,并根据从元文件中提取的文件分片的校验信息进行校验。例如,文件接收设备从元文件中提取的第j个文件分片的摘要值为yyyj,则将该摘要值yyyj与计算的所下载的文件分片的摘要值进行比对。如果比对结果相同,则认为该文件分片的校验通过。文件接收设备可以对校验通过的文件分片进行数据处理,或者将其发给将对其进行数据处理的设备。
根据本公开实施例的文件传输方法包括上述由文件发送设备执行的方法100和由文件接收设备执行的方法200。根据本公开实施例的文件传输方法对要传输的文件切分为多个文件分片进行传输,通过引入其内容中包含各文件分片的校验信息的元文件、以及预定的各文件(包括元文件和各文件分片)的存储路径的规则,使得文件接收设备可以对部分数据进行完整性校验,同时避免了在文件发送设备和文件接收设备之间为部分数据的校验进行繁琐的信息传递。
下面结合图3至图5说明根据本公开一个或多个示例性实施例的文件传输系统300。文件传输系统300包括文件发送设备310、文件服务器320、和文件接收设备330。文件发送设备310将要传输的文件切分为N个文件分片,并将各文件分片分别命名为yyy0.slice、yyy1.slice、……、yyy(N-1).slice,其中,yyy0、yyy1、……、yyy(N-1)分别为第0、第1、……、第N-1个文件分片的摘要值,例如可以是相应的文件分片的数据内容的SHA-256的值。文件发送设备310创建具有如图5所示的内容结构的元文件xxx.meta,该元文件包括1个字节的信息以指示要传输的文件所包括的文件分片的个数N、以及N×32个字节的各文件分片的校验信息,其中每个文件分片的校验信息为32字节。元文件xxx.meta的文件名xxx为元文件的摘要值,例如可以是元文件的数据内容的SHA-256的值。文件发送设备310将元文件xxx.meta和N个文件分片yyy0.slice、yyy1.slice、……、yyy(N-1).slice上传到文件服务器320的同一个存储目录“https://www.fileserver.com/aaaa1/bbbb2”中,如图4所示。文件发送设备310将元文件的存储路径“https://www.fileserver.com/aaaa1/bbbb2/xxx.meta”通知文件接收设备330。
文件接收设备330根据获知的元文件的存储路径“https://www.fileserver.com/aaaa1/bbbb2/xxx.meta”,从文件服务器320下载元文件xxx.meta。文件接收设备330计算下载的元文件xxx.meta的摘要值,将算得的摘要值与元文件的文件名中的摘要值xxx进行比对,以校验元文件。响应于比对结果一致,即检验通过,从元文件xxx.meta中提取要传输的文件所包括的文件分片的个数N、以及各文件分片的摘要值yyy0、yyy1、……、yyy(N-1)。根据预定的规则,各文件分片与元文件存储在相同的存储目录中,即各文件分片也被存储在目录“https://www.fileserver.com/aaaa1/bbbb2”中。文件接收设备330根据元文件的存储目录“https://www.fileserver.com/aaaa1/bbbb2”以及各文件分片的摘要值yyy0、yyy1、……、yyy(N-1),确定各文件分片的存储路径分别为“https://www.fileserver.com/aaaa1/bbbb2/yyy0.slice”、“https://www.fileserver.com/aaaa1/bbbb2/yyy1.slice”、……、“https://www.fileserver.com/aaaa1/bbbb2/yyy(N-1).slice”,从而根据这些存储路径从文件服务器320下载各文件分片yyy0.slice、yyy1.slice、……、yyy(N-1).slice。文件接收设备330计算下载的各文件分片yyy0.slice、yyy1.slice、……、yyy(N-1).slice的摘要值,将算得的摘要值与各文件分片的文件名中的摘要值yyy0、yyy1、……、yyy(N-1)进行比对,以校验各文件分片。响应于比对结果一致,对相应的文件分片的检验通过。
图3示出的文件传输系统300仅包括一个文件接收设备330。本领域技术人员应理解,系统300中的文件接收设备330可以为一个或多个。在系统300包括多个文件接收设备330的情况下,例如多个文件接收设备330形成分布式计算或集群计算系统,则在分布式计算或集群计算系统可以存在调度单元,以协调多个文件接收设备330之间的工作。文件发送设备310可以将元文件的存储路径通知给调度单元,再由调度单元将其通知给各文件接收设备330。在这些情况下,文件接收设备330根据调度单元对其的调度信息,例如调度其处理第j个文件分片,从元文件中提取第j个文件分片的校验信息、并从文件服务器320中下载第j个文件分片并对其进行校验和处理。
在一些实施例中,调度单元还可以完成上文所述的文件接收设备330所执行的一些操作。例如,调度单元可以根据获知的元文件的存储路径下载和校验元文件,并从元文件中提取一个或多个文件分片的校验信息,以确定这一个或多个文件分片的存储路径,并将该存储路径发送给要处理相应的文件分片的文件接收设备330。文件接收设备330直接根据其要处理的文件分片的存储路径下载、校验和处理相应的文件分片即可。
图6是根据本公开一个或多个示例性实施例的文件发送设备600的示意图。文件发送设备600包括切分单元610、创建单元620、上传单元630、以及通知单元640。切分单元610被配置为将要传输的文件切分为多个文件分片,并根据第一预定规则命名每个文件分片。创建单元620被配置为创建元文件,元文件包括每个文件分片的校验信息。上传单元630被配置为根据第二预定规则将多个文件分片和元文件上传到文件服务器的存储目录中。通知单元640被配置为将元文件的存储路径和校验信息通知文件接收设备,其中元文件的存储路径包括元文件的存储目录和元文件的文件名。
图7是根据本公开一个或多个示例性实施例的文件接收设备700的示意图。文件接收设备700包括下载单元710、校验单元720、提取单元730、以及确定单元740。下载单元710被配置为根据元文件的存储路径,从文件服务器下载元文件。校验单元720被配置为根据元文件的校验信息校验元文件。提取单元730被配置为响应于元文件的检验通过,从元文件中提取要传输的文件所包括的文件分片的个数、以及各文件分片的校验信息。确定单元740被配置为根据元文件的存储路径、以及文件分片的存储路径与元文件的存储路径之间的预定规则,确定各文件分片的存储路径。其中,下载单元710还被配置为根据各文件分片的存储路径从文件服务器下载各文件分片。校验单元720还被配置为根据各文件分片的校验信息的对各文件分片进行校验。
图8是可应用于根据本公开一个或多个示例性实施例的通用硬件系统800的示例性框图。现在将参考图8描述系统800,其是可以应用于本公开的各方面的硬件设备的示例。上述各实施例中的文件发送设备、文件服务器、以及文件接收设备中的任意一个可以包括系统800的全部或部分。系统800可以是被配置为执行处理和/或计算的任何机器,可以是但不限于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数据助理、智能电话、车载电脑、或其任何组合。
系统800可以包括可能经由一个或多个接口与总线802连接或与总线802通信的元件。例如,系统800可以包括总线802,以及一个或多个处理器804,一个或多个输入设备806和一个或多个输出设备808。一个或多个处理器804可以是任何类型的处理器,可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如特殊处理芯片)。上文所述的方法中的各个操作和/或步骤均可以通过一个或多个处理器804执行指令来实现。
输入设备806可以是可以向计算设备输入信息的任何类型的设备,可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或遥控器。输出设备808可以是可以呈现信息的任何类型的设备,可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。
系统800还可以包括非暂时性存储设备810或者与非暂时性存储设备810连接。非暂时性存储设备810可以是非暂时性的并且可以实现数据存储的任何存储设备,可以包括但不限于磁盘驱动器、光学存储设备、固态存储器、软盘、硬盘、磁带或任何其他磁介质、光盘或任何其他光学介质、ROM(只读存储器)、RAM(随机存取存储器)、高速缓冲存储器、和/或任何其他存储器芯片/芯片组、和/或计算机可从其读取数据、指令和/或代码的任何其他介质。非暂时性存储设备810可以从接口拆卸。非暂时性存储设备810可以具有用于实现上述方法、操作、步骤和过程的数据/指令/代码。
系统800还可以包括通信设备812。通信设备812可以是能够与外部设备和/或与网络通信的任何类型的设备或系统,可以包括但不限于调制解调器、网卡、红外通信设备、无线通信设备、和/或芯片组,例如蓝牙设备、802.11设备、WiFi设备、WiMax设备、蜂窝通信设备、卫星通信设备、和/或类似物。
总线802可以包括但不限于工业标准体系结构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、和外围部件互连(PCI)总线。特别地,对于车载设备,总线802还可以包括控制器区域网络(CAN)总线或设计用于在车辆上应用的其他架构。
系统800还可以包括工作存储器814,其可以是可以存储对处理器804的工作有用的指令和/或数据的任何类型的工作存储器,可以包括但不限于随机存取存储器和/或只读存储设备。
软件元素可以位于工作存储器814中,包括但不限于操作系统816、一个或多个应用程序818、驱动程序、和/或其他数据和代码。用于执行上述方法、操作和步骤的指令可以包括在一个或多个应用程序818中。软件元素的指令的可执行代码或源代码可以存储在非暂时性计算机可读存储介质中,例如上述存储设备810,并且可以通过编译和/或安装被读入工作存储器814中。还可以从远程位置下载软件元素的指令的可执行代码或源代码。
还应该理解,可以根据具体要求进行变化。例如,也可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现特定元件。此外,可以采用与诸如网络输入/输出设备之类的其他计算设备的连接。例如,根据本公开实施例的方法或装置中的一些或全部可以通过使用根据本公开的逻辑和算法的、用汇编语言或硬件编程语言(诸如VERILOG,VHDL,C++)的编程硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)来实现。
还应该理解,系统800的组件可以分布在网络上。例如,可以使用一个处理器执行一些处理,而可以由远离该一个处理器的另一个处理器执行其他处理。系统800的其他组件也可以类似地分布。这样,系统800可以被解释为在多个位置执行处理的分布式计算系统。
上述对本公开一个或多个示例性实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本公开一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本公开一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本公开一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本公开一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本公开的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本公开中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本公开中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本公开一个或多个实施例的实施例而已,并不用于限制本本公开一个或多个实施例。对于本领域技术人员来说,本公开一个或多个实施例可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。