CN109905479B - 文件传输方法和装置 - Google Patents
文件传输方法和装置 Download PDFInfo
- Publication number
- CN109905479B CN109905479B CN201910161769.4A CN201910161769A CN109905479B CN 109905479 B CN109905479 B CN 109905479B CN 201910161769 A CN201910161769 A CN 201910161769A CN 109905479 B CN109905479 B CN 109905479B
- Authority
- CN
- China
- Prior art keywords
- file
- transmission
- fragment
- information
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种文件传输方法,属于互联网技术领域。所述方法包括:检测目标数据库中的至少一条传输状态信息,所述传输状态信息用于表示文件向数据管理服务器的传输状态;当所述至少一条传输状态信息中包括多条目标传输状态信息时,根据所述多条目标传输状态信息所包括的状态持续时长和传输重试次数中至少一项,确定第一文件,所述目标传输状态信息用于表示传输失败且等待传输重试;重新获取所述第一文件,将所述第一文件传输至所述数据管理服务器。通过本申请可以节省文件传输时间、提高文件传输效率。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种文件传输方法和装置。
背景技术
在文件传输中,对于大文件的传输,多采用分片传输,即在终端将文件切分成固定大小的分片,再将分片传输给分片处理服务器,分片处理服务器接收到分片后,再将该文件的全部分片进行合并,以得到完整文件。然后,分片处理服务器根据业务需求,将完整文件发送给数据管理服务器DMP(Data Management Platform,数据管理平台)。然而,在分片处理服务器向DMP传输文件时,可能由于网络故障、数据受损等原因,导致文件传输失败。
在相关技术中,在分片处理服务器向DMP传输文件失败时,分片处理服务器会直接在数据库中写入该文件传输失败的记录,此时,终端获取到文件传输失败的消息后,要对该文件的分片进行重新上传。
在实现本申请的过程中,发明人发现相关技术至少存在以下问题:
对于上述分片处理服务器向DMP的传输文件失败来说,也需要由终端重新发送文件的分片,该过程需要浪费大量时间,导致文件传输的耗时长、效率低。
发明内容
本申请实施例提供了一种文件传输方法,能够解决由于上传数据管理服务器失败导致的文件传输时间长、传输效率低的问题。所述技术方案如下:
第一方面,提供了一种文件传输方法,所述方法包括:
检测目标数据库中的至少一条传输状态信息,所述传输状态信息用于表示文件向数据管理服务器的传输状态;
当所述至少一条传输状态信息中包括多条目标传输状态信息时,根据所述多条目标传输状态信息所包括的状态持续时长和传输重试次数中至少一项,确定第一文件,所述目标传输状态信息用于表示传输失败且等待传输重试;
重新获取所述第一文件,将所述第一文件传输至所述数据管理服务器。
可选的,所述重新获取所述第一文件包括:
从缓存中查询所述第一文件;
如果查询到所述第一文件,则获取所述第一文件;
如果未查询到所述第一文件,则从服务器组中的多个分片处理服务器中基于所述第一文件的文件上传信息,获取所述第一文件的各个分片,对所述第一文件的各个分片进行合并,得到所述第一文件,其中,所述文件上传信息至少包括有文件标识信息和账户信息。
可选的,所述当所述至少一条传输状态信息中包括多条目标传输状态信息时,根据所述多条目标传输状态信息所包括的状态持续时长和传输重试次数中的至少一项,确定第一文件,所述目标传输状态信息用于表示传输失败且等待传输重试,包括:
基于每条目标传输状态信息所包括的状态持续时长和传输重试次数,以及目标持续时长和目标传输重试次数,确定所述多条目标传输状态信息对应文件的权重;
基于所述多条目标传输状态信息对应文件的权重,确定第一文件。
可选的,所述基于所述多条目标传输状态信息对应文件的权重,确定第一文件,包括:
将所述多条目标传输状态信息对应文件的权重中的最大权重所对应的文件,确定为第一文件。
可选的,所述当所述至少一条传输状态信息中包括多条目标传输状态信息时,根据所述多条目标传输状态信息所包括的状态持续时长和传输重试次数中的至少一项,确定第一文件,所述目标传输状态信息用于表示传输失败且等待传输重试,包括:
当所述至少一条传输状态信息中包括多条目标传输状态信息时,确定出所述传输重试次数最少的文件;
如果所述传输重试次数最少的文件数为1,则将所述传输重试次数最少的文件,确定为第一文件;
如果所述传输重试次数最少的文件数大于1,则在所述传输重试次数最少的文件中,将所述状态持续时长最长的文件,确定为第一文件。
可选的,所述当所述至少一条传输状态信息中包括多条目标传输状态信息时,根据所述多条目标传输状态信息所包括的状态持续时长和传输重试次数中的至少一项,确定第一文件,所述目标传输状态信息用于表示传输失败且等待传输重试,包括:
当所述至少一条传输状态信息中包括多条目标传输状态信息时,确定出状态持续时长最长的文件;
如果所述状态持续时长最长的文件数为1,则将所述状态持续时长最长的文件,确定为第一文件;
如果所述状态持续时长最长的文件数大于1,则在所述状态持续时长最长的文件中,将所述传输重试次数最少的文件,确定为第一文件。
可选的,所述方法还包括:
如果所述第一文件成功传输至所述数据管理服务器,则将所述第一文件和所述第一文件的各个分片删除。
可选的,所述方法还包括:
接收终端发送的第二文件的分片检查请求,其中,所述分片检查请求携带所述终端的账户信息和所述第二文件的文件标识信息;
基于所述账户信息和所述第二文件的文件标识信息,确定出所述第二文件的第一分片信息,所述第一分片信息为所述终端已上传的所述第二文件的分片的分片信息;
将所述第一分片信息发送给所述终端。
可选的,所述方法还包括:
接收所述终端发送的所述第二文件的分片传输请求,其中,所述分片传输请求携带所述终端的账户信息、所述第二文件的文件标识信息、所述第二文件的分片总数、第二分片和第二分片信息,其中,所述第二分片为所述第二文件的分片中除所述第一分片之外的分片;
基于所述账户信息、所述第二文件的文件标识信息,向服务器组中的各个分片处理服务器查询各自接收到的所述第二文件的分片数;
确定所述分片数之和为所述第二文件的分片总数,则确定已接收到所述第二文件的全部分片,生成所述第二文件的文件上传信息。
第二方面,提供了一种文件传输装置,所述装置包括:
检测模块,用于检测目标数据库中的至少一条传输状态信息,所述传输状态信息用于表示文件向数据管理服务器的传输状态;
第一确定模块,用于当所述至少一条传输状态信息中包括多条目标传输状态信息时,根据所述多条目标传输状态信息所包括的状态持续时长和传输重试次数中至少一项,确定第一文件,所述目标传输状态信息用于表示传输失败且等待传输重试;
获取模块,用于重新获取所述第一文件,将所述第一文件传输至所述数据管理服务器。
可选的,所述获取模块,用于:
从缓存中查询所述第一文件;
如果查询到所述第一文件,则获取所述第一文件;
如果未查询到所述第一文件,则从服务器组中的多个分片处理服务器中基于所述第一文件的文件上传信息,获取所述第一文件的各个分片,对所述第一文件的各个分片进行合并,得到所述第一文件,其中,所述文件上传信息至少包括有文件标识信息和账户信息。
可选的,所述第一确定模块,用于:
基于每条目标传输状态信息所包括的状态持续时长和传输重试次数,以及目标持续时长和目标传输重试次数,确定所述多条目标传输状态信息对应文件的权重;
基于所述多条目标传输状态信息对应文件的权重,确定第一文件。
可选的,所述第一确定模块,用于:
将所述多条目标传输状态信息对应文件的权重中的最大权重所对应的文件,确定为第一文件。
可选的,所述第一确定模块,用于:
当所述至少一条传输状态信息中包括多条目标传输状态信息时,确定出所述传输重试次数最少的文件;
如果所述传输重试次数最少的文件数为1,则将所述传输重试次数最少的文件,确定为第一文件;
如果所述传输重试次数最少的文件数大于1,则在所述传输重试次数最少的文件中,将所述状态持续时长最长的文件,确定为第一文件。
可选的,所述第一确定模块,用于:
当所述至少一条传输状态信息中包括多条目标传输状态信息时,确定出状态持续时长最长的文件;
如果所述状态持续时长最长的文件数为1,则将所述状态持续时长最长的文件,确定为第一文件;
如果所述状态持续时长最长的文件数大于1,则在所述状态持续时长最长的文件中,将所述传输重试次数最少的文件,确定为第一文件。
可选的,所述装置还包括:
删除模块,用于如果所述第一文件成功传输至所述数据管理服务器,则将所述第一文件和所述第一文件的各个分片删除。
可选的,所述装置还包括:
第一接收模块,用于接收终端发送的第二文件的分片检查请求,其中,所述分片检查请求携带所述终端的账户信息和所述第二文件的文件标识信息;
第二确定模块,用于基于所述账户信息和所述第二文件的文件标识信息,确定出所述第二文件的第一分片信息,所述第一分片信息为所述终端已上传的所述第二文件的分片的分片信息;
发送模块,用于将所述第一分片信息发送给所述终端。
可选的,所述装置还包括:
第二接收模块,用于接收所述终端发送的所述第二文件的分片传输请求,其中,所述分片传输请求携带所述终端的账户信息、所述第二文件的文件标识信息、所述第二文件的分片总数、第二分片和第二分片信息,其中,所述第二分片为所述第二文件的分片中除所述第一分片之外的分片;
查询模块,用于基于所述账户信息、所述第二文件的文件标识信息,向服务器组中的各个分片处理服务器查询各自接收到的所述第二文件的分片数;
生成模块,用于确定所述分片数之和为所述第二文件的分片总数,则确定已接收到所述第二文件的全部分片,生成所述第二文件的文件上传信息。
第三方面,提供了一种服务器,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上述第一方面所述的显示列表的方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上述第一方面所述的显示列表的方法。
本申请实施例提供的技术方案带来的有益效果是:
通过检测目标数据库中的至少一条传输状态信息,如果该至少一条传输状态信息包括多条目标传输状态信息。然后根据多条目标传输状态信息所包括的状态持续时长和传输重试次数中至少一项,确定出第一文件,该第一文件为传输失败等待重试的文件。然后获取该第一文件,将其传输至数据管理服务器。这样,传输失败的文件不是一定要终端重新上传文件的的分片,可以减少文件传输时长,提高效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请实施例提供的一种文件传输方法的实施环境示意图;
图1B是本申请实施例提供的一种文件传输方法的实施环境示意图;
图2是本申请实施例提供的一种文件传输的方法流程图;
图3是本申请实施例提供的一种文件传输的方法流程图;
图4是本申请实施例提供的一种文件传输的方法流程图;
图5是本申请实施例提供的一种文件传输的装置示意图;
图6是本申请实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1A是本申请实施例提供的一种文件传输方法的实施环境示意图。参见图1,该实施环境中包括至少一个终端101、多个服务器102以及至少一个转发服务器103。
其中,至少一个终端101上可以安装有服务器102提供服务的应用客户端,终端101上的用户可以通过该应用客户端实现例如大文件传输、业务定制等功能。
多个服务器102可以包括由多个分片处理服务器组成的服务器集群和数据管理服务器,其中,分片处理服务器可以用于在接收到终端101所上传的分片后进行存储、合并以及上传等步骤,数据管理服务器可以用于在接收到合并后的文件后对文件进行分析,并基于分析结果,为终端提供业务服务。
该至少一个转发服务器103配置有CGI(Common Gateway Interface,通用网关接口),用于为终端101和分片处理服务器提供消息转发服务。
上述实施环境中还可以包括用于维护文件上传情况的目标数据库,该目标数据库可以维护用于表示终端的文件上传情况的文件上传信息和/或分片处理服务器的文件传输情况的传输状态信息等。
图2是本申请实施例提供的一种文件传输方法的流程图,该方法应用于上述实施环境,该方法仅以分片处理服务器向数据管理服务器进行文件传输时传输失败后的处理流程为例进行说明,包括以下步骤。
步骤201,分片处理服务器检测目标数据库中的至少一条传输状态信息。
在本申请实施例中,服务器集群中的各个分片处理服务器会基于向数据管理服务器进行文件传输的情况,向目标数据库中存储传输状态信息,任一分片处理服务器可以周期性在目标数据库中进行传输状态信息的检测,以确定需重试的文件。
在一种可能实施方式中,该分片处理服务器每过第一预设时长,检测目标数据库中已存储的传输状态信息,根据传输状态信息中的传输状态标识,确定出有目标传输状态标识的目标传输状态信息。其中,传输状态标识用于表示传输状态,例如该传输状态标识可以包括“成功”、“待重试”和“失败”,除此之外,还可以用二进制数表示“00”表示成功,“01”表示待重试,“11”标识失败,目标传输状态标识即为表示文件处于传输失败等待重试状态的标识,如上述的“待重试”、“01”,本申请实施例对具体采用何种形式来表示传输状态表示不做限定。
步骤202,当该至少一条传输状态信息中包括多条目标传输状态信息时,该分片处理服务器根据该多条目标传输状态信息所对应的状态持续时长和传输重试次数中至少一项,确定第一文件。
其中,当分片处理服务器获取到任一条目标传输状态信息时,可以根据该目标传输状态信息中所包括的该文件的上传时间点(即终端上传至分片处理服务器的时间点)和当前系统时间,获取该目标传输状态信息所对应的状态持续时长。该目标传输状态信息可以根据对应文件的传输重试次数进行更新,每重试失败一次,该传输重试次数加1。
在本申请实施例中,具体确定该第一文件的方法可以有多种,以下列举其中三种进行说明。
方法一,基于每条目标传输状态信息所包括的状态持续时长和传输重试次数,以及目标持续时长和目标重试次数,确定多条目标传输状态信息对应文件的权重,基于多条目标传输状态信息对应文件的权重,确定第一文件。
基于上述方法所确定的权重可以有以下性质:文件的传输重试次数越少、等待时长越长,其权重越大,文件的传输重试次数越多,等待时长越短,其权重越小,基于上述权重来确定第一文件,可以在保证文件传输功能的性能的同时,保证重试的成功率。
例如,可以根据如下函数确定目标传输状态信息对应文件的权重:
Weight=max_tries(1+timelap/max_time)-count_tries
其中,Weight为目标传输状态信息对应文件的权重,/max_time为目标持续时长即允许处于传输失败等待传输重试状态的最大时长,max_tries为目标重试次数即允许传输重试的最大次数,timelap为处于传输失败等待传输重试状态的持续时长,count_tries为传输重试次数。
在一种实施方式中,可以将多条目标传输状态信息对应文件中权重最大的文件,确定为第一文件,当然,如果该分片处理服务器可以并行进行传输重试,则可以采用其他方式来确定多个第一文件,以提高重试效率,例如,可以获取权重位于前预设位的多个文件来作为第一文件,以执行重试流程,本申请实施例对上述确定第一文件的具体过程不做限定。
方法二,确定出该多条目标传输状态信息对应的文件中传输重试次数最少的文件,如果该传输重试次数最少的文件数为1,则将该传输重试次数最少的文件,确定为第一文件,如果该传输重试次数最少的文件数大于1,则在该传输重试次数最少的文件中,将状态持续时长最长的文件,确定为第一文件。
基于上述方法二来确定第一文件,可以优先保证重试的成功率,其次保证文件传输功能的性能。
方法三,确定出该多条目标传输状态信息对应的文件中状态持续时长最长的文件,如果所述状态持续时长最长的文件数为1,则将该状态持续时长最长的文件,确定为第一文件,如果该状态持续时长最长的文件数大于1,则在该状态持续时长最长的文件中,将传输重试次数最少的文件,确定为第一文件。
基于上述方法三来确定第一文件,可以优先保证文件传输功能的性能,其次保证重试成功率。
步骤203,该分片处理服务器重新获取第一文件,将该第一文件传输至数据管理服务器。
分片处理服务器确定出第一文件后,可以从目标数据库中获取该第一文件的文件上传信息,根据该文件上传信息中的文件标识信息和账户信息,从本地缓存中查询该第一文件,如果有,则可以将该第一文件传输至数据管理服务器。如果没有,则从本地磁盘中获取该第一文件的分片,当该第一文件的分片不是第一文件的全部分片,可以通过与服务器集群中其他分片处理服务器之间的文件传输,获取该第一文件的其他分片,基于获取到的分片进行合并,得到第一文件。
其中,通过与服务器集群中其他分片处理服务器之间的文件传输,获取该第一文件的其他分片的具体过程可以包括:向服务器集群的其他分片处理服务器发送分片获取请求,该分片获取请求携带该第一文件的文件标识信息和账户信息,当任一分片处理服务器接收到该分片获取请求时,根据该第一文件的文件标识信息和账户信息,向该分片处理服务器返回第一文件的其他分片。通过从服务器集群中其他分片处理服务器上获取第一文件的分片,从而可以实现重新获取第一文件的目的。
在一种可能实施方式中,还可以查询本地磁盘中存储的该第一文件的分片数,当该分片数不小于该第一文件的分片总数除以分片处理服务器个数时,可以执行通过上述与服务器集群中其他分片处理服务器之间的文件传输,获取该第一文件的其他分片,而当该分片数小于该第一文件的分片总数除以分片处理服务器个数时,则该分片处理服务器可以放弃对该第一文件的传输重试,以避免由于数据传输量过大而导致的时延,也能够避免服务器集群中所进行的数据传输量过大而对服务器集群的正常运行造成影响。
步骤204,该分片处理服务器在第一文件传输至数据管理服务器成功之后,将该第一文件删除。
在步骤203中重新获取到第一文件后,可以存储在该分片处理服务器的本地缓存中,为了减少存储空间的占用,可以通过步骤204的过程从本地缓存中删除该第一文件。
本申请实施例提供的方法,通过检测目标数据库中的至少一条传输状态信息,如果该至少一条传输状态信息包括多条目标传输状态信息。然后根据多条目标传输状态信息所包括的状态持续时长和传输重试次数中至少一项,确定出第一文件,该第一文件为传输失败等待重试的文件。然后获取该第一文件,将其传输至数据管理服务器。在上述过程中,不仅提供了从分片处理服务器到数据管理服务器传输失败时如何进行传输重试的方法,而且,还同时考虑了各个文件处于传输失败状态的状态持续时长和/或已经进行过传输重试的次数,从而能够确定出当前急需传输重试的文件,可以在提高文件传输的效率,并且减少文件传输时长。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
上述实施例是以某个文件传输失败后的重试过程为例进行说明的,而对于服务器集群来说,还会为终端提供文件的分片上传服务,以及基于接收到的分片进行合并和向数据管理服务器进行传输的服务,下面基于图3所示的流程对该过程进行介绍:
步骤301,终端向服务器集群发送第二文件的分片检查请求。
其中,分片检查请求携带该终端的账户信息和第二文件的文件标识信息。
在实施中,当终端有文件上传需求时,先确定出需要上传的第二文件的文件标识信息,该文件标识信息可以为md5值。再将第二文件切分成相同大小的分片,例如,每个20M。然后,终端向服务器集群发送第二文件的分片检查请求。此处,终端可以先将该分片检查请求发送给转发服务器,然后由转发服务器确定出该分片检查请求要转发给哪个分片处理服务器,再进行转发。
转发服务器确定分片处理服务器的方法可以有多种。例如,转发服务器的CGI可以对该分片检查请求中携带的终端的账户信息,使用哈希一致性算法确定出该分片检查请求要转发给服务器集群中哪个分片处理服务器,或者CGI还可以随机将该分片检查请求转发给服务器集群中的任一分片处理服务器。
步骤302,服务器集群中的任一分片处理服务器接收到终端发送的第二文件的分片检查请求后,基于该第二分片的分片检测请求中携带的账户信息和该第二文件的文件标识信息,确定出该第二文件的第一分片信息。
在实施中,该分片处理服务器根据第二文件的文件标识信息和账户信息,向服务器集群中的各个分片处理服务器查询其接收到的该第二文件的第一分片信息,以获知服务器集群中是否已经接收到第二文件的分片或者已经接收到第二文件的哪些分片。该第一分片信息可以包括有分片标识信息、分片大小、分片处理服务器接收到该第一分片的时间和接收到该第一分片的服务器地址等信息。
步骤303,该分片处理服务器将该第一分片信息发送给该终端。
在一种可能实施方式中,分片处理服务器可以以列表的方式将第一分片信息发送CGI,再由CGI转发给终端。
步骤304,当终端接收到第一分片信息后,获取该第二文件的第二分片。
在实施中,终端在接收到上述第二文件的第一分片信息后,可以确定出该第二文件的第一分片已经上传到了服务器集群,则这部分分片无需再次上传。终端可以将该第二文件的分片中除第一分片之外的第二分片上传到服务器集群。
其中,这里的第二分片中可能会有不完整的分片,该不完整的分片可能是由于以下情况出现的。例如,一个分片大小例如为20M,该分片已经被执行过上传到服务器集群的操作,但是由于网络波动等原因,导致该分片只有15M被上传到了服务器集群中,那么,服务器集群在发送给终端的第一分片信息中也包含该15M的分片的分片信息,则终端再次上传分片时候,对于这个分片,无需再上传完整的分片,只要将其余的5M作为第二分片再上传即可,这5M的第二分片与15M的第一分片的分片标识信息相同。确定出本次需要上传的第二分片后,向服务器集群发送该第二文件的分片传输请求。
步骤305,终端向该服务器集群发送第二文件的分片传输请求。
其中,分片传输请求用于指示第二文件还未上传的第二分片,该分片传输请求携带有该终端的账户信息、该第二文件的文件标识信息、第二文件的分片总数、第二分片和第二分片信息,第二分片为第二文件的分片中除第一分片之外的分片。
同样的,终端可以先将分片传输请求发送给CGI,CGI先确定该分片传输请求要转发给哪个分片处理服务器,再进行转发。CGI确定分片处理服务器的方法与上述相似,在此不做赘述。需要说明的是,对于上述不完整的第二分片,可以在发送分片传输请求时,携带该不完整的第二分片对应的第一分片所在的分片处理服务器地址,这样,CGI可以直接将该不完整的第二分片,上传到其对应的第一分片所在的分片处理服务器。经过CGI的转发,服务器集群中至少有一个分片处理服务器会接收到该第二文件的分片传输请求。
步骤306,服务器集群中的至少一个分片处理服务器接收到第二文件的分片传输请求后,基于该第二文件的分片传输请求中携带的账户信息和该第二文件的文件标识信息,向服务器集群中的各个分片处理服务器查询各自接收到的该第二文件的分片数。
在实施中,服务器集群中的任一分片处理服务器都有可能会接收到该第二文件的分片传输请求,因此,该分片处理服务器可以发起查询,以获知当前服务器集群中所接收到的第二文件的分片数,从而确定第二文件的分片是否已经全部上传。
步骤307,当该至少一个分片处理服务器确定该分片数之和为该第二文件的分片总数,则确定已接收到该第二文件的全部分片,生成该第二文件的文件上传信息。
当服务器集群中的任一分片处理服务器接收到其他分片处理服务器返回的分片数时,将分片数相加,判断分片数之和是否等于该第二文件的分片总数。如果等于,则确定该第二文件的分片已经全部上传。然后,在消息队列和目标数据库中写入该第二文件的文件上传信息,并且,在目标数据库中的文件上传信息处对应写入文件的传输状态信息,该文件上传信息至少包括有文件标识信息和账户信息,传输状态信息用于指示文件从分片处理服务器传输到数据管理服务器过程的状态。对于还未向数据管理服务器传输的文件来说,其传输状态信息可以为空,或者还可以为未传输,本申请实施例对此不做限定。
通过上述步骤301至307所提供的文件上传过程,使得文件的上传支持断点续传,避免重复数据上传,大大提高了文件上传的效率。
上述过程描述了一个文件从终端到分片处理服务器的上传过程,该过程可以与分片处理服务器向数据管理服务器的文件传输过程异步进行,也即是,分片处理服务器可以通过从消息队列或目标数据库中所存储的文件上传信息等,来进行文件合并以及后续过程,如图4所示,该过程可以包括如下步骤。
步骤401,服务器集群中的任一分片处理服务器获取第三文件的文件上传信息,基于文件上传信息中的文件标识信息和账户信息,从服务器集群中的各分片处理服务器中,获取该第三文件的各个分片。
在实施中,在服务器集群中的各分片处理服务器每过第二预设时长可以从消息队列中获取一个文件上传信息,并根据文件上传信息中的文件标识信息和账户信息,从服务器集群中的各个分片处理服务器中获取该文件上传信息对应的文件的分片。
步骤402,该分片处理服务器将获取到的该第三文件的分片进行合并,将合并成功后的文件传输到数据管理服务器。
分片处理服务器将获取到的该文件的分片进行合并,得到该文件对应的临时文件,确定该临时文件的文件标识信息,如md5值,判断该临时文件的文件标识信息与上述文件上传信息中的文件标识信息是否一致。如果一致,则认为该第三文件的分片合并成功,将该临时文件传输至数据管理服务器。如果传输成功,则将该第三文件在目标数据库中的传输状态信息中添加用于指示第三文件传输成功的传输状态标识。如果传输至数据管理服务器失败,则该分片处理服务器可以对该第三文件进行重新传输,重新传输预设次数后,如果仍然传输失败,则将该第三文件在目标数据库中的传输状态信息中添加指示文件传输失败等待重试的目标传输状态标识。如果该临时文件的文件标识信息与上述文件上传信息中的文件标识信息不一致,则认为分片受损,则在该第三文件在目标数据库中的传输状态信息中添加指示文件传输失败的目标传输状态标识,表示该第三文件的分片需要重新上传。
在上述步骤401至402的文件合并等过程中,可以实现自动检测分片上传的完整性,并通过异步来实现分片文件的合并,提高文件上传的稳定性。
下面对上述方法应用在号码包系统中的情况进行说明:
对于上述步骤201至步骤204所提供的分片处理服务器向数据管理服务器进行文件传输时传输失败后的处理方法,应用在号码包系统可以如下:号码包服务器检测目标数据库至少一条传输状态信息。如果该至少一条传输状态信息中包括有多条目标传输状态信息时,该号码包服务器可以根据该多条目标传输状态信息所对应的状态持续时长和传输重试次数中至少一项,确定第一号码包。然后,该号码包处理服务器重新获取第一号码包,将该第一号码包传输至DMP。由于一个号码包通常可以达到几G,如果传输DMP失败就要终端重新上传的话,会浪费大量时间,通过该方法可以有效的减少号码包传输时间,提供效率。
对于上述步骤301至步骤307所提到的上述方法中的服务器集群还会为终端提供文件的分片上传服务,以及基于接收到的分片进行合并和向数据管理服务器进行传输的服务,同样的号码包服务器所组成的服务器集群,也可以提供以上两种服务,具体流程如下:广告主登录终端上的公众平台,选取要上传至DMP的号码包,并向号码包服务器所组成的服务器集群发送号码包的分片检测请求,任一号码包处理服务器接收到该终端发送的号码包的分片检查请求后,基于该号码包的分片检测请求中携带的公众平台登录的账户信息和该号码包标识信息,确定出号码包的第一分片信息,再将该第一分片信息返回给终端。终端接收到该第一分片信息后,获取该号码包的第二分片。终端向该服务器集群发送号码包的分片传输请求。服务器集群中的至少一个号码包处理服务器接收到号码包的分片传输请求后,基于该号码包的分片传输请求中携带的账户信息和该号码包标识信息,向服务器集群中的各个号码包处理服务器查询各自接收到的该号码包的分片数。当该至少一个分片处理服务器确定该分片数之和为该第二文件的分片总数,则确定已接收到该号码包的全部分片,生成该号码包的文件上传信息。向服务器集群中的各个号码包处理服务器查询各自接收到的该号码包的分片数。
对于上述步骤401至步骤402所提供的文件合并及上传至数据管理服务器的方法,应用在号码包系统,可以如下:号码服务器所组成的服务器集群中的任一号码包处理服务器获取号码包的文件上传信息,基于文件上传信息中的号码包标识信息和账户信息,从服务器集群中的各号码包处理服务器中,获取该号码包的各个分片。该号码包处理服务器将获取到的该号码包的分片进行合并,将合并成功后的号码包传输到DMP。
基于相同的技术构思,本申请实施例还提供了一种文件传输的装置,该装置可以为上述实施例中的服务器,如图5所示,该装置包括:检测模块501、第一确定模块502和获取模块503,其中:
检测模块501,用于检测目标数据库中的至少一条传输状态信息,所述传输状态信息用于表示文件向数据管理服务器的传输状态;
第一确定模块502,用于当所述至少一条传输状态信息中包括多条目标传输状态信息时,根据所述多条目标传输状态信息所包括的状态持续时长和传输重试次数中至少一项,确定第一文件,所述目标传输状态信息用于表示传输失败且等待传输重试;
获取模块503,用于重新获取所述第一文件,将所述第一文件传输至所述数据管理服务器。
可选的,所述获取模块501,用于:
从缓存中查询所述第一文件;
如果查询到所述第一文件,则获取所述第一文件;
如果未查询到所述第一文件,则从服务器组中的多个分片处理服务器中基于所述第一文件的文件上传信息,获取所述第一文件的各个分片,对所述第一文件的各个分片进行合并,得到所述第一文件,其中,所述文件上传信息至少包括有文件标识信息和账户信息。
可选的,所述第一确定模块502,用于:
基于每条目标传输状态信息所包括的状态持续时长和传输重试次数,以及目标持续时长和目标传输重试次数,确定所述多条目标传输状态信息对应文件的权重;
基于所述多条目标传输状态信息对应文件的权重,确定第一文件。
可选的,所述第一确定模块502,用于:
将所述多条目标传输状态信息对应文件的权重中的最大权重所对应的文件,确定为第一文件。
可选的,所述第一确定模块502,用于:
当所述至少一条传输状态信息中包括多条目标传输状态信息时,确定出所述传输重试次数最少的文件;
如果所述传输重试次数最少的文件数为1,则将所述传输重试次数最少的文件,确定为第一文件;
如果所述传输重试次数最少的文件数大于1,则在所述传输重试次数最少的文件中,将所述状态持续时长最长的文件,确定为第一文件。
可选的,所述第一确定模块502,用于:
当所述至少一条传输状态信息中包括多条目标传输状态信息时,确定出状态持续时长最长的文件;
如果所述状态持续时长最长的文件数为1,则将所述状态持续时长最长的文件,确定为第一文件;
如果所述状态持续时长最长的文件数大于1,则在所述状态持续时长最长的文件中,将所述传输重试次数最少的文件,确定为第一文件。
可选的,所述装置还包括:
删除模块,用于如果所述第一文件成功传输至所述数据管理服务器,则将所述第一文件和所述第一文件的各个分片删除。
可选的,所述装置还包括:
第一接收模块,用于接收终端发送的第二文件的分片检查请求,其中,所述分片检查请求携带所述终端的账户信息和所述第二文件的文件标识信息;
第二确定模块,用于基于所述账户信息和所述第二文件的文件标识信息,确定出所述第二文件的第一分片信息,所述第一分片信息为所述终端已上传的所述第二文件的分片的分片信息;
发送模块,用于将所述第一分片信息发送给所述终端。
可选的,所述装置还包括:
第二接收模块,用于接收所述终端发送的所述第二文件的分片传输请求,其中,所述分片传输请求携带所述终端的账户信息、所述第二文件的文件标识信息、所述第二文件的分片总数、第二分片和第二分片信息,其中,所述第二分片为所述第二文件的分片中除所述第一分片之外的分片;
查询模块,用于基于所述账户信息、所述第二文件的文件标识信息,向服务器组中的各个分片处理服务器查询各自接收到的所述第二文件的分片数;
生成模块,用于确定所述分片数之和为所述第二文件的分片总数,则确定已接收到所述第二文件的全部分片,生成所述第二文件的文件上传信息。
需要说明的是:上述实施例提供的文件传输的装置在进行文件传输时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的文件传输的方法和文件传输的装置实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是本申请实施例提供的一种服务器的结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)601和一个或一个以上的存储器602,其中,所述存储器602中存储有至少一条指令,所述至少一条指令由所述处理器601加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成下述实施例中文件传输方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (7)
1.一种文件传输方法,其特征在于,所述方法包括:
检测目标数据库中的至少一条传输状态信息,所述传输状态信息用于表示文件向数据管理服务器的传输状态;
当所述至少一条传输状态信息中包括多条目标传输状态信息时,根据函数:目标传输状态信息对应文件的权重=目标重试次数(1+处于传输失败等待传输重试状态的持续时长/目标持续时长)-传输重试次数,确定所述多条目标传输状态信息对应文件的权重,基于所述多条目标传输状态信息对应文件的权重,确定第一文件,所述目标传输状态信息用于表示传输失败且等待传输重试;
重新获取所述第一文件,将所述第一文件传输至所述数据管理服务器。
2.根据权利要求1所述的方法,其特征在于,所述重新获取所述第一文件包括:
从缓存中查询所述第一文件;
如果查询到所述第一文件,则获取所述第一文件;
如果未查询到所述第一文件,则从服务器集群中的多个分片处理服务器中基于所述第一文件的文件上传信息,获取所述第一文件的各个分片,对所述第一文件的各个分片进行合并,得到所述第一文件,其中,所述文件上传信息至少包括有文件标识信息和账户信息。
3.根据权利要求1所述的方法,其特征在于,所述基于所述多条目标传输状态信息对应文件的权重,确定第一文件,包括:
将所述多条目标传输状态信息对应文件的权重中的最大权重所对应的文件,确定为第一文件。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
如果所述第一文件成功传输至所述数据管理服务器,则将所述第一文件和所述第一文件的各个分片删除。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
接收终端发送的第二文件的分片检查请求,其中,所述分片检查请求携带所述终端的账户信息和所述第二文件的文件标识信息;
基于所述账户信息和所述第二文件的文件标识信息,确定出所述第二文件的第一分片信息,所述第一分片信息为所述终端已上传的所述第二文件的分片的分片信息;
将所述第一分片信息发送给所述终端。
6.一种文件传输装置,其特征在于,所述装置包括:
检测模块,用于检测目标数据库中的至少一条传输状态信息,所述传输状态信息用于表示文件向数据管理服务器的传输状态;
第一确定模块,用于当所述至少一条传输状态信息中包括多条目标传输状态信息时,根据函数:目标传输状态信息对应文件的权重=目标重试次数(1+处于传输失败等待传输重试状态的持续时长/目标持续时长)-传输重试次数,确定所述多条目标传输状态信息对应文件的权重,基于所述多条目标传输状态信息对应文件的权重,确定第一文件,所述目标传输状态信息用于表示传输失败且等待传输重试;
获取模块,用于重新获取所述第一文件,将所述第一文件传输至所述数据管理服务器。
7.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至5任一所述的文件传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910161769.4A CN109905479B (zh) | 2019-03-04 | 2019-03-04 | 文件传输方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910161769.4A CN109905479B (zh) | 2019-03-04 | 2019-03-04 | 文件传输方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109905479A CN109905479A (zh) | 2019-06-18 |
CN109905479B true CN109905479B (zh) | 2022-06-07 |
Family
ID=66946428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910161769.4A Active CN109905479B (zh) | 2019-03-04 | 2019-03-04 | 文件传输方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109905479B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111404990B (zh) * | 2020-02-14 | 2023-06-02 | Oppo(重庆)智能科技有限公司 | 文件传输方法、装置、客户端及存储介质 |
CN113645304B (zh) * | 2021-08-13 | 2023-06-16 | 恒生电子股份有限公司 | 数据服务处理方法及相关设备 |
CN113568884B (zh) * | 2021-09-26 | 2021-12-10 | 武汉四通信息服务有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
CN113868096B (zh) * | 2021-10-15 | 2024-05-17 | 中国建设银行股份有限公司 | 异步数据传输的监控方法及装置、电子设备、存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423120A (zh) * | 2017-04-13 | 2017-12-01 | 阿里巴巴集团控股有限公司 | 任务调度方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100544245C (zh) * | 2006-02-10 | 2009-09-23 | 中兴通讯股份有限公司 | 一种基于重传次数的harq协议的重传调度方法 |
CN101197643A (zh) * | 2006-12-07 | 2008-06-11 | 大唐移动通信设备有限公司 | 一种数据上传和接收的方法、及终端、基站和系统 |
CN101908953A (zh) * | 2009-06-02 | 2010-12-08 | 中兴通讯股份有限公司 | 一种对重传数据进行调度的方法及装置 |
CN102013962B (zh) * | 2009-09-04 | 2014-07-30 | 华为技术有限公司 | 数据传输方法及设备 |
CN104168093B (zh) * | 2013-05-20 | 2017-07-25 | 腾讯科技(深圳)有限公司 | 一种文件传输方法及装置 |
CN107622064A (zh) * | 2016-07-14 | 2018-01-23 | 中国移动通信集团重庆有限公司 | 一种数据读取方法及系统 |
CN107634930B (zh) * | 2016-07-18 | 2020-04-03 | 华为技术有限公司 | 一种媒体数据的获取方法和装置 |
CN107147481A (zh) * | 2017-07-19 | 2017-09-08 | 北京数码视讯科技股份有限公司 | 丢包重传方法、装置及电子设备 |
CN108574735B (zh) * | 2018-04-11 | 2022-07-12 | 柴森森 | 数据处理方法、终端及计算机可读存储介质 |
-
2019
- 2019-03-04 CN CN201910161769.4A patent/CN109905479B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423120A (zh) * | 2017-04-13 | 2017-12-01 | 阿里巴巴集团控股有限公司 | 任务调度方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109905479A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109905479B (zh) | 文件传输方法和装置 | |
US10909110B1 (en) | Data retrieval from a distributed data storage system | |
US20150237113A1 (en) | Method and system for file transmission | |
CN103581230B (zh) | 文件传输系统和方法、接收端、发送端 | |
CN108683668B (zh) | 内容分发网络中的资源校验方法、装置、存储介质及设备 | |
EP3780438B1 (en) | Data transmission method and related device | |
CN109873855B (zh) | 一种基于区块链网络的资源获取方法和系统 | |
CN103248645A (zh) | Bt离线数据下载系统及方法 | |
CN111159233B (zh) | 分布式缓存方法、系统、计算机设备以及存储介质 | |
CN111416823A (zh) | 一种数据传输方法和装置 | |
CN107580021A (zh) | 一种文件传输的方法和装置 | |
EP3803616A1 (en) | Change notifications for object storage | |
CN112732756A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN112035405A (zh) | 一种文档转码方法、装置、调度服务器和存储介质 | |
CN105740435A (zh) | 一种基于分布式的文档在线预览设计方法 | |
CN105450513A (zh) | 归档邮件附件的方法和云存储服务器 | |
CN111770160A (zh) | 边缘节点装置、云端节点装置及物联网平台 | |
CN111245949A (zh) | 文件归档传输方法、装置及设备 | |
CN111131498B (zh) | Url信息更新方法、缓存服务器、设备及存储介质 | |
CN111586438B (zh) | 一种业务数据的处理方法、装置及系统 | |
US20160085638A1 (en) | Computer system and method of identifying a failure | |
CN114466004A (zh) | 一种文件传输方法、系统、电子设备及存储介质 | |
CN112395296B (zh) | 一种大数据归档方法、装置、设备及存储介质 | |
CN110581873A (zh) | 一种跨集群重定向方法及监控服务器 | |
CN112688905B (zh) | 数据传输方法、装置、客户端、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |