文件接收方法和装置及文件传输系统的制作方法
【专利摘要】本发明属于网络文件传输技术领域,尤其涉及一种文件接收方法和装置及文件传输系统。本发明提出文件接收方法,包括以下步骤:当存在至少一个文件传输任务时,并发地从网络接收至少一个传输数据块;对接收的该传输数据块进行拆包,得到元信息和数据块;将该数据块加入到相对应的数据块链表中;对该数据块链表内的该数据块进行分组,得到至少一个数据块组;并在检测到该数据块组的字节长度超过预设的阈值时,将该数据块组中的数据块转移到片文件中。本发明提出的文件接收方法采用内存结合文件系统的两级缓存机制,实现在单节点宕机的情况下,保证已接收到的数据块不丢失;其他节点仍然能够继续数据块的接收任务。
【专利说明】
文件接收方法和装置及文件传输系统
技术领域
[0001]本发明属于网络文件传输技术领域,尤其涉及一种文件接收方法和装置及文件传输系统。
【背景技术】
[0002]目前,针对高峰期有几千个客户端同时下载至少一个大文件的网络文件传输应用,通常采用FTP服务器作为数据存储平台。
[0003]FTP服务器模式中,一个文件下载进程对应一个文件传输进程,而每个文件传输进程支持至少一个线程并发传输。这种文件传输方式,导致在单节点宕机时,该节点已经接收到的文件片段会丢失;而其他节点接收到的文件片段不能组装成完整的文件而必须放弃,而这个文件传输任务因为文件不完整而失败。
【发明内容】
[0004]鉴于此,本发明提出一种文件接收方法和装置及文件传输系统,采用内存结合文件系统的两级缓存机制,可实现在单节点宕机的情况下,保证已接收到的数据块不丢失;其他节点仍然能够继续数据块的接收任务;从而实现数据传输业务的高可靠性和持续性。
[0005]第一方面,本发明提出文件接收方法,包括以下步骤:
[0006]当存在至少一个文件传输任务时,并发地从网络接收至少一个传输数据块;该至少一个传输数据块与至少一个该文件传输任务相对应;每个该文件传输任务与一个待传输文件相对应;
[0007]对接收的该传输数据块进行拆包,得到元信息和数据块;该元信息包括用于对该数据块进行校验的校验信息及用于指示该数据块相对应的该待传输文件的文件指示信息;该数据块是预先将该待传输文件切分后得到的;
[0008]将根据该元信息校验通过的该数据块根据该文件指示信息加入到相对应的数据块链表中;每个该数据块链表与一个该文件传输任务相对应;该数据块链表是驻留在分布式内存集群中的内存中的;
[0009]对该数据块链表内的该数据块进行分组,得到至少一个数据块组;每个该数据块组是驻留在一片内存片中的;
[0010]并在检测到该数据块组的字节长度超过预设的阈值时,将该数据块组中的数据块按照预设的文件格式转移到片文件中;该片文件是保存在文件系统中的。
[0011]进一步地,本发明提出的文件接收方法的片文件包括与该文件传输任务对应的文件标签及用于指示该片文件在该待传输文件中位置的位置指示信息;对应地,本发明提出的文件接收方法还包括以下步骤:
[0012]当检测到与该文件传输任务对应的该待传输文件切分后得到的所有数据块均已完整接收时,确定与该待传输文件对应的该文件传输任务完成;
[0013]将与该文件传输任务对应的该数据块链表内驻留的数据块按照预设的文件格式转移到片文件中;
[0014]根据该位置指示信息将该文件标签与该文件传输任务相对应的至少一个该片文件组装得到目标文件。
[0015]进一步地,本发明提出的文件接收方法的该将与该文件传输任务对应的该数据块链表内驻留的数据块按照预设的文件格式转移到片文件中的步骤之后,还包括:
[0016]从该分布式内存集群中的内存中释放为该数据块链表开辟的内存空间;
[0017]从该文件系统中删除该文件标签与该文件传输任务相对应的至少一个该片文件;
[0018]及和/或将该文件传输任务从文件传输任务列表中清除;每个文件传输任务是在创建时加入到该文件传输任务列表中的。
[0019]进一步地,本发明提出的文件接收方法的元信息还包括数据块的序列索引值;对应地,该对该数据块链表内的该数据块进行分组,得到至少一个数据块组的步骤包括:
[0020]在该数据块链表内,将该数据块按照该序列索引值进行排序;并将具有连续的该序列索引值的至少一个数据块,标记为一个数据块组。
[0021]进一步地,本发明提出的文件接收方法的目标文件保存在分布式磁盘文件系统或者共享文件系统中。
[0022]本发明提出的文件接收方法将并行接收的数据块首先保存在内存中,继而转移到磁盘文件系统中。通过采用内存结合文件系统的两级缓存机制,实现在单节点宕机的情况下,保证已接收到的数据块不丢失;其他节点仍然能够继续数据块的接收任务。
[0023]第二方面,本发明提出的文件接收装置,包括数据接收单元、一级缓存单元和二级缓存单元;
[0024]该数据接收单元用于当存在至少一个文件传输任务时,并发地从网络接收至少一个传输数据块;该至少一个传输数据块与至少一个该文件传输任务对应;每个该文件传输任务与一个待传输文件相对应;
[0025]该一级缓存单元用于对接收的该传输数据块进行拆包,得到元信息和数据块;该元信息包括用于对该数据块进行校验的校验信息及用于指示该数据块相对应的该待传输文件的文件指示信息;该数据块是预先将该待传输文件切分后得到的;
[0026]及将根据该元信息校验通过的该数据块根据该文件指示信息加入到相对应的数据块链表中;每个该数据块链表与一个该文件传输任务相对应;该数据块链表是驻留在分布式内存集群中的内存中的;
[0027]及对该数据块链表内的该数据块进行分组,得到至少一个数据块组;每个该数据块组是驻留在一片内存片中的;
[0028]该二级缓存单元用于在检测到该数据块组的字节长度超过预设的阈值时,将该数据块组中的数据块按照预设的文件格式转移到片文件中;该片文件是保存在文件系统中的。
[0029]进一步地,本发明提出的文件接收装置的片文件包括与该文件传输任务对应的文件标签及用于指示该片文件在该待传输文件中位置的位置指示信息;
[0030]对应地,该二级缓存单元还用于:
[0031]当检测到与该文件传输任务对应的该待传输文件切分后得到的所有数据块均已完整接收时,确定与该待传输文件对应的该文件传输任务完成;
[0032]将与该文件传输任务对应的该数据块链表内驻留的数据块按照预设的文件格式转移到片文件中;
[0033]根据该位置指示信息将该文件标签与该文件传输任务相对应的至少一个该片文件组装得到目标文件。
[0034]进一步地,本发明提出的文件接收装置,在该将与该文件传输任务对应的该数据块链表内驻留的数据块按照预设的文件格式转移到片文件中的步骤之后,
[0035]该一级缓存单元还用于从该分布式内存集群中的内存中释放为该数据块链表开辟的内存空间;
[0036]及和/或将该文件传输任务从文件传输任务列表中清除;每个文件传输任务是在创建时加入到该文件传输任务列表中的;
[0037]该二级缓存单元还用于从该文件系统中删除该文件标签与该文件传输任务相对应的至少一个该片文件。
[0038]进一步地,本发明提出的文件接收装置的该元信息还包括数据块的序列索引值;
[0039]对应地,该一级缓存单元用于对该数据块链表内的该数据块进行分组,得到至少一个数据块组的步骤包括:
[0040]在该数据块链表内,将该数据块按照该序列索引值进行排序;并将具有连续的该序列索引值的至少一个数据块,标记为一个数据块组。
[0041]本发明提出的文件接收装置将并行接收的数据块首先保存在内存中,继而转移到磁盘文件系统中。通过采用内存结合文件系统的两级缓存机制,实现在单节点宕机的情况下,保证已接收到的数据块不丢失;其他节点仍然能够继续数据块的接收任务。
[0042]第三方面,本发明提出的文件传输系统,包括在上述第二方面中说明的文件接收装置和文件发送装置;该文件接收装置和该文件发送装置通过网络连接;
[0043]该文件发送装置用于在接收到文件发送请求时,将该文件发送请求指定的待传输文件切分成至少一个数据块;
[0044]及将每个该数据块和每个该数据块的元信息打包成一个传输数据块;每个该数据块的元信息包括用于对该数据块进行校验的校验信息及用于指示该数据块相对应的该待传输文件的文件指示信息;
[0045]及将至少一个该传输数据块并发地通过网络向该文件接收装置发送。
[0046]本发明提出的文件传输系统实现并行发送、并行接收,且并行接收的数据块首先保存在内存中,继而转移到磁盘文件系统中。通过采用内存结合文件系统的两级缓存机制,实现在单节点宕机的情况下,保证已接收到的数据块不丢失;其他节点仍然能够继续数据块的接收任务,保证了文件传输快速、高效和安全。
[0047]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
【附图说明】
[0048]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
[0049]图1是本发明实施例文件接收方法的流程示意图;
[0050]图2是本发明实施例文件接收方法进行片文件组装的流程示意图;
[0051 ]图3是本发明实施例文件接收方法释放存储空间的流程示意图;
[0052]图4是本发明实施例文件接收装置的组成示意图;
[0053]图5是本发明实施例文件传输系统的组成示意图。
【具体实施方式】
[0054]为使实施例的目的、技术方案和优点更加清楚,下面将结合实施例中的附图,对实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。
[0055]基于下述的实施例,本领域普通技术人员在未做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0056]本申请的文件接收方法和装置部署在多节点设备组成的分布式存储系统中,该分布式存储系统被配置为接收端,用于并发接收发送端经网络传输的多个文件。该发送端可以是一个对等的多节点设备组成的分布式存储系统,也可以是一个单节点设备。除了能够将待传输文件进行切分、打包和封装后,以传输数据块的形式并发发出该多个传输数据块之外,本申请并不对发送端进行额外的限制。该接收端的分布式存储系统具有两级缓存机制。其中,一级缓存单元采用分布式内存集群存储方式;二级缓存单元采用分布式磁盘文件系统或者共享文件系统的存储方式;当一级缓存单元中数据块组的字节长度超过预先设定的阈值时,将数据块组内的数据块移动到二级缓存单元。
[0057]通常分布式存储系统中各节点设备分别独立划分内存单元,每个内存单元都有各自的对外接口。本申请文件接收方法和装置所部署的接收端的分布式存储系统中,各单节点设备组成分布式内存集群,该分布式内存集群中的内存对外采用统一的接口,因此处理能力大,数据处理速度快。另外,各节点设备还组成分布式磁盘文件系统或者共享文件系统,从而可以实现多备份存储,以提高数据可靠性,从而保证数据安全。
[0058]需要说明的是,文件系统是指磁盘文件系统,用于对磁盘空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。
[0059]分布式磁盘文件系统是指将数据存储在物理上分散的多个存储节点上,对这些节点的资源进行统一的管理与分配,并向用户提供文件系统访问接口。
[0060]共享文件系统包括多台存储有共享文件的共享计算机,用户可以联结到这些共享计算机,并像访问本地硬盘一样访问共享计算机上的文件。下面将结合实施例中的附图,对本申请文件接收方法和装置的技术方案进行清楚、完整地描述。
[0061 ] 实施例1
[0062]如图1所示,本实施例文件接收方法,包括以下步骤:
[0063]Sll:当存在至少一个文件传输任务时,并发地从网络接收至少一个传输数据块;该至少一个传输数据块与至少一个该文件传输任务相对应;每个该文件传输任务与一个待传输文件相对应;
[0064]S12:对接收的该传输数据块进行拆包,得到元信息和数据块;该元信息包括用于对该数据块进行校验的校验信息及用于指示该数据块相对应的该待传输文件的文件指示信息;该数据块是预先将该待传输文件切分后得到的;
[0065]S13:将根据该元信息校验通过的该数据块根据该文件指示信息加入到相对应的数据块链表中;每个该数据块链表与一个该文件传输任务相对应;该数据块链表是驻留在分布式内存集群中的内存中的;
[0066]S14:对该数据块链表内的该数据块进行分组,得到至少一个数据块组;每个该数据块组是驻留在一片内存片中的;
[0067]S15:并在检测到该数据块组的字节长度超过预设的阈值时,将该数据块组中的数据块按照预设的文件格式转移到片文件中;该片文件是保存在文件系统中的。
[0068]具体应用时,针对至少一个文件传输任务,并发地从网络接收至少一个传输数据块;这至少一个传输数据块来自至少一个该文件传输任务,而每个文件传输任务则对应一个待传输文件。
[0069]优选地,每个文件传输任务可以是由发送端发起文件发送请求而由接收端创建的,并且通过接收端与发送端的会话标识来传递待传输文件的信息,该待传输文件的信息可以包括该待传输文件的大小、该待传输文件被切分后得到的数据块个数等信息。
[0070]优选地,每个文件传输任务可以是由接收端发起文件接收请求而由接收端创建的,并由接收端通过会话标识向发送端指定待传输文件;接收端接到接收请求后,可以通过与接收端的会话标识来传递待传输文件的信息,该待传输文件的信息可以包括该待传输文件被切分后得到的数据块个数信息。
[0071 ]接收到的传输数据包是经过发送端打包封装后再经过网络传输的,以便可以通过网络快速传输。因此,对接收的传输数据块首先要进行拆包操作,得到该传输数据块内携带的元信息和数据块。其中,元信息至少包括用于在接收端对该数据块进行校验的校验信息及用于指示该数据块相对应的该待传输文件的文件指示信息;数据块则是在发送端将该待传输文件切分后得到的。
[0072]优选地,该待传输文件被切分后得到的该数据块大小是基本均匀的。
[0073]优选地,也可以在元信息中不指定待传输文件的标签,而是在接收端接收文件时,通过文件传输任务进程获得与该文件传输任务对应的待传输文件信息。对应地,在创建文件传输任务时,获得与该文件传输任务对应的待传输文件的信息,并创建与该待传输文件对应的数据块链表。
[0074]接下来,根据元信息内携带的校验信息对拆包后得到的数据块进行校验。在校验通过时,将该数据块加入到相对应的数据块链表中。每个数据块链表对应于每个文件传输任务。其中,数据块链表是驻留在分布式内存集群中的内存中的。该分布式内存集群中的内存对外采用统一的接口,因此处理能力大,数据处理速度快。
[0075]需要说明的是,这里“数据块链表”中的“链表”并不是指数据结构中的链表这种数据存储结构。当然,在具体实施时,也可以采用链表来实现数据块链表。
[0076]尽管内存存取数据快,但内存中的数据在断电时会丢失,而磁盘中的数据在断电时不会丢失。因此需要将内存中的数据高效地转移到采用磁盘的二级缓存单元中。
[0077]因此,进一步地,对该数据块链表内的数据块进行分组,从而得到至少一个数据块组,其中,每个数据块组驻留在该数据块链表所在的内存空间内的一片内存片中。
[0078]优选地,可按照先进先出的模式对数据块进行分组,则按照这种模式进行分组后的数据块组大小相等,但文件个数并不一定相同。
[0079]优选地,可按照数据块的大小对数据块进行分组。启动将内存中的数据转移到磁盘文件中的条件是:检测到该数据块组的字节长度超过预设的阈值。当检测到该数据块组的字节长度超过预设的阈值时,将该数据块组中的数据块按照预设的文件格式转移到片文件中;该片文件是保存在磁盘上的文件系统中的。
[0080]优选地,预设的文件格式可以是各种常见的通用文件格式,也可以自定义文件组织方式,并附加有自定义的文件后缀名。
[0081]通过设定的预设阈值,保证了片文件的大小比较均匀,既能保证及时将内存片中的数据转移到磁盘文件中,也可以避免在内存与磁盘之间频繁操作,占用过多的计算资源。
[0082]优选地,可以将该片文件加入到对应的片文件链表内,每个该片文件链表对应于一个文件传输任务;而该片文件链表是保存在文件系统中的。
[0083]优选地,保存有同一个待传输文件不同数据块组的多个片文件的文件名采用以下规则:该待传输文件名加上保存在该片文件内的数据块组的编号。
[0084]优选地,保存有同一个待传输文件不同数据块组的多个片文件可以保存在同一个以待传输文件命名的文件夹下。
[0085]本实施例文件接收方法将并行接收的数据块首先保存在内存中,继而转移到磁盘文件系统中。通过采用内存结合文件系统的两级缓存机制,实现在单节点宕机的情况下,保证已接收到的数据块不丢失;其他节点仍然能够继续数据块的接收任务。
[0086]实施例2
[0087]本实施例文件接收方法是在实施例1基础上,进一步对组装片文件的方法进行说明。
[0088]如图2所示,本实施例文件接收方法的片文件包括与该文件传输任务对应的文件标签及用于指示该片文件在该待传输文件中位置的位置指示信息;对应地,本实施例文件接收方法还包括以下步骤:
[0089]S21:当检测到与该文件传输任务对应的该待传输文件切分后得到的所有数据块均已完整接收时,确定与该待传输文件对应的该文件传输任务完成;
[0090]S22:将与该文件传输任务对应的该数据块链表内驻留的数据块按照预设的文件格式转移到片文件中;
[0091]S23:根据该位置指示信息将该文件标签与该文件传输任务相对应的至少一个该片文件组装得到目标文件。
[0092]具体应用时,本实施例文件接收方法的片文件包括与该文件传输任务对应的文件标签及用于指示该片文件在该待传输文件中位置的位置指示信息;当检测到与该文件传输任务对应的该待传输文件切分后得到的所有数据块均已完整接收时,确定与该待传输文件对应的该文件传输任务完成;此时,除了文件系统中的至少一个片文件外,与该文件传输任务对应的该数据块链表内也驻留有一些尚未达到预先设定的阈值的数据块组。将这些数据块组按照预设的文件格式转移到片文件中;进一步,可以根据片文件中的位置指示信息将文件标签与该文件传输任务相对应的至少一个该片文件组装起来,从而得到目标文件。这个目标文件就是待传输文件的接收端的一个副本。
[0093]优选地,目标文件保存在分布式磁盘文件系统或者共享文件系统中,分布式磁盘文件系统或者共享文件系统都是分布式存储系统支持的文件访问模式。
[0094]本实施例文件接收方法在检测到与该文件传输任务对应的待传输文件切分后得到的所有数据块均已完整接收时,将片文件组装起来,从而得到目标文件。
[0095]实施例3
[0096]本实施例文件接收方法是在实施例2基础上,进一步对文件传输任务结束后释放存储空间的方法进行说明。
[0097]如图3所示,本实施例文件接收方法的该将与该文件传输任务对应的该数据块链表内驻留的数据块按照预设的文件格式转移到片文件中的步骤之后,还包括:
[0098]S31:从该分布式内存集群中的内存中释放为该数据块链表开辟的内存空间;
[0099 ] S32:从该文件系统中删除该文件标签与该文件传输任务相对应的至少一个该片文件;
[0100]S33:及和/或将该文件传输任务从文件传输任务列表中清除;每个文件传输任务是在创建时加入到该文件传输任务列表中的。
[0101]本实施例文件接收方法在利用两级缓存机制可靠地存储待传输文件后,及时释放存储空间。
[0102]实施例4
[0103]本实施例文件接收方法是在实施例1基础上,进一步对数据块链表内的数据块进行分组的方法进行说明。
[0104]本实施例文件接收方法的元信息还包括数据块的序列索引值;对应地,该对该数据块链表内的该数据块进行分组,得到至少一个数据块组的步骤包括:
[0105]在该数据块链表内,将该数据块按照该序列索引值进行排序;并将具有连续的该序列索引值的至少一个数据块,标记为一个数据块组。
[0106]本实施例文件接收方法利用元信息内携带的数据块的序列索引值对数据块进行排序,从而将具有连续序列索引值的数据块标记为一个数据块组,为后续进行片文件组装提供了便利
[0107]需要说明的是,上述实施例1至实施例4中的多个实施例可组合实施,并实现组合后的功能。需要说明的是,此处的“多个”是指两个以上。
[0108]实施例5
[0109]以下结合图4,对本实施例文件接收方法的实施方案进行具体阐述。
[0110]如图4所示,本实施文件接收方法并发地接收到数据传输块之后,通过拆包处理,得到数据块;并根据与每个数据块唯一对应的元信息对数据块进行校验;对校验通过的数据块,加入到与文件传输任务对应的数据块链表中。在将数据块加入到数据块链表内时,按照数据块的序列索引值进行排序;并将具有连续的该序列索引值的至少一个数据块,标记为一个数据块组;并在检测到某一数据块组的字节长度超过预设的阈值时,将该数据块组中的数据块按照预设的文件格式转移到片文件中;并在检测到与该文件传输任务对应的待传输文件切分后得到的所有数据块均已完整接收时,将与该文件传输任务对应的该数据块链表内驻留的数据块按照预设的文件格式转移到片文件中;并将该文件标签与该文件传输任务相对应的至少一个该片文件组装得到目标文件。
[0111]因为上述处理过程是多进程或多线程并发处理的,在某一时刻,接收到多个传输数据块;在用于一级缓存的分布式内存集群中,存在多个尚未完成的文件传输任务所对应的多个数据块链表,如数据块链表I,及数据块链表η;在每个数据块链表内,存在多个数据块组,每个数据块组驻留在一个内存片中;在用于二级缓存的文件系统中,存在多个与尚未完成的文件传输任务所对应的多个片文件组,这些片文件在随后将被组装成为目标文件I,及目标文件m,其中,m或η表示数据块链表或目标文件的最大编号,可以反映当前存在于缓存中的数据块链表或目标文件总数目,111可能大于η,等于η,但不会小于η。
[0112]本实施例文件接收方法将并行接收的数据块首先保存在内存中,继而转移到磁盘文件系统中。通过采用内存结合文件系统的两级缓存机制,实现在单节点宕机的情况下,保证已接收到的数据块不丢失;其他节点仍然能够继续数据块的接收任务。
[0113]实施例6
[0114]如图4所示,本实施例文件接收装置,包括数据接收单元10、一级缓存单元20和二级缓存单元30;
[0115]该数据接收单元10用于当存在至少一个文件传输任务时,并发地从网络接收至少一个传输数据块;该至少一个传输数据块与至少一个该文件传输任务对应;每个该文件传输任务与一个待传输文件相对应;
[0116]该一级缓存单元20用于对接收的该传输数据块进行拆包,得到元信息和数据块;该元信息包括用于对该数据块进行校验的校验信息及用于指示该数据块相对应的该待传输文件的文件指示信息;该数据块是预先将该待传输文件切分后得到的;
[0117]及将根据该元信息校验通过的该数据块根据该文件指示信息加入到相对应的数据块链表中;每个该数据块链表与一个该文件传输任务相对应;该数据块链表是驻留在分布式内存集群中的内存中的;
[0118]及对该数据块链表内的该数据块进行分组,得到至少一个数据块组;每个该数据块组是驻留在一片内存片中的;
[0119]该二级缓存单元30用于在检测到该数据块组的字节长度超过预设的阈值时,将该数据块组中的数据块按照预设的文件格式转移到片文件中;该片文件是保存在文件系统中的。
[0120]本实施例文件接收装置的【具体实施方式】参见实施例1,这里不再赘述。
[0121]本实施例文件接收装置将并行接收的数据块首先保存在内存中,继而转移到磁盘文件系统中。通过采用内存结合文件系统的两级缓存机制,实现在单节点宕机的情况下,保证已接收到的数据块不丢失;其他节点仍然能够继续数据块的接收任务。
[0122]实施例7
[0123]本实施例文件接收装置是在实施例6基础上,对进一步对组装片文件的方法进行说明。
[0124]本实施例文件接收装置的片文件包括与该文件传输任务对应的文件标签及用于指示该片文件在该待传输文件中位置的位置指示信息;
[0125]对应地,该二级缓存单元30还用于:
[0126]当检测到与该文件传输任务对应的该待传输文件切分后得到的所有数据块均已完整接收时,确定与该待传输文件对应的该文件传输任务完成;
[0127]将与该文件传输任务对应的该数据块链表内驻留的数据块按照预设的文件格式转移到片文件中;
[0128]根据该位置指示信息将该文件标签与该文件传输任务相对应的至少一个该片文件组装得到目标文件。
[0129]本实施例文件接收装置的【具体实施方式】参见实施例2,这里不再赘述。
[0130]本实施例文件接收装置在检测到与该文件传输任务对应的待传输文件切分后得到的所有数据块均已完整接收时,将片文件组装起来,从而得到目标文件。
[0131]实施例8
[0132]本实施例文件接收装置是在实施例7基础上,进一步对文件传输任务结束后释放存储空间的方法进行说明。
[0133]本实施例文件接收装置,在该将与该文件传输任务对应的该数据块链表内驻留的数据块按照预设的文件格式转移到片文件中的步骤之后,
[0134]该一级缓存单元20还用于从该分布式内存集群中的内存中释放为该数据块链表开辟的内存空间;
[0135]及和/或将该文件传输任务从文件传输任务列表中清除;每个文件传输任务是在创建时加入到该文件传输任务列表中的;
[0136]该二级缓存单元30还用于从该文件系统中删除该文件标签与该文件传输任务相对应的至少一个该片文件。
[0137]本实施例文件接收装置的【具体实施方式】参见实施例3,这里不再赘述。
[0138]本实施例文件接收装置在利用两级缓存机制可靠地存储待传输文件后,及时释放存储空间。
[0139]实施例9
[0140]本实施例文件接收装置是在实施例6基础上,进一步对数据块链表内的数据块进行分组的方法进行说明。
[0141]本实施例文件接收装置的该元信息还包括数据块的序列索引值;对应地,该一级缓存单元20用于对该数据块链表内的该数据块进行分组,得到至少一个数据块组的步骤包括:
[0142]在该数据块链表内,将该数据块按照该序列索引值进行排序;并将具有连续的该序列索引值的至少一个数据块,标记为一个数据块组。
[0143]本实施例文件接收装置的【具体实施方式】参见实施例4,这里不再赘述。
[0144]本实施例文件接收装置利用元信息内携带的数据块的序列索引值对数据块进行排序,从而将具有连续序列索引值的数据块标记为一个数据块组,为后续进行片文件组装提供了便利。
[0145]需要说明的是,上述实施例6至实施例9中的多个实施例可组合实施,并实现组合后的功能。需要说明的是,此处的“多个”是指两个以上。
[0146]实施例10
[0147]如图5所示,本实施例文件传输系统,包括文件接收装置200和文件发送装置100;该文件接收装置200已在上述实施例1至实施例9中进行了说明;
[0148]该文件接收装置200和该文件发送装置100通过网络连接;
[0149]该文件发送装置100用于在接收到文件发送请求时,将该文件发送请求指定的待传输文件切分成至少一个数据块;及将每个该数据块和每个该数据块的元信息打包成一个传输数据块;每个该数据块的元信息包括用于对该数据块进行校验的校验信息及用于指示该数据块相对应的该待传输文件的文件指示信息;及将至少一个该传输数据块并发地通过网络向该文件接收装置发送。
[0150]优选地,每个该数据块的元信息包括该数据块在待传输文件的起始位置值、该数据块的序列索引值、该数据块的字节长度、该数据块的检验码、该数据块的编码状态或该数据块的编码格式等信息。
[0151]优选地,该待传输文件被切分后得到的该数据块大小是基本均匀的。
[0152]本实施例文件传输系统的文件接收装置的【具体实施方式】参见实施例6至9,这里不再赘述。
[0153]本实施例文件传输系统实现并行发送、并行接收,且并行接收的数据块首先保存在内存中,继而转移到磁盘文件系统中。通过采用内存结合文件系统的两级缓存机制,实现在单节点宕机的情况下,保证已接收到的数据块不丢失;其他节点仍然能够继续数据块的接收任务,保证了文件传输快速、高效和安全。
[0154]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
[0155]本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。
【主权项】
1.一种文件接收方法,其特征在于,包括以下步骤: 当存在至少一个文件传输任务时,并发地从网络接收至少一个传输数据块;所述至少一个传输数据块与至少一个所述文件传输任务相对应;每个所述文件传输任务与一个待传输文件相对应; 对接收的所述传输数据块进行拆包,得到元信息和数据块;所述元信息包括用于对所述数据块进行校验的校验信息及用于指示所述数据块相对应的所述待传输文件的文件指示信息;所述数据块是预先将所述待传输文件切分后得到的; 将根据所述元信息校验通过的所述数据块根据所述文件指示信息加入到相对应的数据块链表中;每个所述数据块链表与一个所述文件传输任务相对应;所述数据块链表是驻留在分布式内存集群中的内存中的; 对所述数据块链表内的所述数据块进行分组,得到至少一个数据块组;每个所述数据块组是驻留在一片内存片中的; 并在检测到所述数据块组的字节长度超过预设的阈值时,将所述数据块组中的数据块按照预设的文件格式转移到片文件中;所述片文件是保存在文件系统中的。2.根据权利要求1所述的文件接收方法,其特征在于,所述片文件包括与所述文件传输任务对应的文件标签及用于指示所述片文件在所述待传输文件中位置的位置指示信息; 对应地,还包括以下步骤: 当检测到与所述文件传输任务对应的所述待传输文件切分后得到的所有数据块均已完整接收时,确定与所述待传输文件对应的所述文件传输任务完成; 将与所述文件传输任务对应的所述数据块链表内驻留的数据块按照预设的文件格式转移到片文件中; 根据所述位置指示信息将所述文件标签与所述文件传输任务相对应的至少一个所述片文件组装得到目标文件。3.根据权利要求2所述的文件接收方法,其特征在于,所述将与所述文件传输任务对应的所述数据块链表内驻留的数据块按照预设的文件格式转移到片文件中的步骤之后,还包括: 从所述分布式内存集群中的内存中释放为所述数据块链表开辟的内存空间; 从所述文件系统中删除所述文件标签与所述文件传输任务相对应的至少一个所述片文件; 及和/或将所述文件传输任务从文件传输任务列表中清除;每个文件传输任务是在创建时加入到所述文件传输任务列表中的。4.根据权利要求1所述的文件接收方法,其特征在于,所述元信息还包括数据块的序列索引值; 对应地,所述对所述数据块链表内的所述数据块进行分组,得到至少一个数据块组的步骤包括: 在所述数据块链表内,将所述数据块按照所述序列索引值进行排序;并将具有连续的所述序列索引值的至少一个数据块,标记为一个数据块组。5.根据权利要求2所述的文件接收方法,其特征在于,所述目标文件保存在分布式磁盘文件系统或者共享文件系统中。6.一种文件接收装置,其特征在于,包括数据接收单元、一级缓存单元和二级缓存单元; 所述数据接收单元用于当存在至少一个文件传输任务时,并发地从网络接收至少一个传输数据块;所述至少一个传输数据块与至少一个所述文件传输任务对应;每个所述文件传输任务与一个待传输文件相对应; 所述一级缓存单元用于对接收的所述传输数据块进行拆包,得到元信息和数据块;所述元信息包括用于对所述数据块进行校验的校验信息及用于指示所述数据块相对应的所述待传输文件的文件指示信息;所述数据块是预先将所述待传输文件切分后得到的; 将根据所述元信息校验通过的所述数据块根据所述文件指示信息加入到相对应的数据块链表中;每个所述数据块链表与一个所述文件传输任务相对应;所述数据块链表是驻留在分布式内存集群中的内存中的; 对所述数据块链表内的所述数据块进行分组,得到至少一个数据块组;每个所述数据块组是驻留在一片内存片中的; 所述二级缓存单元用于在检测到所述数据块组的字节长度超过预设的阈值时,将所述数据块组中的数据块按照预设的文件格式转移到片文件中;所述片文件是保存在文件系统中的。7.根据权利要求6所述的文件接收装置,其特征在于,所述片文件包括与所述文件传输任务对应的文件标签及用于指示所述片文件在所述待传输文件中位置的位置指示信息; 对应地,所述二级缓存单元还用于: 当检测到与所述文件传输任务对应的所述待传输文件切分后得到的所有数据块均已完整接收时,确定与所述待传输文件对应的所述文件传输任务完成; 将与所述文件传输任务对应的所述数据块链表内驻留的数据块按照预设的文件格式转移到片文件中; 根据所述位置指示信息将所述文件标签与所述文件传输任务相对应的至少一个所述片文件组装得到目标文件。8.根据权利要求7所述的文件接收装置,其特征在于,在所述将与所述文件传输任务对应的所述数据块链表内驻留的数据块按照预设的文件格式转移到片文件中的步骤之后, 所述一级缓存单元还用于从所述分布式内存集群中的内存中释放为所述数据块链表开辟的内存空间; 及和/或将所述文件传输任务从文件传输任务列表中清除;每个文件传输任务是在创建时加入到所述文件传输任务列表中的; 所述二级缓存单元还用于从所述文件系统中删除所述文件标签与所述文件传输任务相对应的至少一个所述片文件。9.根据权利要求6所述的文件接收装置,其特征在于,所述元信息还包括数据块的序列索引值; 对应地,所述一级缓存单元用于对所述数据块链表内的所述数据块进行分组,得到至少一个数据块组的步骤包括: 在所述数据块链表内,将所述数据块按照所述序列索引值进行排序;并将具有连续的所述序列索引值的至少一个数据块,标记为一个数据块组。10.—种文件传输系统,其特征在于,包括权利要求6至9中任一项所述的文件接收装置和文件发送装置; 所述文件接收装置和所述文件发送装置通过网络连接; 所述文件发送装置用于在接收到文件发送请求时,将所述文件发送请求指定的待传输文件切分成至少一个数据块; 及将每个所述数据块和每个所述数据块的元信息打包成一个传输数据块;每个所述数据块的元信息包括用于对所述数据块进行校验的校验信息及用于指示所述数据块相对应的所述待传输文件的文件指示信息; 及将至少一个所述传输数据块并发地通过网络向所述文件接收装置发送。
【文档编号】H04L29/08GK105933412SQ201610248889
【公开日】2016年9月7日
【申请日】2016年4月20日
【发明人】肖华飚
【申请人】北京云宏信达信息科技有限公司