文件传输方法、装置、计算机设备和存储介质转让专利

申请号 : CN202010116955.9

文献号 : CN111355791B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈云云李斌曾楚伟

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请涉及一种文件传输方法、装置、计算机设备和存储介质。所述方法包括:获取携带文件标识的文件下载请求;确定存储有所述文件标识对应的第一文件的第一文件服务器,以及所述第一文件服务器所在的第一网络;当不处于所述第一网络时,将所述文件下载请求发送至所处的第二网络的第二文件服务器,所述文件下载请求用于指示所述第二文件服务器从所述第一文件服务器下载所述第一文件,并缓存在本地;接收所述第二文件服务器反馈的所述第一文件。采用本方法在多中心文件传输、且多中心间网络带宽资源有限的情况下,能够提高文件传输效率。

权利要求 :

1.一种文件传输方法,所述方法包括:终端获取携带文件标识的文件下载请求;

所述终端确定存储有所述文件标识对应的第一文件的第一文件服务器,以及所述第一文件服务器所在的第一网络;

所述终端在自身处于所述第一网络时,将所述文件下载请求发送至所处的第一网络的第一文件服务器,并接收第一文件服务器根据文件下载请求中的文件标识查询并反馈的第一文件;

所述终端在自身不处于所述第一网络时,将所述文件下载请求发送至所处的第二网络的第二文件服务器,所述文件下载请求用于指示所述第二文件服务器从所述第一文件服务器下载所述第一文件,并缓存在本地;

所述终端接收所述第二文件服务器反馈的所述第一文件。

2.根据权利要求1所述的方法,其特征在于,所述确定存储有所述文件标识对应的第一文件的第一文件服务器,以及所述第一文件服务器所在的第一网络,包括:根据所述文件标识从元数据集群获取相应第一文件的存储信息元数据;

根据所述存储信息元数据确定存储有所述第一文件的第一文件服务器,以及所述第一文件服务器所在的第一网络;

所述文件下载请求还用于指示所述第二文件服务器,根据所述第二文件服务器的网络信息,更新所述元数据集群中所述第一文件的存储信息元数据。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述终端获取携带待上传的第二文件的文件上传请求;

所述终端从所处的网络的文件服务器集群中选取用于存储的目标文件服务器;

所述终端将所述第二文件上传至所述目标文件服务器;上传的所述第二文件用于指示所述目标文件服务器在本地存储所述第二文件,并将所述第二文件的存储信息元数据更新至元数据集群;所述存储信息元数据携带有所述目标文件服务器的网络信息。

4.根据权利要求3所述的方法,其特征在于,上传的所述第二文件,还用于指示所述目标文件服务器,在将所述第二文件写入数据文件后,对应更新内存中的索引文件,并在数据文件发生切换时,将相应索引文件固化到磁盘中,并在所述目标文件服务器或所述目标文件服务器中用于存储索引文件的程序重启后,基于每个文件类型下文件编号最大的数据文件中已存储的文件重建该数据文件对应的索引文件,其中,在所述数据文件的总文件大小大于或等于文件存储阈值时,进行数据文件的切换。

5.根据权利要求3所述的方法,其特征在于,所述将所述第二文件上传至所述目标文件服务器,包括:

确定所述第二文件的文件大小;

当所述文件大小大于文件上传阈值时,按照所述文件上传阈值将所述第二文件切分成多个文件块;

将所述多个文件块依次上传至所述目标文件服务器;依次上传的文件块,用于指示所述目标文件服务器在接收到所述多个文件块后,将由所述多个文件块组合成的第二文件存储在本地,并将所述第二文件的存储信息元数据更新至元数据集群;所述存储信息元数据携带有所述目标文件服务器的网络信息。

6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:所述终端在自身处于所述第一网络时,将所述文件下载请求发送至所述第一文件服务器;发送的所述文件下载请求用于指示所述第一文件服务器,按照所述文件标识对应的索引信息读取相应第一文件;

所述终端接收所述第一文件服务器反馈的所述第一文件。

7.根据权利要求3所述的方法,其特征在于,上传的所述第二文件,还用于指示所述目标文件服务器,将所述第二文件同步至所述文件服务器集群中的至少一个文件服务器,并根据所述至少一个文件服务器的网络信息更新所述元数据集群中所述第二文件的存储信息元数据。

8.一种文件传输方法,所述方法包括:文件服务器接收携带文件标识的文件下载请求;

所述文件服务器在自身不处于存储有所述文件标识对应的第一文件的第一网络、且所述文件下载请求由自身所处的第二网络的终端发送时,从所述第一网络中存储有所述第一文件的第一文件服务器下载所述第一文件;

所述文件服务器将所述第一文件缓存在本地;缓存的第一文件用于在再次接收到携带所述文件标识的文件下载请求时,直接进行反馈;所述再次接收的文件下载请求由处于所述第二网络的终端发送;

所述文件服务器将所述第一文件对应于接收的所述文件下载请求反馈至相应终端。

9.根据权利要求8所述的方法,其特征在于,所述方法还包括:所述文件服务器接收终端上传的第二文件;

所述文件服务器将所述第二文件按照文件类型写入本地的相应数据文件中;

所述文件服务器生成所述第二文件对应的索引信息;所述索引信息用于确定存储有所述第二文件的数据文件,并从所述数据文件中定位所述第二文件。

10.根据权利要求9所述的方法,其特征在于,所述方法还包括:所述文件服务器,在将所述第二文件写入本地的响应数据文件后,对应更新内存中的索引文件,并在数据文件发生切换时,将相应索引文件固化到磁盘中;其中,在所述数据文件的总文件大小大于或等于文件存储阈值时,进行数据文件的切换,并在所述文件服务器或所述文件服务器中用于存储索引文件的程序重启后,基于每个文件类型下文件编号最大的数据文件中已存储的文件重建该数据文件对应的索引文件。

11.根据权利要求9所述的方法,其特征在于,所述方法还包括:所述文件服务器检测所述文件类型下文件编号最大的目标数据文件的总文件大小;

所述文件服务器在所述总文件大小大于或等于文件存储阈值时,将所述目标数据文件同步至从所处的网络的文件服务器集群中选取的至少一个文件服务器;

所述文件服务器根据所述至少一个文件服务器的网络信息,批量更新所述目标数据文件中的文件在元数据集群中的存储信息元数据。

12.根据权利要求9所述的方法,其特征在于,所述将所述第二文件按照文件类型写入本地的相应数据文件中之后,所述方法还包括:根据自身的网络信息生成所述第二文件的存储信息元数据;所述存储信息元数据用于确定存储有所述第二文件的文件服务器,以及所述文件服务器所在的网络;

将所述第二文件的存储信息元数据更新至元数据集群。

13.根据权利要求9所述的方法,其特征在于,所述方法还包括:检测所述文件类型下文件编号最大的目标数据文件的总文件大小;

当所述总文件大小大于或等于文件存储阈值时,将所述目标数据文件同步至从所处的网络的文件服务器集群中选取的至少一个文件服务器;

根据所述至少一个文件服务器的网络信息,批量更新所述目标数据文件中的文件在元数据集群中的存储信息元数据。

14.根据权利要求13所述的方法,其特征在于,所述将所述目标数据文件同步至从所处的网络的文件服务器集群中选取的至少一个文件服务器,包括:从所处的网络的文件服务器集群中选取的至少一个文件服务器;

通过所述文件类型对应的同步线程,将所述目标数据文件中的文件依次同步至所述至少一个文件服务器;

将所述目标数据文件中已同步文件的文件偏移,记录至所述同步线程对应的同步记录文件中;所述同步记录文件用于在同步过程中断时,基于最近记录的文件偏移继续进行文件同步。

15.一种文件传输装置,其特征在于,所述装置包括:获取模块,用于获取携带文件标识的文件下载请求;

确定模块,用于确定存储有所述文件标识对应的第一文件的第一文件服务器,以及所述第一文件服务器所在的第一网络;

下载模块,用于在自身所在终端处于所述第一网络时,将所述文件下载请求发送至所处的第一网络的第一文件服务器,并接收第一文件服务器根据文件下载请求中的文件标识查询并反馈的第一文件;并在自身所在终端不处于所述第一网络时,将所述文件下载请求发送至所处的第二网络的第二文件服务器,所述文件下载请求用于指示所述第二文件服务器从所述第一文件服务器下载所述第一文件,并缓存在本地;

接收模块,用于接收所述第二文件服务器反馈的所述第一文件,还用于接收第一文件服务器反馈的第一文件。

16.根据权利要求15所述的装置,其特征在于:所述确定模块,还用于根据文件标识从元数据集群获取相应第一文件的存储信息元数据;根据存储信息元数据确定存储有第一文件的第一文件服务器,以及第一文件服务器所在的第一网络;文件下载请求还用于指示第二文件服务器,根据第二文件服务器的网络信息,更新元数据集群中第一文件的存储信息元数据。

17.根据权利要求15所述的装置,其特征在于,所述装置还包括:上传模块,用于获取携带待上传的第二文件的文件上传请求;从所处的网络的文件服务器集群中选取用于存储的目标文件服务器;将第二文件上传至目标文件服务器;上传的第二文件用于指示目标文件服务器在本地存储第二文件,并将第二文件的存储信息元数据更新至元数据集群;存储信息元数据携带有目标文件服务器的网络信息。

18.根据权利要求17所述的装置,其特征在于,上传的所述第二文件,还用于指示所述目标文件服务器,在将所述第二文件写入数据文件后,对应更新内存中的索引文件,并在数据文件发生切换时,将相应索引文件固化到磁盘中,并在所述目标文件服务器或所述目标文件服务器中用于存储索引文件的程序重启后,基于每个文件类型下文件编号最大的数据文件中已存储的文件重建该数据文件对应的索引文件,其中,在所述数据文件的总文件大小大于或等于文件存储阈值时,进行数据文件的切换。

19.根据权利要求17所述的装置,其特征在于:所述上传模块,还用于确定第二文件的文件大小;当文件大小大于文件上传阈值时,按照文件上传阈值将第二文件切分成多个文件块;将多个文件块依次上传至目标文件服务器;依次上传的文件块,用于指示目标文件服务器在接收到多个文件块后,将由多个文件块组合成的第二文件存储在本地,并将第二文件的存储信息元数据更新至元数据集群;存储信息元数据携带有目标文件服务器的网络信息。

20.根据权利要求15所述的装置,其特征在于:所述下载模块,还用于当处于第一网络时,将文件下载请求发送至第一文件服务器;发送的文件下载请求用于指示第一文件服务器,按照文件标识对应的索引信息读取相应第一文件。

21.一种文件传输装置,其特征在于,所述装置包括:接收模块,用于接收携带文件标识的文件下载请求;

下载模块,用于在自身所在服务器不处于存储有所述文件标识对应的第一文件的第一网络、且所述文件下载请求由所处的第二网络的终端发送时,从所述第一网络中存储有所述第一文件的第一文件服务器下载所述第一文件;

缓存模块,用于将所述第一文件缓存在本地;缓存的第一文件用于在再次接收到携带所述文件标识的文件下载请求时,直接进行反馈;所述再次接收的文件下载请求由处于所述第二网络的终端发送;

反馈模块,用于将所述第一文件对应于接收的所述文件下载请求反馈至相应终端。

22.根据权利要求21所述的装置,其特征在于,所述装置还包括:写入模块,用于接收终端上传的第二文件;将第二文件按照文件类型写入本地的相应数据文件中;生成第二文件对应的索引信息;索引信息用于确定存储有第二文件的数据文件,并从数据文件中定位第二文件。

23.根据权利要求22所述的装置,其特征在于:所述写入模块,还用于在将所述第二文件写入本地的响应数据文件后,对应更新内存中的索引文件,并在数据文件发生切换时,将相应索引文件固化到磁盘中;其中,在所述数据文件的总文件大小大于或等于文件存储阈值时,进行数据文件的切换,并在所述文件服务器或所述文件服务器中用于存储索引文件的程序重启后,基于每个文件类型下文件编号最大的数据文件中已存储的文件重建该数据文件对应的索引文件。

24.根据权利要求22所述的装置,其特征在于,所述装置还包括:同步模块,用于检测文件类型下文件编号最大的目标数据文件的总文件大小;当总文件大小大于或等于文件存储阈值时,将目标数据文件同步至从所处的网络的文件服务器集群中选取的至少一个文件服务器;根据至少一个文件服务器的网络信息,批量更新目标数据文件中的文件在元数据集群中的存储信息元数据。

25.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至14中任一项所述方法的步骤。

26.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至14中任一项所述的方法的步骤。

说明书 :

文件传输方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及计算机技术领域,特别是涉及一种文件传输方法、装置、计算机设备和存储介质。

背景技术

[0002] 随着计算机技术的发展,出现了基于分布式文件系统的分布式文件存储方式,其利用多个服务器协同存储解决了数据量剧增情况下单个服务器未能解决的大容量存储问
题。目前的分布式文件存储方式仅适用于同一网络中心内的数据存储。随着企业的数字化
转型,多中心协同办公的需求越来越多,企业的多中心之间通过专线互联。而通过专线互联
的多中心间的网络带宽资源有限,目前的分布式文件存储方式无法满足企业内部多中心文
件传输的需求,存在文件传输效率低的问题。

发明内容

[0003] 基于此,有必要针对上述技术问题,提供一种能够提高文件传输效率的文件传输方法、装置、计算机设备和存储介质。
[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] 图6为另一个实施例中文件传输方法的流程示意图;
[0055] 图7为又一个实施例中文件传输方法的流程示意图;
[0056] 图8为一个实施例中文件服务器中所存储的数据文件与相应索引文件的结构示意图;
[0057] 图9为一个实施例中文件服务器的内部存储结构示意图;
[0058] 图10为一个实施例中文件传输装置的结构框图;
[0059] 图11为另一个实施例中文件传输装置的结构框图;
[0060] 图12为一个实施例中计算机设备的内部结构图;
[0061] 图13为另一个实施例中计算机设备的内部结构图。

具体实施方式

[0062] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不
用于限定本申请。
[0063] 本申请提供的文件传输方法,可以应用于如图1所示的应用环境中。参照图1,该文件传输方法应用于文件传输系统。其中,第一网络110与第二网络120通过专线互联。第一网
络110包括至少一个存储有文件下载请求所指定的第一文件的第一文件服务器112。第二网
络120包括终端122,以及至少一个用于从第一文件服务器112下载第一文件的第二文件服
务器124。第二文件服务器124与终端122通过内网进行通信,第二文件服务器124与终端122
分别通过专线与第一文件服务器112进行通信。终端122在获取到携带文件标识的文件下载
请求后,确定存储有该文件标识对应的第一文件的第一文件服务器,以及第一文件服务器
所处的第一网络,并当终端122不处于第一网络110时,终端122将所获取到的文件下载请求
发送至第二网络120中的第二文件服务器124;第二文件服务器124根据文件下载请求从第
一文件服务器112下载第一文件,将第一文件缓存在本地,并将第一文件反馈至终端122。
[0064] 第一网络110还可包括一个或多个未存储该目标文件的文件服务器。第二网络120还可包括一个或多个未被选作为第二文件服务器124的文件服务器。本实施例中的“第一”
与“第二”并不用于具体限定,只是用于区分对象;比如“第一网络”与“第二网络”,只是为了
区分第一文件服务器112所处的网络,与终端122所处的网络是不同的网络;还比如,“第一
文件服务器”与“第二文件服务器”,只是为了区分存储有第一文件的文件服务器,与用于从
其他网络下载第一文件的文件服务器是不同的文件服务器。
[0065] 如图1所示,该文件传输系统还可包括一个或多个网络,比如网络130,网络130通过专线分别与第一网络110和第二网络120进行互联,网络130包括至少一个文件服务器
132。图1所示的网络以及每个网络内的文件服务器数量仅作为示例,并不用于具体限定。其
中,终端122可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可
穿戴设备,各个网络中的文件服务器可以用独立的服务器或者是多个服务器组成的服务器
集群来实现。
[0066] 在一个实施例中,以企业对应的文件传输系统为例,企业的多中心对应于文件传输系统的多个网络,企业的一个中心对应一个网络,运行于同一个中心的计算机设备同处
于一个网络,同一个网络内的计算机设备通过内网进行通信,处于不同网络的计算机设备
之间通过专线进行通信。在本实施例中,计算机设备包括但不限于是终端与服务器。可以理
解,图1所示的第一网络110为一个或多个,当终端122请求下载第一文件时,该第一文件存
储在一个中心的文件服务器上的同时,还可能以缓存的方式存储在其他一个或多个中心的
文件服务器上。若存储有第一文件的文件服务器分处于多个中心,则该多个中心各自对应
的网络均作为第一网络110。若存储有第一文件的文件服务器同处于一个中心,则该中心作
为第一网络110。
[0067] 在一个实施例中,如图2所示,提供了一种文件传输方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
[0068] S202,获取携带文件标识的文件下载请求。
[0069] 其中,文件标识用于唯一标识文件,具体可以是由数字、字母和符号等字符中的至少一种组成的字符串。文件下载请求是用于触发文件下载操作的请求。文件下载请求中携
带有待下载的第一文件的文件标识。
[0070] 具体地,终端检测用户的文件下载触发操作,当检测到文件下载触发操作时,根据该文件下载触发操作获取待下载的第一文件的文件标识,并生成携带该文件标识的文件下
载请求。
[0071] 在一个实施例中,文件下载触发操作是指用户针对待下载的第一文件的预设触发操作,预设触发操作比如点击、滑动或按压操作等,在此不作具体限定。
[0072] 在一个实施例中,终端在获取到文件下载请求后,获取自身的网络地址,以便于根据该网络地址确定自身所处的网络。网络地址是终端所处网络的网络地址,同处于一个网
络的终端与服务器具有相同的网络地址。
[0073] S204,确定存储有文件标识对应的第一文件的第一文件服务器,以及第一文件服务器所在的第一网络。
[0074] 其中,第一文件服务器是存储有文件下载请求所指定的第一文件的文件服务器。第一网络是存储有第一文件的文件服务器所在的网络。本实施例中,对于每个待下载的文
件,存储有该文件的文件服务器均可理解为该文件相应的第一文件服务器,各个待下载的
文件对应的第一文件服务器相互独立。
[0075] 具体地,终端解析所获取到的文件下载请求得到相应的文件标识,根据该文件标识确定存储有相应第一文件的第一文件服务器,并确定每个第一文件服务器所在的第一网
络。
[0076] 在一个实施例中,终端根据文件标识查询存储有相应第一文件的第一文件服务器,获取第一文件服务器的网络地址,并根据所获取的网络地址确定第一文件服务器所处
的第一网络。
[0077] 在一个实施例中,终端根据文件标识获取相应第一文件的存储信息元数据,提取存储信息元数据中的网络信息,并根据网络信息确定存储有该第一文件的第一文件服务
器,以及每个第一文件服务器所在的第一网络。
[0078] 在一个实施例中,存储有第一文件的第一文件服务器有多个。若该多个第一文件服务器同处于一个网络,则该第一文件由与该多个第一文件服务器处于同一网络的终端上
传,并在该多个第一文件服务器上进行多副本存储。若该多个第一文件服务器分处于不同
的网络,则第一文件由处于其中一个网络的终端上传,并存储在该终端所处网络的一个或
多个第一文件服务器上,而处于其他网络中的第一文件服务器以缓存方式存储有该第一文
件。
[0079] S206,当不处于第一网络时,将文件下载请求发送至所处的第二网络的第二文件服务器,文件下载请求用于指示第二文件服务器从第一文件服务器下载第一文件,并缓存
在本地。
[0080] 具体地,终端在确定存储有待下载的第一文件的第一文件服务器,以及第一文件服务器所处的第一网络后,根据自身的网络地址判断终端是否处于第一文件服务器所在的
第一网络。当判定终端不处于第一网络时,终端从自身所处的第二网络中的文件服务器中
选取第二文件服务器,并将携带文件标识的文件下载请求发送至所选取出的第二文件服务
器。第二文件服务器在接收到携带文件标识的文件下载请求后,确定存储有该文件标识对
应的第一文件的第一文件服务器,根据该文件标识从所确定的第一文件服务器中下载相应
的第一文件,并将所下载的第一文件缓存在本地。
[0081] 在一个实施例中,同处于一个网络的终端与文件服务器的网络地址相同。终端根据自身的网络地址与文件服务器的网络地址,能够确定与终端同处于第二网络的文件服务
器。终端也可通过查询文件服务器列表的形式,确定与自身同处于第二网络的文件服务器。
[0082] 在一个实施例中,终端从所处的第二网络中选取至少一个第二文件服务器。终端具体可根据配置的缓存副本数从第二网络中选取缓存副本数的第二文件服务器。缓存副本
数是基于第二网络中可能下载文件的终端数动态确定的,比如一个中心需要下载同一文件
的终端或用户较多,则会在多个第二文件服务器上缓存该文件,以便于提高文件下载效率。
[0083] 在一个实施例中,终端将文件下载请求,以及基于该文件下载请求所获取到的存储信息元数据发送至所处的第二网络的第二文件服务器,以便于第二文件服务器基于所接
收到的存储信息元数据,能够快速定位存储有第一文件的第一文件服务器。第二文件服务
器也可根据文件下载请求中的文件标识,主动从元数据集群中获取相应第一文件的存储信
息元数据。
[0084] 在一个实施例中,第二文件服务器将下载的第一文件缓存在本地后,根据自身的网络信息更新该第一文件在元数据集群中的存储信息元数据。
[0085] 在一个实施例中,当判定终端处于所确定的第一网络时,终端将文件下载请求发送至所处的第一网络的第一文件服务器,并接收第一文件服务器根据文件下载请求中的文
件标识查询并反馈的第一文件。
[0086] S208,接收第二文件服务器反馈的第一文件。
[0087] 具体地,第二文件服务器根据文件标识从存储有第一文件的第一文件服务器下载该第一文件后,将所下载的第一文件对应于文件下载请求反馈至相应终端。终端接收第二
文件服务器反馈的第一文件。
[0088] 上述文件传输方法、装置、计算机设备和存储介质,终端根据携带文件标识的文件下载请求,确定存储有该文件标识对应的第一文件的第一文件服务器,及第一文件服务器
所处的网络,而当终端不处于该第一网络时,表明与终端处于同一网络的文件服务器中未
存储第一文件,则将文件下载请求发送至所处的第二网络中的第二文件服务器,以通过第
二文件服务器从第一网络下的第一文件服务器中获取第一文件,以保证第一文件的有效下
载。进一步地,第二文件服务器将根据文件下载请求下载的第一文件缓存在本地,这样,由
与第二文件服务器处于同一网络的终端再次发起携带该文件标识的文件下载请求时,该网
络的文件服务器已缓存有第一文件,即请求终端与文件服务器处于同一网络,一方面无需
再从其他网络获取该第一文件,能够避免因再次跨网络获取第一文件而占用的网络带宽资
源,另一方面,同一网络下载,能够提高文件传输效率。
[0089] 在一个实施例中,步骤S204包括:根据文件标识从元数据集群获取相应第一文件的存储信息元数据;根据存储信息元数据确定存储有第一文件的第一文件服务器,以及第
一文件服务器所在的第一网络;文件下载请求还用于指示第二文件服务器,根据第二文件
服务器的网络信息,更新元数据集群中第一文件的存储信息元数据。
[0090] 其中,元数据集群用于存储文件的存储信息元数据,具体可以是由多个用于存储文件的存储信息元数据的元数据服务器组成的集合。存储信息元数据是表征文件的存储信
息的元数据信息,能够用于确定文件及其副本的分布情况。存储信息元数据包括文件标识
与存储有文件的每个文件服务器的网络信息等。网络信息能够用于唯一确定一个文件服务
器,以及该文件服务器所处的网络。
[0091] 在一个实施例中,网络信息包括网络地址与主机地址,主机地址能够用于确定文件服务器,网络地址能够用于确定文件服务器所处的网络。网络信息比如IP(Internet 
Protocol,网际互连协议)地址。
[0092] 在一个实施例中,网络信息包括存储有相应文件的文件服务器所对应的文件服务器标识,以及该文件服务器所处的网络对应的网络标识。由此,终端根据网络信息中的文件
服务器标识与网络标识,即可快速确定存储有第一文件的第一文件服务器,以及每个第一
文件服务器所处的第一网络。
[0093] 具体地,终端根据文件下载请求中的文件标识,从元数据集群中获取该文件标识对应的第一文件的存储信息元数据,提取该存储信息元数据中的网络信息,并根据所提取
出的网络信息确定存储有第一文件的第一文件服务器,以及每个第一文件服务器所处的第
一网络,以便于直接或间接的从所确定的第一文件服务器中下载第一文件。终端通过自身
所处的第二网络的第二文件服务器,从存储有第一文件的第一文件服务器下载该第一文件
后,该第二文件服务器会将自身的网络信息更新至元数据集群中该第一文件的存储信息元
数据中。
[0094] 在一个实施例中,终端生成携带文件标识的元数据获取请求,并根据该元数据获取请求从元数据集群中获取相应存储信息元数据。终端可从元数据集群中选取一个元数据
服务器,并将元数据获取请求发送至所选取的元数据服务器。终端还可将元数据获取请求
直接发送至元数据集群,由元数据集群分配用于响应该元数据获取请求的元数据服务器。
元数据集群根据每个元数据服务器的当前负载,或者,文件标识的哈希值等选取用于响应
的元数据服务器。
[0095] 图3为一个实施例中适用文件传输方法的系统架构图。如图3所示,该企业内部的文件传输系统包括三个中心,分别为总部、中心1与中心2,每个中心对应一个网络,每个中
心均部署有至少一个文件服务器,由此实现了文件服务器的多中心分布式部署。每个中心
内部通过内网互联,各个中心之间通过专线互联。元数据集群部署在其中一个中心,如图3
所示的总部,处于总部的终端通过内网能够直接从元数据集群获取文件的存储信息元数
据,处于分中心的终端则需通过所处中心与总部之间的专线来获取存储信息元数据。图3所
示的中心及其数量,及每个中心部署的文件服务器数量仅作为示例,并不用于具体限定,比
如图示的文件服务器可理解为由多个文件服务器组成的文件服务器集群。
[0096] 图4为一个实施例中文件的存储信息元数据的数据示意图。如图4所示,每个文件的存储信息元数据包括文件标识,以及存储有文件副本的每个文件服务器的网络信息。图4
以网络信息为文件服务器的IP地址为例。文件副本是相对概念,当文件在多个文件服务器
上进行存储时,该多个文件服务器上存储的文件互为文件副本,以实现文件的多副本存储,
该多个文件服务器的网络信息均作为副本IP地址存储于存储信息元数据中,如图4所示的
副本IP1,副本IP2与副本IP3。当文件存储在单个文件服务器上时,则将该单个文件服务器
的网络信息作为副本IP地址存储于存储信息元数据中。存储信息元数据中还可包括文件对
应的一个或多个缓存副本IP列表,如图4所示的缓存副本1‑IP列表与缓存副本2‑IP列表。每
个缓存副本列表对应一个网络或中心,且缓存副本列表是由处于相应网络的文件服务器从
其他网络下载相应文件并缓存在本地后生成或更新的。可以理解,每个缓存副本IP列表中
可包括当前缓存有相应文件的一个或多个文件服务器的IP地址。如图4所示,每个文件的存
储信息元数据还可包括文件的创建时间,以及用于标识文件是否持久性存储的文件类型标
识。
[0097] 上述实施例中,根据元数据集群中针对第一文件存储的存储信息元数据,能够快速而准确的定位存储有第一文件的第一文件服务器,以及第一文件服务器所在的第一网
络,以便于基于所定位的第一文件服务器与第一网络快速下载第一文件。第二文件服务器
将根据终端发送的文件下载请求,从处于第一网络的第一文件服务器下载的第一文件缓存
在本地后,将自身的网络信息更新至元数据集群中该第一文件的存储信息元数据中,以便
于处于第二网络的终端针对该第一文件再次发起文件下载请求时,基于更新后的存储信息
元数据能够确定第二网络已缓存有该第一文件,由此能够直接从所处的第二网络下载第一
文件,从而能够提高文件传输效率。
[0098] 在一个实施例中,上述文件传输方法还包括:获取携带待上传的第二文件的文件上传请求;从所处的网络的文件服务器集群中选取用于存储的目标文件服务器;将第二文
件上传至目标文件服务器;上传的第二文件用于指示目标文件服务器在本地存储第二文
件,并将第二文件的存储信息元数据更新至元数据集群;存储信息元数据携带有目标文件
服务器的网络信息。
[0099] 其中,文件上传请求是用于触发文件上传操作的请求,用于指示终端将待上传的文件上传至相应目标文件服务器进行存储。文件上传请求携带有待上传的文件与相应文件
标识,还可携带文件的创建时间与文件类型标识等。
[0100] 具体地,终端检测用户的文件上传触发操作,根据所检测到的文件上传触发操作获取待上传的第二文件,并生成携带该第二文件的文件上传请求。终端从与自身处于同一
网络的文件服务器集群中选取用于存储第二文件的目标文件服务器,并将所获取到的第二
文件上传至所选取的目标文件服务器。目标文件服务器将所接收到的第二文件存储在本
地,生成携带有自身的网络信息、且与第二文件对应的存储信息元数据,并将该存储信息元
数据更新至元数据集群。
[0101] 在一个实施例中,终端将携带第二文件的文件上传请求发送至目标文件服务器。目标文件服务器将该第二文件存储在本地,并根据自身的网络信息与文件上传请求所指定
的文件相关信息,生成第二文件的存储信息元数据。
[0102] 在一个实施例中,上传的第二文件还用于指示目标文件服务器,将第二文件按照文件类型写入本地的相应数据文件中,生成相应的索引信息,并将该索引信息存储在本地。
目标文件服务器根据第二文件的文件类型标识,从本地确定相应文件类型所对应的数据文
件,将第二文件写入该数据文件中。数据文件可理解为目标文件服务器上用于合并存储相
同文件类型的文件的物理文件,每个数据文件预配置有相应的文件存储阈值。在当前数据
文件中已存储文件的总文件大小大于或等于文件存储阈值时,切换至下一个数据文件执行
文件写入操作。在当前数据文件对应的总文件大小小于文件存储阈值时,继续当前数据文
件中执行文件写入操作。文件存储阈值比如2G(吉兆,一种字节计量单位)。
[0103] 在一个实施例中,上传的第二文件,还用于指示目标文件服务器,将第二文件同步至文件服务器集群中的至少一个文件服务器,并根据至少一个文件服务器的网络信息更新
元数据集群中第二文件的存储信息元数据。
[0104] 具体地,目标文件服务器将终端上传的第二文件存储在本地后,将该第二文件同步至自身所处的文件服务器集群中的至少一个文件服务器,并将该同步有第二文件的至少
一个文件服务器的网络信息,更新至该第二文件在元数据集群中的存储信息元数据中。用
于同步存储第二文件的至少一个文件服务器可由终端确定。终端根据所处的网络中的每个
文件服务器的性能参数与预配置的副本数,从所处网络的文件服务器集群中选取副本数的
目标文件服务器。终端可将第二文件发送至所选取的目标文件服务器中的任一个,并通过
该目标文件服务器将第二文件同步至其他每个目标文件服务器。终端也可将第二文件分别
发送至所选取的每个目标文件服务器。终端还可将第二文件发送至从文件服务器集群中选
取的单个目标文件服务器,以指示该目标文件服务器根据该文件服务器集群中每个文件服
务器的性能参数,从该文件服务器集群中选取相应数量的文件服务器,并将第二文件同步
至所选取的文件服务器。其中,性能参数包括文件服务器的磁盘容量与负载等。
[0105] 上述实施例中,终端将待上传的第二文件,就近上传至与自身同处于一个网络的目标文件服务器,实现文件的就近上传,以避免将第二文件上传至其他网络的文件服务器
时所需占用的网络带宽资源,能够提高文件的传输效率。进一步地,用于接收并存储第二文
件的目标文件服务器,将携带自身的网络信息的存储信息元数据更新至元数据集群,以便
于请求下载该第二文件的终端基于存储信息元数据,能够快速定位该第二文件的存储分布
情况,从而进一步提高文件传输效率。
[0106] 在一个实施例中,将第二文件上传至目标文件服务器,包括:确定第二文件的文件大小;当文件大小大于文件上传阈值时,按照文件上传阈值将第二文件切分成多个文件块;
将多个文件块依次上传至目标文件服务器;依次上传的文件块,用于指示目标文件服务器
在接收到多个文件块后,将由多个文件块组合成的第二文件存储在本地,并将第二文件的
存储信息元数据更新至元数据集群;存储信息元数据携带有目标文件服务器的网络信息。
[0107] 其中,文件大小是指文件的数据量大小。文件上传阈值是用于限定单次上传的文件数据量的阈值,比如1M(兆,一种字符计量单位)。文件块是对文件内容进行切块所得到的
数据块。
[0108] 具体地,终端在获取到待上传的第二文件后,获取该第二文件的文件大小,并将所获取的文件大小与预配置的文件上传阈值进行比较。当第二文件的文件大小大于文件上传
阈值时,终端按照该文件上传阈值对第二文件进行切分处理,得到相应的多个文件块。将第
二文件切分得到的多个文件块中,除最后一个文件块之外的每个文件块的文件块大小均与
文件上传阈值一致。终端将第二文件对应的多个文件块依次上传至所选取的目标文件服务
器。目标文件服务器将终端依次上传的文件块缓存在本地,并在第二文件对应的多个文件
块均上传完毕时,根据该多个文件块进行批量刷盘,以将该有该多个文件块组合成的第二
文件存储在本地。目标文件服务器生成携带有自身的网络信息的、且与第二文件对应的存
储信息元数据,并将该存储信息元数据更新至元数据集群。
[0109] 在一个实施例中,目标文件服务器按照第二文件的文件类型,将该第二文件写入相应文件目录下的数据文件中。目标文件服务器将临时文件写入临时文件目录下的数据文
件中,将持久性文件写入持久性文件目录下的数据文件中。
[0110] 上述实施例中,预配置单次上传的文件上传阈值,并在待上传的文件大于文件上传阈值时,将文件切分成文件块依次上传,以避免因文件数据量太大导致上传效率较低的
问题,能够提高文件传输效率。
[0111] 在一个实施例中,上述文件传输方法还包括:当处于第一网络时,将文件下载请求发送至第一文件服务器;发送的文件下载请求用于指示第一文件服务器,按照文件标识对
应的索引信息读取相应第一文件;接收第一文件服务器反馈的第一文件。
[0112] 其中,索引信息用于在第一文件服务器中定位相应的第一文件。索引信息主要存储文件标识与相应数据文件的映射关系,具体可包括文件标识、文件所在的数据文件的文
件编号、文件在数据文件中的文件偏移与文件长度等。索引信息还可包括文件类型标识,文
件类型标识比如持久性文本、同步副本、临时文本与缓存副本。
[0113] 具体地,当判定终端处于存储有第一文件的第一文件服务器所在的第一网络时,终端将携带文件标识的文件下载请求发送至存储有第一文件的第一文件服务器。第一文件
服务器解析文件下载请求得到文件标识,获取文件标识对应的索引信息,根据索引信息确
定存储有该第一文件的数据文件,并根据索引信息从该数据文件中读取第一文件,进而将
读取的第一文件反馈至相应终端。
[0114] 在一个实施例中,第一文件服务器根据文件标识获取相应索引信息,提取索引信息中的文件编号、文件在数据文件中的文件偏移与文件长度。第一文件服务器根据文件编
号从本地确定相应的数据文件,根据文件偏移在该数据文件中定位第一文件的起始位置,
并根据起始位置与文件长度从数据文件中定位该第一文件,并从数据文件中读取所定位出
的第一文件。
[0115] 在一个实施例中,基于文件下载请求所确定的第一网络为一个。当判定终端处于该第一网络时,终端从该第一网络中存储有第一文件的第一文件服务器中下载该第一文
件。
[0116] 在一个实施例中,第一网络有多个。终端判断自身是否处于该多个第一网络中的任一个。当终端同时不处于该多个第一网络时,则判定终端不处于第一网络,并通过所处的
第二网络的第二文件服务器从第一文件服务器下载第一文件。当终端处于该多个第一网络
中的任一个时,终端从与自身处于同一个第一网络的第一文件服务器中下载第一文件,以
实现文件的就近下载,这样,终端通过内网从自身所处的第一网络的第一文件服务器下载
第一文件,而不必跨网络从其他网络下载第一文件,能够提高文件传输效率。
[0117] 图5为一个实施例中文件对应的索引信息的数据示意图。如图5所示,每个文件对应的索引信息包括文件标识、文件所在的数据文件的文件编号、文件在数据文件中的文件
偏移与文件在数据文件中的文件长度,还可包括持久性文本、同步副本、临时文本或缓存副
本等文件类型标识。其中,索引信息可按照键值对的形式存储,具体可通过Leveldb(一个kv
(键值对)数据库)进行存储。
[0118] 上述实施例中,当终端处于存储有待下载的第一文件的第一网络时,终端则从所处的第一网络的第一文件服务器中下载该第一文件,而不必跨网络下载,能够提高文件传
输效率。进一步地,第一文件服务器基于文件标识对应的索引信息快速从本地定位第一文
件,能够进一步提高文件传输效率。
[0119] 如图6所示,在一个实施例中,提供了一种文件传输方法,该方法包括文件上传流程与文件下载流程,其中,文件下载流程包括下述步骤S602‑S614,文件上传流程包括下述
步骤S616‑S624。
[0120] S602,终端获取携带文件标识的文件下载请求。
[0121] S604,终端根据文件标识从元数据集群获取相应第一文件的存储信息元数据。
[0122] S606,终端根据存储信息元数据确定存储有第一文件的第一文件服务器,以及第一文件服务器所在的第一网络。
[0123] S608,当不处于第一网络时,终端将文件下载请求发送至所处的第二网络的第二文件服务器,文件下载请求用于指示第二文件服务器从第一文件服务器下载第一文件,并
缓存在本地,以及根据第二文件服务器的网络信息,更新元数据集群中第一文件的存储信
息元数据。
[0124] S610,终端接收第二文件服务器反馈的第一文件。
[0125] S612,当处于第一网络时,终端将文件下载请求发送至第一文件服务器;发送的文件下载请求用于指示第一文件服务器,按照文件标识对应的索引信息读取相应第一文件。
[0126] S614,终端接收第一文件服务器反馈的第一文件。
[0127] S616,终端获取携带待上传的第二文件的文件上传请求。
[0128] S618,终端从所处的网络的文件服务器集群中选取用于存储的目标文件服务器。
[0129] S620,终端确定第二文件的文件大小;
[0130] S622,当文件大小大于文件上传阈值时,终端按照文件上传阈值将第二文件切分成多个文件块。
[0131] S624,终端将多个文件块依次上传至目标文件服务器;依次上传的文件块,用于指示目标文件服务器在接收到多个文件块后,将由多个文件块组合成的第二文件存储在本
地,并将第二文件的存储信息元数据更新至元数据集群;存储信息元数据携带有目标文件
服务器的网络信息。
[0132] 在上述实施例中,由于文件上传流程与文件下载流程均按照就近原则,终端将待上传的第二文件上传至自身所处网络中的文件服务器进行存储,以避免跨网络上传而占用
优先带宽资源的问题,能够提高文件上传过程中的文件传输效率。终端优先从自身所处的
网络中下载待下载的第一文件,当自身所处的网络未存储该第一文件时,通过自身所处网
络的第二文件服务器从存储有第一文件的第一文件服务器下载该第一文件,并缓存在第二
文件服务器,以便于该网络内的终端再次请求下载该第一文件时,能够直接从所处网络的
第二文件服务器下载缓存的第一文件,而不必再跨网络下载该第一文件,能够提高文件下
载过程中的文件传输效率,由此能够提高整个文件传输过程中的文件传输效率。可以理解,
上述实施例中待上传的第二文件与待下载的第一文件可以是同一个文件,由此,也能够实
现同一终端对同一文件的上传与下载。
[0133] 在一个实施例中,本申请提供的文件传输方法适用于企业的多中心协同办公,在多中心间网络带宽资源有限、网络环境复杂等情况下,能够基于文件的上传、存储、下载实
现文件共享与文件群发等。基于文件上传与文件下载优先访问就近中心的文件服务器,以
及中心内部自连接、中心之间缓存文件的文件传输方式,尽量避免跨中心的文件传输,以降
低中心之间专线的网络流量,并提高文件传输效率。
[0134] 在一个实施例中,如图7所示,提供了一种文件传输方法,以该方法应用于图1中的第二文件服务器为例进行说明,包括以下步骤:
[0135] S702,接收携带文件标识的文件下载请求。
[0136] 具体地,第二文件服务器接收携带有文件标识的文件下载请求,解析该文件下载请求得到文件标识,以便于根据该文件标识,从存储有该文件标识对应的第一文件的文件
服务器下载该第一文件。
[0137] 在一个实施例中,第二文件服务器接收自身所处的网络的终端发送的文件下载请求,以便于基于文件下载请求从本地或存储有第一文件的第一文件服务器获取该第一文
件。第二文件服务器还可接收与自身处于不同网络的文件服务器发送的文件下载请求,并
根据文件下载请求从本地获取并反馈相应第一文件。
[0138] S704,当不处于存储有文件标识对应的第一文件的第一网络、且文件下载请求由所处的第二网络的终端发送时,从第一网络中存储有第一文件的第一文件服务器下载第一
文件。
[0139] 具体地,第二文件服务器在接收到终端发送的携带文件标识的文件下载请求后,确定存储有该文件标识对应的第一文件的第一文件服务器,以及第一文件服务器所处的第
一网络,并确定该终端所处的网络,以及自身所处的网络。当判定第二文件服务器不处于第
一网络,且第二文件服务器与发送文件下载请求的终端同处于第二网络时,表明第二文件
服务器尚未存储第一文件,第二文件服务器根据文件标识,从存储有第一文件的第一文件
服务器下载该第一文件。
[0140] 在一个实施例中,第二文件服务器根据文件标识从元数据集群获取相应的存储信息元数据,或者,接收终端发送文件下载请求时一并发送的存储信息元数据。第二文件服务
器根据存储信息元数据确定存储有相应第一文件的第一文件服务器,以及第一文件服务器
所在的第一网络。第二文件服务器从存储信息元数据中提取文件标识对应的网络信息,解
析网络信息得到网络地址与主机地址,根据主机地址确定存储有第一文件的第一文件服务
器,并根据网络地址确定相应第一文件服务器所在的第一网络。
[0141] 在一个实施例中,当判定第二文件服务器与终端同处于第一网络时,表明终端所处的网络中存储有第一文件,基于就近网络下载的文件下载方式,第二文件服务器本地存
储有待下载的第一文件,第二文件服务器则从本地获取第一文件并反馈至相应终端。
[0142] 在一个实施例中,第二文件服务器根据文件下载请求所指定的文件标识,从本地查询是否存储有相应的第一文件。若有,则将所查询到的第一文件反馈至终端,若没有,则
从第一网络中存储有第一文件的第一文件服务器获取。第二文件服务器可通过查询文件标
识对应的索引信息,来判断本地是否存储有第一文件。
[0143] S706,将第一文件缓存在本地;缓存的第一文件用于在再次接收到携带文件标识的文件下载请求时,直接进行反馈;再次接收的文件下载请求由处于第二网络的终端发送。
[0144] 具体地,第二文件服务器将从第一文件服务器下载的第一文件缓存在本地,并将自身的网络信息更新至第一文件在元数据集群中对应的存储信息元数据。第二文件服务器
在再次接收到自身所处的网络的终端发送的、且携带有已缓存的第一文件的文件标识的文
件下载请求时,由于第二文件服务器已缓存有该第一文件,第二文件服务器直接从本地获
取缓存的第一文件,并反馈至相应终端。
[0145] S708,将第一文件对应于接收的文件下载请求反馈至相应终端。
[0146] 具体地,第二文件服务器基于所接收到的文件下载请求获取到相应第一文件后,将所获取到的第一文件反馈至相应终端,以实现文件传输。
[0147] 在一个实施例中,第二文件服务器与存储有待下载的第一文件的第一文件服务器处于异构网络,该第一文件服务器与第二文件服务器不能直接进行通信,则第二文件服务
器需通过能够同时与第一文件服务器及第二文件服务器进行通信的文件服务器,从第一文
件服务器下载第一文件,并将第一文件缓存在本地,以便于所处的网络的终端再次请求该
第一文件时,则无需再通过上述复杂流程来从第一文件服务器下载,而是直接将本地缓存
的第一文件反馈至相应终端。由此,本申请中通过就近中心上传与下载文件,每个中心内部
通过内网自连接,中心之间缓存文件等方式,在多中心与异构网络等复杂网络环境下,仍然
能够有效进行文件的上传、存储与下载,从而能够提高文件传输效率。
[0148] 上述文件传输方法,终端根据携带文件标识的文件下载请求,确定存储有该文件标识对应的第一文件的第一文件服务器,及第一文件服务器所处的网络,而当终端不处于
该第一网络时,表明与终端处于同一网络的文件服务器中未存储第一文件,则将文件下载
请求发送至所处的第二网络中的第二文件服务器,以通过第二文件服务器从第一网络下的
第一文件服务器中获取第一文件,以保证第一文件的有效下载。进一步地,第二文件服务器
将根据文件下载请求下载的第一文件缓存在本地,这样,由与第二文件服务器处于同一网
络的终端再次发起携带该文件标识的文件下载请求时,该网络的文件服务器已缓存有第一
文件,即请求终端与文件服务器处于同一网络,一方面无需再从其他网络获取该第一文件,
能够避免因再次跨网络获取第一文件而占用的网络带宽资源,另一方面,同一网络下载,能
够提高文件传输效率。
[0149] 在一个实施例中,上述文件传输方法还包括:接收终端上传的第二文件;将第二文件按照文件类型写入本地的相应数据文件中;生成第二文件对应的索引信息;索引信息用
于确定存储有第二文件的数据文件,并从数据文件中定位第二文件。
[0150] 其中,数据文件是用于存储终端上传的文件及其文件数据的文件,数据文件具体可以是指存储于磁盘的物理文件。一个数据文件中通常存储有一个或多个终端上传的文
件,将多个数据量较小的文件合并写入一个数据文件,以将随机写入的文件转化为顺序写
入。文件类型用于标识文件的存储类型,具体可包括持久性文本、同步副本、临时文本与缓
存副本。持久性文本是需持久性存储的文本,临时文本是临时性存储的文本,同步副本是由
一个文件服务器同步至同处于一个网络的一个或多个文件服务器的文件,缓存副本是由一
个文件服务器从其他网络中的文件服务器下载并缓存在本地的文件。
[0151] 具体地,第二文件服务器接收终端上传的第二文件,确定所接收的第二文件的文件类型,并将第二文件写入该文件类型在本地对应的数据文件中。第二文件服务器根据第
二文件在数据文件中的文件偏移与文件长度,以及数据文件的文件编号生成相应的索引信
息,以便于基于索引信息中的文件编号,能够从第二文件服务器中确定存储有该第二文件
的数据文件,以及基于索引信息中的文件偏移与文件长度,能够从数据文件中定位该第二
文件。文件偏移是指第二文件在数据文件中相对于参考位置的偏移量,参考位置比如数据
文件的起始字符处。文件长度是指第二文件写入数据文件时所占用的字符长度或数量。
[0152] 在一个实施例中,第二文件服务器根据第二文件的文件类型,从本地查找相应文件目录下编号最大的目标数据文件,将第二文件写入目标数据文件中。
[0153] 在一个实施例中,第二文件服务器根据第二文件的文件类型,从本地查找相应文件目录下文件编号最大的目标数据文件,根据目标数据文件中已存储文件的文件大小,确
定该目标数据文件的总文件大小。当总文件大小小于文件存储阈值时,第二文件服务器将
第二文件写入该目标数据文件。当总文件大小大于或等于文件存储阈值时,第二文件服务
器则将第二文件写入下一数据文件中。
[0154] 在一个实施例中,每个数据文件对应一个索引文件,索引文件通过文件标识列表的方式存储已写入相应数据文件的文件标识。写入数据文件的每个文件以起始标识开始,
并以结束标识结束。当数据文件部分损坏后,根据起始标识与相应结束标识能够恢复出数
据文件中未损坏的文件。在每个文件对应的起始标识与结束标识之间还会存储该文件的文
件长度,当记忆起始标识与结束标识确定的文件长度与所存储的文件长度一致时,则能够
基于该起始标识与结束标识恢复出未损坏的相应文件。每个文件的起始标识与结束标识之
间还会存储相应的文件校验码,比如CRC(Cyclic Redundancy Check,循环冗余校验)校验
码。文件服务器从本地的数据文件中读取文件时,会基于相应的文件校验码对读取的文件
进行校验,以防止因磁盘损坏而读取到错误的数据。文件基于读取的文件动态确定相应的
文件校验码,并将动态确定的文件校验码与数据文件中相应存储的文件校验码进行比对,
若不一致则表明读取的文件存在错误。
[0155] 图8为一个实施例中文件服务器中所存储的数据文件与相应索引文件的结构示意图。如图8所示,数据文件中的文件按照写入的先后顺序进行顺序存储,每个文件均以起始
标识开始,以结束标识结束,并在起始标识与结束标识之间存储有文件标识长度、文件长
度、文件标识、文件内容与文件校验码等。数据文件对应的索引文件中存储有数据文件对应
的文件编号,以及已写入数据文件的文件对应的文件标识与相应的文件标识长度。索引文
件中还可包括基于索引文件中的内容确定的文件校验码。
[0156] 图9为一个实施例中文件服务器的内部存储结构示意图。文件服务器针对终端上传的每个文件存储有相应的索引信息,并按照文件类型将终端上传的文件顺序写入相应文
件目录下的数据文件中。如图9所示,文件类型包括持久性文件、同步副本、临时文件与缓存
副本,每个文件类型对应一个文件目录,该文件目录下存储有多个数据文件,每个数据文件
配置有相应的文件存储阈值,如图9所示的2G。值得说明的是,图9所示的文件存储阈值为2G
仅作为示例,并不用于具体限定。而且,由于文件的顺序写入,以及每个文件的文件大小不
一致,每个数据文件对应的总文件大小通常不会与文件存储阈值相等,故图9所示的2G仅用
于表征每个数据文件对应的文件存储阈值,而不是实际存储的总文件大小。
[0157] 在一个实施例中,本地存储的大部分文件都是数据量较小的文件,如果直接按照文件粒度进行存储,一方面会产生大量的小文件消耗大量的索引节点,另一方面在写入时
会产生大量随机IO。通过将数据量较小的文件合并写入数据文件,并针对每个数据文件生
成相应的索引文件,由此每个索引文件对应一个索引节点,能够减少索引节点的数量,而合
并存储方式能够减少随机IO,从而提高文件写入性能。为了保证文件存储与同步的可靠性,
每个数据文件预配置有文件存储阈值,当判定数据文件的总文件大小大于或等于文件存储
阈值时,则会进行数据文件的切换,并将待存储的文件写入下一数据文件中。
[0158] 为了进一步减少随机IO,在数据文件发生切换之前,数据文件对应的索引文件会被存储在内存中,在将终端上传文件写入数据文件后,会对应更新内存中的索引文件,并在
数据文件发生切换时,将相应索引文件固化到磁盘中。由此,当文件服务器或用于存储索引
文件的程序重启后,需要基于每个文件类型下文件编号最大的数据文件中已存储的文件重
建该数据文件对应的索引文件。
[0159] 在一个实施例中,将第二文件按照文件类型写入本地的相应数据文件中之后,上述文件传输方法还包括:根据自身的网络信息生成第二文件的存储信息元数据;存储信息
元数据用于确定存储有第二文件的文件服务器,以及文件服务器所在的网络;将第二文件
的存储信息元数据更新至元数据集群。
[0160] 具体地,第二文件服务器将第二文件按照文件类型写入相应数据文件,以实现第二文件在本地的存储后,生成携带有第二文件服务器的网络信息、且与第二文件对应的存
储信息元数据,并将该存储信息元数据更新至元数据集群,以便于终端在请求下载该第二
文件时,能够基于该存储信息元数据确定存储有该第二文件的文件服务器,以及该文件服
务器所在的网络。其中,第二文件的存储信息元数据包括第二文件的文件标识,存储有第二
文件的文件服务器的网络信息,还可包括第二文件的文件类别标识。
[0161] 上述实施例中,将终端上传的第二文件按照文件类型写入相应数据文件中,以将数据量较小的文件合并成数据量较大的数据文件进行存储,并将文件的随机写入方式转化
为顺序写入方式,以减少文件写入时由于磁盘写入特征所产生的随机IO(随机读写)的数
量,能够提高文件写入效率。
[0162] 在一个实施例中,上述文件传输方法还包括:检测文件类型下文件编号最大的目标数据文件的总文件大小;当总文件大小大于或等于文件存储阈值时,将目标数据文件同
步至从所处的网络的文件服务器集群中选取的至少一个文件服务器;根据至少一个文件服
务器的网络信息,批量更新目标数据文件中的文件在元数据集群中的存储信息元数据。
[0163] 具体地,第二文件服务器分别确定每个文件类型下文件编号最大的目标数据文件,检测每个目标数据文件中已存储文件的总文件大小,并将所检测的总文件大小与预配
置的文件存储阈值进行比较。当判定总文件大小大于或等于文件存储阈值时,第二文件服
务器从自身所处的网络的文件服务器集群中选取至少一个文件服务器,将总文件大小大于
或等于文件存储阈值的目标数据文件同步至所选取的至少一个文件服务器,并在同步成功
后,根据该至少一个文件服务器的网络信息,批量更新该目标数据文件中的每个文件在元
数据集群中对应的存储信息元数据。
[0164] 在一个实施例中,将目标数据文件同步至从所处的网络的文件服务器集群中选取的至少一个文件服务器,包括:从所处的网络的文件服务器集群中选取的至少一个文件服
务器;通过文件类型对应的同步线程,将目标数据文件中的文件依次同步至至少一个文件
服务器;将目标数据文件中已同步文件的文件偏移,记录至同步线程对应的同步记录文件
中;同步记录文件用于在同步过程中断时,基于最近记录的文件偏移继续进行文件同步。
[0165] 文件服务器中的副本同步操作与业务处理是解耦的,副本同步操作由独立的同步线程来执行。每个文件服务器针对每个文件类型开启相应的同步线程,比如分别用于同步
持久性文件与临时文件的两个同步线程。每个同步线程对应配置有用于记录当前同步的目
标数据文件的同步进度的同步记录文件,同步记录文件中可记录有已同步文件在目标数据
文件中的文件偏移,还可记录已同步文件的文件标识。在当前同步的目标数据文件同步完
成后,文件服务器会更新同步记录文件中记录的文件偏移,并在下一次同步过程中将已同
步文件的文件偏移动态记录至该同步记录文件中。
[0166] 在一个实施例中,第二文件服务器将终端上传的第二文件写入磁盘中的相应数据文件中后,及时将第二文件同步至所在网络的文件服务器集群中的至少一个文件服务器。
这样,将第二文件及时同步至其他文件服务器进行多副本存储,能够避免因第二文件服务
器宕机而导致第二文件丢失的问题,从而能够保证文件的存储与传输的可靠性。
[0167] 上述实施例中,当目标数据文件的总文件大小达到文件存储阈值时,以数据文件为粒度进行文件同步,能够避免因频繁同步所需占用的网络带宽资源。进一步地,在目标数
据文件同步完成后,批量更新目标数据文件中每个文件的存储信息元数据,在跨网络更新
存储信息元数据时,通过批量更新能够避免频繁更新所需占用的网络带宽资源,从而能够
提高存储信息元数据的更新效率。
[0168] 应该理解的是,虽然图2、图6与图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这
些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图6与
图7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是
在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必
然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或
者交替地执行。
[0169] 在一个实施例中,如图10所示,提供了一种文件传输装置1000,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:获取模
块1002、确定模块1004、下载模块1006和接收模块1008,其中:
[0170] 获取模块1002,用于获取携带文件标识的文件下载请求;
[0171] 确定模块1004,用于确定存储有文件标识对应的第一文件的第一文件服务器,以及第一文件服务器所在的第一网络;
[0172] 下载模块1006,用于当不处于第一网络时,将文件下载请求发送至所处的第二网络的第二文件服务器,文件下载请求用于指示第二文件服务器从第一文件服务器下载第一
文件,并缓存在本地;
[0173] 接收模块1008,用于接收第二文件服务器反馈的第一文件。
[0174] 在一个实施例中,确定模块1004,还用于根据文件标识从元数据集群获取相应第一文件的存储信息元数据;根据存储信息元数据确定存储有第一文件的第一文件服务器,
以及第一文件服务器所在的第一网络;文件下载请求还用于指示第二文件服务器,根据第
二文件服务器的网络信息,更新元数据集群中第一文件的存储信息元数据。
[0175] 在一个实施例中,上述文件传输装置1000还包括:上传模块;
[0176] 上传模块,用于获取携带待上传的第二文件的文件上传请求;从所处的网络的文件服务器集群中选取用于存储的目标文件服务器;将第二文件上传至目标文件服务器;上
传的第二文件用于指示目标文件服务器在本地存储第二文件,并将第二文件的存储信息元
数据更新至元数据集群;存储信息元数据携带有目标文件服务器的网络信息。
[0177] 在一个实施例中,上传模块,还用于确定第二文件的文件大小;当文件大小大于文件上传阈值时,按照文件上传阈值将第二文件切分成多个文件块;将多个文件块依次上传
至目标文件服务器;依次上传的文件块,用于指示目标文件服务器在接收到多个文件块后,
将由多个文件块组合成的第二文件存储在本地,并将第二文件的存储信息元数据更新至元
数据集群;存储信息元数据携带有目标文件服务器的网络信息。
[0178] 在一个实施例中,下载模块1006,还用于当处于第一网络时,将文件下载请求发送至第一文件服务器;发送的文件下载请求用于指示第一文件服务器,按照文件标识对应的
索引信息读取相应第一文件;接收模块1008,还用于接收第一文件服务器反馈的第一文件。
[0179] 在一个实施例中,如图11所示,提供了一种文件传输装置1100,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:接收模
块1102、下载模块1104、缓存模块1106与反馈模块1108,其中:
[0180] 接收模块1102,用于接收携带文件标识的文件下载请求;
[0181] 下载模块1104,用于当不处于存储有文件标识对应的第一文件的第一网络、且文件下载请求由所处的第二网络的终端发送时,从第一网络中存储有第一文件的第一文件服
务器下载第一文件;
[0182] 缓存模块1106,用于将第一文件缓存在本地;缓存的第一文件用于在再次接收到携带文件标识的文件下载请求时,直接进行反馈;再次接收的文件下载请求由处于第二网
络的终端发送;
[0183] 反馈模块1108,用于将第一文件对应于接收的文件下载请求反馈至相应终端。
[0184] 在一个实施例中,上述文件传输装置1100还包括:写入模块;
[0185] 写入模块,用于接收终端上传的第二文件;将第二文件按照文件类型写入本地的相应数据文件中;生成第二文件对应的索引信息;索引信息用于确定存储有第二文件的数
据文件,并从数据文件中定位第二文件。
[0186] 在一个实施例中,上述文件传输装置1100还包括:同步模块;
[0187] 同步模块,用于检测文件类型下文件编号最大的目标数据文件的总文件大小;当总文件大小大于或等于文件存储阈值时,将目标数据文件同步至从所处的网络的文件服务
器集群中选取的至少一个文件服务器;根据至少一个文件服务器的网络信息,批量更新目
标数据文件中的文件在元数据集群中的存储信息元数据。
[0188] 关于文件传输装置的具体限定可以参见上文中对于文件传输方法的限定,在此不再赘述。上述文件传输装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上
述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储
于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0189] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是第二文件服务器,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器和
网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器
包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数
据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计
算机设备的数据库用于存储文件。该计算机设备的网络接口用于与外部的终端通过网络连
接通信。该计算机程序被处理器执行时以实现一种文件传输方法。
[0190] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显
示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的
存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机
程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计
算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过
WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现
一种文件传输方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计
算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按
键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0191] 本领域技术人员可以理解,图12与图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计
算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部
件布置。
[0192] 在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0193] 在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0194] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机
可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可
包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑
Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器
(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种
形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存
储器(Dynamic Random Access Memory,DRAM)等。
[0195] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛
盾,都应当认为是本说明书记载的范围。
[0196] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来
说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护
范围。因此,本申请专利的保护范围应以所附权利要求为准。