CN111770153A - 一种对象下载方法、装置及电子设备和存储介质 - Google Patents
一种对象下载方法、装置及电子设备和存储介质 Download PDFInfo
- Publication number
- CN111770153A CN111770153A CN202010589350.1A CN202010589350A CN111770153A CN 111770153 A CN111770153 A CN 111770153A CN 202010589350 A CN202010589350 A CN 202010589350A CN 111770153 A CN111770153 A CN 111770153A
- Authority
- CN
- China
- Prior art keywords
- download
- fragment
- identifier
- downloaded
- downloading
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 239000012634 fragment Substances 0.000 claims abstract description 161
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000005236 sound signal Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 1
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 1
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种对象下载方法、装置及一种电子设备和计算机可读存储介质,该方法包括:确定本次下载的对象,并向存储所述对象的服务器申请本次下载的下载标识;确定所述本次下载的分片大小,并根据所述对象的总容量和所述分片大小计算所述本次下载的总片数;基于所述下载标识、所述分片大小和每个分片的分片标识生成每个所述分片对应的下载请求;向所述服务器发送所述下载请求,以便从所述服务器中下载每个所述分片至临时目录中;当所述临时目录中分片数量达到所述总片数时,基于所述分片标识将所述临时目录中所有分片合并为所述对象,完成所述对象的下载。本申请提供的对象下载方法,实现了断点续传的下载方法。
Description
技术领域
本申请涉及计算机技术领域,更具体地说,涉及一种对象下载方法、装置及一种电子设备和一种计算机可读存储介质。
背景技术
Ceph是当前GitHub开源社区里面非常活跃的一个免费开源项目,它是一种分布式存储集群架构,并能够同时对外提供块存储、文件存储、对象存储。这也造就了Ceph在当今国内存储市场占据了大部分份额。
当前Ceph对象存储在上传对象时支持断点续传,即用户上传中断后,可以从断点继续上传,但是对象下载却不支持断点续传,在很多应用场景下,用户需要下载比较大的文件,例如视频监控领域,在视频监控领域,对象存储的应用还是比较多的,单用户需要下载或查看某个视频片段时,由于视频文件一般比较大,如果网络不够稳定,将造成难以下载成功的局面。
因此,如何实现断点续传的下载方法是本领域技术人员需要解决的技术问题。
发明内容
本申请的目的在于提供一种对象下载方法、装置及一种电子设备和一种计算机可读存储介质,实现了断点续传的下载方法。
为实现上述目的,本申请提供了一种对象下载方法,应用于客户端,包括:
确定本次下载的对象,并向存储所述对象的服务器申请本次下载的下载标识;
确定所述本次下载的分片大小,并根据所述对象的总容量和所述分片大小计算所述本次下载的总片数;
基于所述下载标识、所述分片大小和每个分片的分片标识生成每个所述分片对应的下载请求;
向所述服务器发送所述下载请求,以便从所述服务器中下载每个所述分片至临时目录中;
当所述临时目录中分片数量达到所述总片数时,基于所述分片标识将所述临时目录中所有分片合并为所述对象,完成所述对象的下载。
其中,所述基于分片标识将所述临时目标中的所有分片合并为所述对象,包括:
确定所述对象的存储地址,将所述临时目录中所有分片按照所述分片标识的顺序写入所述存储地址。
其中,还包括:
从所述服务器中获取目标下载标识对应的下载信息;其中,所述下载信息至少包括已下载分片的分片标识和所述服务器计算的所述已下载分片的标准校验值;
在所述临时目录中确定目标对象对应的所有已下载分片;其中,所述目标对象为所述目标下载标识对应的下载对象;
计算所述临时目录中所有所述已下载分片的校验值作为待对比校验值,对比每个所述已下载分片的待对比校验值和标准校验值;
将所述待对比校验值和所述标准校验值不同的已下载分片确定为断点续传的起始分片;
从所述起始分片开始进行分片下载,以便完成所述目标对象的下载。
其中,从所述服务器中获取目标下载标识对应的下载信息之前,还包括:
从所述服务器中获取当前的所有下载标识,以便从所述所有下载标识中选择所述目标下载标识,并确定所述目标下载标识对应的下载对象为所述目标对象。
为实现上述目的,本申请提供了一种对象下载方法,应用于服务器,包括:
当接收到客户端的下载申请时,为本次下载生成下载标识,并将所述下载标识发送至所述客户端;
当接收到所述客户端的下载请求时,确定所述下载请求中下载标识对应的下载对象,并根据所述下载请求中的分片大小和分片标识确定下载范围;
将所述下载对象中所述下载范围内的数据发送至所述客户端,以便响应所述下载请求。
其中,将所述下载对象中所述下载范围内的数据发送至所述客户端之后,还包括:
记录下载信息;其中,所述下载信息至少包括所述下载标识、所述分片大小、所述分片标识和所述分片标识对应的分片的标准校验值。
其中,还包括:
根据所述下载对象的总容量和所述分片大小计算所述本次下载的总片数;
判断所述分片标识是否等于所述总片数;
若是,则所述下载请求完成后,删除所述下载标识对应的所有下载信息。
为实现上述目的,本申请提供了一种对象下载装置,应用于客户端,包括:
申请模块,用于确定本次下载的对象,并向存储所述对象的服务器申请本次下载的下载标识;
第一计算模块,用于确定所述本次下载的分片大小,并根据所述对象的总容量和所述分片大小计算所述本次下载的总片数;
第一生成模块,用于基于所述下载标识、所述分片大小和每个分片的分片标识生成每个所述分片对应的下载请求;
第一发送模块,用于向所述服务器发送所述下载请求,以便从所述服务器中下载每个所述分片至临时目录中;
合并模块,用于当所述临时目录中分片数量达到所述总片数时,基于所述分片标识将所述临时目录中所有分片合并为所述对象,完成所述对象的下载。
为实现上述目的,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述对象下载方法的步骤。
为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述对象下载方法的步骤。
通过以上方案可知,本申请提供的一种对象下载方法,包括:确定本次下载的对象,并向存储所述对象的服务器申请本次下载的下载标识;确定所述本次下载的分片大小,并根据所述对象的总容量和所述分片大小计算所述本次下载的总片数;基于所述下载标识、所述分片大小和每个分片的分片标识生成每个所述分片对应的下载请求;向所述服务器发送所述下载请求,以便从所述服务器中下载每个所述分片至临时目录中;当所述临时目录中分片数量达到所述总片数时,基于所述分片标识将所述临时目录中所有分片合并为所述对象,完成所述对象的下载。
本申请提供的对象下载方法,客户端改进下载请求,新增支持指定下载标识、分片大小和分片标识三个请求参数,使用分段下载的方式下载对象的分片。若下载中断,已下载分片不需要重复下载,只需要从中断处的分片开始下载即可,实现了断点续传的下载方法,即便在网络环境较差的情况下,也能够保障顺利完成一个较大对象的下载,解决了相关技术中大文件一旦下载失败后,需要重新下载的弊端。本申请还公开了一种对象下载装置及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为根据一示例性实施例示出的一种对象下载方法的流程图;
图2为根据一示例性实施例示出的另一种对象下载方法的流程图;
图3为根据一示例性实施例示出的又一种对象下载方法的流程图;
图4为根据一示例性实施例示出的一种对象下载装置的结构图;
图5为根据一示例性实施例示出的另一种对象下载装置的结构图;
图6为根据一示例性实施例示出的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种对象下载方法,实现了断点续传的下载方法。
参见图1,根据一示例性实施例示出的一种对象下载方法的流程图,如图1所示,包括:
S101:确定本次下载的对象,并向存储所述对象的服务器申请本次下载的下载标识;
本实施例的执行主体为客户端,目的为从服务器中下载对象,此处的对象可以为Ceph对象,在此不进行具体限定。在具体实施中,客户端新增支持申请下载标识的restAPI,用于向服务器发送请求申请本次下载的下载标识。可以理解的是,下载标识标志着一次下载操作,因此对于服务器中的同一个对象可以对应多个不同的下载标识,即一个对象可以下载多次。
S102:确定所述本次下载的分片大小,并根据所述对象的总容量和所述分片大小计算所述本次下载的总片数;
在本步骤中,用户可以指定本次下载的分片大小,该参数为可选值,如果用户不指定可以设置为默认值,如10485760Byte(10MB)。需要说明的是,如果用户第一次分段下载使用默认的分片大小10M,在后续断点续传下载时又指定了新的分片大小。此时会触发新的分段下载过程,即原来服务端记录的对应该下载标识对应的下载信息会清除,并开始一次新的分段下载记录过程。这就意味着改变分片大小后就无法实现断点续传了,且重新开始分段下载后,新的分段文件会覆盖之前生成的分段文件。因此用户可以根据自己客户端的网络情况,配置合适的分片大小。网络相对稳定,可以将分片大小取更大的值,网络不稳定,就取小一点的值。
S103:基于所述下载标识、所述分片大小和每个分片的分片标识生成每个所述分片对应的下载请求;
在本实施例中,客户端改进下载请求,新增支持指定下载标识、分片大小和分片标识三个请求参数,使用分段下载的方式下载对象的某个分片。
S104:向所述服务器发送所述下载请求,以便从所述服务器中下载每个所述分片至临时目录中;
在本步骤中,客户端向服务器发送下载请求,以分段下载的方式从服务器中下载分片至临时目录中。在具体实施中,用户可通过配置文件,指定一个目录,作为分段下载对象的临时目录,分片命名格式可以为:DownloadId@PartNumber#object_name.s3tmp,其中,DownloadId为下载标识,object_name为对象名,PartNumber为分片标识,s3tmp为后缀名。
需要说明的是,客户端向服务器发送的下载请求中若携带下载标识,表示使用分段下载的方式下载该对象,若未携带下载标识,表示不使用分段下载,而使用原生的对象下载接口进行下载,即无论何时中断,都需要从头开始下载。
S105:当所述临时目录中分片数量达到所述总片数时,基于所述分片标识将所述临时目录中所有分片合并为所述对象,完成所述对象的下载。
在本步骤中,当完成一个对象的所有分配下载后,客户端会将临时目录下所有分片进行合并,将临时目录下本次下载的下载标识对应的分片按照分片标识的顺序进行合并为一个完整的文件,用户在下载请求中可以指定下载对象到本地的路径和文件名,将合并后的文件移动到指定的路径下,然后重命名为用户指定的用户名。即本步骤之后,还包括:确定所述对象的存储地址,将所述临时目录中所有分片按照所述分片标识的顺序写入所述存储地址。
本申请实施例提供的对象下载方法,客户端改进下载请求,新增支持指定下载标识、分片大小和分片标识三个请求参数,使用分段下载的方式下载对象的分片。若下载中断,已下载分片不需要重复下载,只需要从中断处的分片开始下载即可,实现了断点续传的下载方法,即便在网络环境较差的情况下,也能够保障顺利完成一个较大对象的下载,解决了相关技术中大文件一旦下载失败后,需要重新下载的弊端。
下面介绍本申请提供的断点续传的对象下载方法,具体的:
参见图2,根据一示例性实施例示出的另一种对象下载方法的流程图,如图2所示,包括:
S201:从所述服务器中获取目标下载标识对应的下载信息;其中,所述下载信息至少包括已下载分片的分片标识和所述服务器计算的所述已下载分片的标准校验值;
本实施例的执行主体为客户端,目的为实现断点续传的对象下载方法。在本步骤中,客户端向服务器发送请求,以获取目标下载标识对应的下载信息。在具体实施中,在服务器中新增rest API接口,用于查询指定下载标识的对象下载情况,该接口定义如下:
Request method:POST
Request url:
/bucket_name/object_name?DownloadId=24dna41nTFj67jldjfHJLmDCHjhd48f4
响应格式仍然为xml格式,为了方便表示,此处将信息提取出来整理并举例如表1:
表1
时间 | 分片标识 | ETag | Size |
2020-04-21 09:34:52 | 1 | 14b17234e2375054… | 10485760 |
2020-04-21 10:35:59 | 2 | 14b17234e2375054… | 10485760 |
2020-04-21 09:38:45 | 3 | 14b17234e2375054… | 10485760 |
其中,ETag表示该分片内容的标准校验值,可以为Md5值,Size表示该分片的大小(单位Byte)。根据表1可知,指定下载标识对应的对象已经成功完成下载了3个片段。
需要说明的是,如果请求中的下载标识输入错误,服务端在列表中查询不到该下载标识,会直接报错。无法继续分段下载。当然,这个错误可以通过通过客户端的设计来避免,例如,用户只能选择从服务端查询出来的列表中选择一个来进行续传下载,或者申请一个新的下载标识来开始一个新的分片下载任务。
作为一种可行的实施方式,客户端可以向服务器发送请求,以获取到在指定存储桶bucket_name下都有哪些对象处于未下载完成状态,并列出了对象名以及对应的下载标识。即本步骤之前,还包括:从所述服务器中获取当前的所有下载标识,以便从所述所有下载标识中选择所述目标下载标识,并确定所述目标下载标识对应的下载对象为所述目标对象。在具体实施中,在服务器中新增rest API接口,用于查询指定bucket下当前已有DownloadId列表,接口定义如下:
Request method:GET
Request url:/bucket_name/?downloads
响应格式仍然为xml格式,为了方便表示,此处将信息提取出来整理并举例如表2:
表2
S202:在所述临时目录中确定目标对象对应的所有已下载分片;其中,所述目标对象为所述目标下载标识对应的下载对象;
S203:计算所述临时目录中所有所述已下载分片的校验值作为待对比校验值,对比每个所述已下载分片的待对比校验值和标准校验值;
S204:将所述待对比校验值和所述标准校验值不同的已下载分片确定为断点续传的起始分片;
S205:从所述起始分片开始进行分片下载,以便完成所述目标对象的下载。
在具体实施中,客户端遍历临时下载目录,确定目标下载标识对应的所有已下载分片,从第一个分片开始,计算其在临时目录中数据的校验值作为待对比校验值,将其与下载信息中的标准校验值进行对比,若一致,则说明该分片不需要重新下载,若不一致,说明下载该分片时发生中断,该分片需要重新下载,将该分片作为起始分片,开始起始分片及后续分片的分片下载,直至目标对象的所有分片均下载完成,将其合并为目标对象,分片下载的过程可参照上一实施例,在此不再赘述。
由此可见,本实施例实现了断点续传的下载方法,即便在网络环境较差的情况下,也能够保障顺利完成一个较大对象的下载,解决了相关技术中大文件一旦下载失败后,需要重新下载的弊端。
下面介绍服务器端的实现过程,具体的:
参见图3,根据一示例性实施例示出的又一种对象下载方法的流程图,如图3所示,包括:
S301:当接收到客户端的下载申请时,为本次下载生成下载标识,并将所述下载标识发送至所述客户端;
本实施例的执行主体为服务器,目的为响应客户端的下载请求,实现对象的分片下载和断点续传。在具体实施中,在服务器中新增rest API接口,该接口用于生成下载标识,用于标识本次下载,该rest API接口的请求定义如下:
Request method:POST
Request url:/bucket_name/object_name?downloads
响应定义如下:
Response status:200
Response data:
<InitiateMultipartDownloadResult><Bucket>bucket_name</Bucket><Key>object_name</Key><DownloadId>24dna41nTFj67jldjfHJLmDCHjhd48f4</DownloadId></InitiateMultipartDownloadResult>
从响应的xml内容里可以看到申请到的下载标识,其为服务端计算的一个长度为33位的随机字符串,其中包含数字,以及大小写字母。
S302:当接收到所述客户端的下载请求时,确定所述下载请求中下载标识对应的下载对象,并根据所述下载请求中的分片大小和分片标识确定下载范围;
在本实施例中,服务器改进原有对象下载rest API接口,用于启用或者续传分段下载对象,接口定义如下:
Request method:GET
Request url:
/bucket_name/object_name?DownloadId=24dna41nTFj67jldjfHJLmDCHjhd48f4&PartNum=1&PartSize=10485760
当服务端接收到下载请求后,会根据分片大小(PartSize)和分片标识(PartNum)计算本次要下载的数据范围。
计算公式如下:下载范围=PartSize×(PartNum-1)+1至PartSize×PartNum;
如果计算到的下载范围大于或等于该对象的容量,则取对象的最大容量,即下载范围=PartSize×(PartNum-1)+1至ObjectSize(对象的最大容量)。
S303:将所述下载对象中所述下载范围内的数据发送至所述客户端,以便响应所述下载请求。
在本步骤中,将下载对象中下载范围内的数据发送至客户端,以响应下载请求,同时,记录下载信息;其中,所述下载信息至少包括下载标识、分片大小、分片标识和分片标识对应的分片的标准校验值。
作为一种优选实施方式,本实施例还包括:根据所述下载对象的总容量和所述分片大小计算所述本次下载的总片数;判断所述分片标识是否等于所述总片数;若是,则所述下载请求完成后,删除所述下载标识对应的所有下载信息。在具体实施中,在服务器中新增rest API接口,用于删除指定的下载标识,例如,客户端的已下载分片已经被清除,或者用户确认不需要再次续传下载该对象,可以通过这个接口删除,该接口定义如下:
Request method:POST
Request url:
/bucket_name/object_name?DownloadId=24dna41nTFj67jldjfHJLmDCHjhd48f4
本申请实施例提供的对象下载方法,服务器根据客户端的下载请求计算下载范围,新增支持指定下载标识、分片大小和分片标识三个请求参数,客户端可以使用分段下载的方式下载对象的分片。若下载中断,已下载分片不需要重复下载,只需要从中断处的分片开始下载即可,实现了断点续传的下载方法,即便在网络环境较差的情况下,也能够保障顺利完成一个较大对象的下载,解决了相关技术中大文件一旦下载失败后,需要重新下载的弊端。
下面介绍本申请提供的一种应用实施例,客户端需要下载服务端存储bucket1下大小为105MB的对象object1。客户端预先配置临时目录为
/s3/tmpfile/。具体可以包括以下步骤:
步骤1:客户端发送请求申请一个DownloadId,假设申请到的DownloadId为:123456789;
步骤2:客户端使用原生接口(即对象存储服务端已经支持的接口)获取对象object1的大小为105MB,换算成比特为105*1024*1024=110100480Byte。
步骤3:
3.1:设定本次分片下载PartSize的大小,不设置默认为10MB。PartSize一旦设置完成,后续下载每个分片的请求中PartSize将一直按照该分片大小进行下载。
3.2:设定本次下载要存放对象的路径和名称,类似于我们平时使用浏览器下载下载某资源时,会弹出一个框,用户可以选定该资源下载到本地的路径,并能指定一个新的名称。本例中,假设用户指定路径为/root/mydir/,文件名为myfile。
步骤4:客户端计算本次分片下载的总片数,计算公式如下:
预计要下载的总片数=对象大小/每片大小+1
其中,对象大小/每片大小的结果要取整,舍弃小数部分。本例中,总片数=105/10+1=11,即一共需要下载11个分段。
步骤5:开始分段下在对象:
5.1:开始下载第一片段,发送如下rest api:
Request method:GET
Request url:
/bucket1/object1?DownloadId=123456789&PartNum=1&PartSize=10485760
服务端会计算下载范围,即从第1Byte到10MB(10485760Byte),这部分数据为分段下载的第一段。会下载到客户端指定好的临时目录下,并命名为123456789@1#object1.s3tmp。
每次完成一段的下载,在服务端也会记录对应该DownloadId的下载情况,如表3所示:
表3
时间 | 分片标识 | ETag | Size |
2020-04-21 09:34:52 | 1 | 14b17234e2375054… | 10485760 |
5.2:开始下载第二片段,发送如下rest api:
Request method:GET
Request url:
/bucket1/object1?DownloadId=123456789&PartNum=2&PartSize=10485760
此时服务端对应DownloadId的下载情况如表4所示:
表4
时间 | 分片标识 | ETag | Size |
2020-04-21 09:34:52 | 1 | 14b17234e2375054… | 10485760 |
2020-04-21 10:35:59 | 2 | 14b17234e2375054… | 10485760 |
5.3:中间的第3段到第10段不再描述。开始下载第11片段,下载完成后,服务端对应DownloadId的下载情况已经记录到了第11片,第11片段服务端计算下载范围时发现已经达到了对象最大容量ObjectSize。当本次第11片段的数据下载传输完成后,服务端会自动调用删除DownloadId的接口,删除123456789这个DownloadId以及其对应的下载情况信息。至此,服务端完成本次分段下载任务。
在/root/mydir/目录下新建一个名为myfile的空文件,再将临时目录内对应DownloadId为123456789的所有11个片段,按顺序写入myfile。至此,客户端也结束了整个分段下载的全过程。
如果上述分段下载过程由于网络波动原因,在下载到第3片段的时候中断了,客户端由于检测到没有完整的下载完成11个分片,就不会去执行最终的合并操作。此时,客户端的临时目录内有3个片段。
如下:
123456789@1#object1.s3tmp
123456789@2#object1.s3tmp
123456789@3#object1.s3tmp
当用户需要断点续传时,步骤如下:
步骤1:用户需要先向服务发送请求查询bucket1内都有哪些未完成的DownloadId,如表5所示:
表5
时间 | 对象名 | 下载标识 |
2020-04-21 09:34:52 | object1 | 123456789 |
此时用户可以查看到上次分段下载时申请并使用的DownloadId。
步骤2:用户根据查出来的DownloadId,使用客户端向服务端发送请求查询12345678这个DownloadId的下载情况,此时得到如下返回信息如表6所示:
表6
时间 | 分片标识 | ETag | Size |
2020-04-21 09:34:52 | 1 | 14b17234e2375054… | 10485760 |
2020-04-21 10:35:59 | 2 | 14b46hk4e2378516… | 10485760 |
2020-04-21 09:38:45 | 3 | 74852364e2377415… | 10485760 |
可以看出,上一次分段下载过程在下载第3片段时,网络中断。
步骤3:客户端遍历临时下载目录,找出所有已经下载的该DownloadId(123456789)对应的片段文件,本例中一共查到3个,然后计算第1片段的MD5值与步骤2中获取的下载信息里PartNumber为1的ETag值进行比对,如果一致,则跳过片段1的再次下载,当比对到第3片段时,发现临时目录内的片段(网络中断,未完整的下载该片段)的MD5值,和PartNumber为3的ETag值不一致。则表示该第3片段需要重新下载,下载指定片段的请求上文已经描述。
步骤4:临时目录内的片段遍历比对完成后,即跳过了所有已经完整下载的片段,本例中,第1和第2片段将会跳过再次下载,从第3片段开始,直到下载到第11片段结束,然后完成整个分段下载过程。
需要说明的是,在本例中,下载到8个片段,由于网络波动再次下载中断,当使用上述过程重新发起断点续传下载时,就会跳过前7个完整片段,直到完成整个对象的下载。
下面对本申请实施例提供的一种对象下载装置进行介绍,该对象下载装置应用于客户端,下文描述的一种对象下载装置与上文描述的一种对象下载方法可以相互参照。
参见图4,根据一示例性实施例示出的一种对象下载装置的结构图,如图4所示,包括:
申请模块401,用于确定本次下载的对象,并向存储所述对象的服务器申请本次下载的下载标识;
第一计算模块402,用于确定所述本次下载的分片大小,并根据所述对象的总容量和所述分片大小计算所述本次下载的总片数;
第一生成模块403,用于基于所述下载标识、所述分片大小和每个分片的分片标识生成每个所述分片对应的下载请求;
第一发送模块404,用于向所述服务器发送所述下载请求,以便从所述服务器中下载每个所述分片至临时目录中;
合并模块405,用于当所述临时目录中分片数量达到所述总片数时,基于所述分片标识将所述临时目录中所有分片合并为所述对象,完成所述对象的下载。
在上述实施例的基础上,作为一种优选实施方式,所述合并模块405具体为当所述临时目录中分片数量达到所述总片数时,确定所述对象的存储地址,将所述临时目录中所有分片按照所述分片标识的顺序写入所述存储地址的模块。
在上述实施例的基础上,作为一种优选实施方式,还包括:
第一获取模块,用于从所述服务器中获取目标下载标识对应的下载信息;其中,所述下载信息至少包括已下载分片的分片标识和所述服务器计算的所述已下载分片的标准校验值;
第一确定模块,用于在所述临时目录中确定目标对象对应的所有已下载分片;其中,所述目标对象为所述目标下载标识对应的下载对象;
对比模块,用于计算所述临时目录中所有所述已下载分片的校验值作为待对比校验值,对比每个所述已下载分片的待对比校验值和标准校验值;
第二确定模块,用于将所述待对比校验值和所述标准校验值不同的已下载分片确定为断点续传的起始分片;
下载模块,用于从所述起始分片开始进行分片下载,以便完成所述目标对象的下载。
在上述实施例的基础上,作为一种优选实施方式,还包括:
第二获取模块,用于从所述服务器中获取当前的所有下载标识,以便从所述所有下载标识中选择所述目标下载标识,并确定所述目标下载标识对应的下载对象为所述目标对象。
本申请实施例提供的对象下载装置,客户端改进下载请求,新增支持指定下载标识、分片大小和分片标识三个请求参数,使用分段下载的方式下载对象的分片。若下载中断,已下载分片不需要重复下载,只需要从中断处的分片开始下载即可,实现了断点续传的下载方法,即便在网络环境较差的情况下,也能够保障顺利完成一个较大对象的下载,解决了相关技术中大文件一旦下载失败后,需要重新下载的弊端。
下面对本申请实施例提供的一种对象下载装置进行介绍,该对象下载装置应用于服务器,下文描述的一种对象下载装置与上文描述的一种对象下载方法可以相互参照。
参见图5,根据一示例性实施例示出的另一种对象下载装置的结构图,如图5所示,包括:
第二生成模块501,用于当接收到客户端的下载申请时,为本次下载生成下载标识,并将所述下载标识发送至所述客户端;
第三确定模块502,用于当接收到所述客户端的下载请求时,确定所述下载请求中下载标识对应的下载对象,并根据所述下载请求中的分片大小和分片标识确定下载范围;
第二发送模块503,用于将所述下载对象中所述下载范围内的数据发送至所述客户端,以便响应所述下载请求。
在上述实施例的基础上,作为一种优选实施方式,还包括:
记录模块,用于记录下载信息;其中,所述下载信息至少包括所述下载标识、所述分片大小、所述分片标识和所述分片标识对应的分片的标准校验值。
在上述实施例的基础上,作为一种优选实施方式,还包括:
第二计算模块,用于根据所述下载对象的总容量和所述分片大小计算所述本次下载的总片数;
判断模块,用于判断所述分片标识是否等于所述总片数;若是,则启动删除模块的工作流程;
删除模块,用于所述下载请求完成后,删除所述下载标识对应的所有下载信息。
本申请实施例提供的对象下载装置,服务器根据客户端的下载请求计算下载范围,新增支持指定下载标识、分片大小和分片标识三个请求参数,客户端可以使用分段下载的方式下载对象的分片。若下载中断,已下载分片不需要重复下载,只需要从中断处的分片开始下载即可,实现了断点续传的下载方法,即便在网络环境较差的情况下,也能够保障顺利完成一个较大对象的下载,解决了相关技术中大文件一旦下载失败后,需要重新下载的弊端。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请还提供了一种电子设备,参见图6,本申请实施例提供的一种电子设备600的结构图,如图6所示,可以包括处理器11和存储器12。该电子设备600还可以包括多媒体组件13,输入/输出(I/O)接口14,以及通信组件15中的一者或多者。
其中,处理器11用于控制该电子设备600的整体操作,以完成上述的对象下载方法中的全部或部分步骤。存储器12用于存储各种类型的数据以支持在该电子设备600的操作,这些数据例如可以包括用于在该电子设备600上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件13可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器12或通过通信组件15发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口14为处理器11和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件15用于该电子设备600与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件15可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的对象下载方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述对象下载方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器12,上述程序指令可由电子设备600的处理器11执行以完成上述的对象下载方法。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种对象下载方法,其特征在于,应用于客户端,包括:
确定本次下载的对象,并向存储所述对象的服务器申请本次下载的下载标识;
确定所述本次下载的分片大小,并根据所述对象的总容量和所述分片大小计算所述本次下载的总片数;
基于所述下载标识、所述分片大小和每个分片的分片标识生成每个所述分片对应的下载请求;
向所述服务器发送所述下载请求,以便从所述服务器中下载每个所述分片至临时目录中;
当所述临时目录中分片数量达到所述总片数时,基于所述分片标识将所述临时目录中所有分片合并为所述对象,完成所述对象的下载。
2.根据权利要求1所述对象下载方法,其特征在于,所述基于分片标识将所述临时目标中的所有分片合并为所述对象,包括:
确定所述对象的存储地址,将所述临时目录中所有分片按照所述分片标识的顺序写入所述存储地址。
3.根据权利要求1所述对象下载方法,其特征在于,还包括:
从所述服务器中获取目标下载标识对应的下载信息;其中,所述下载信息至少包括已下载分片的分片标识和所述服务器计算的所述已下载分片的标准校验值;
在所述临时目录中确定目标对象对应的所有已下载分片;其中,所述目标对象为所述目标下载标识对应的下载对象;
计算所述临时目录中所有所述已下载分片的校验值作为待对比校验值,对比每个所述已下载分片的待对比校验值和标准校验值;
将所述待对比校验值和所述标准校验值不同的已下载分片确定为断点续传的起始分片;
从所述起始分片开始进行分片下载,以便完成所述目标对象的下载。
4.根据权利要求3所述对象下载方法,其特征在于,从所述服务器中获取目标下载标识对应的下载信息之前,还包括:
从所述服务器中获取当前的所有下载标识,以便从所述所有下载标识中选择所述目标下载标识,并确定所述目标下载标识对应的下载对象为所述目标对象。
5.一种对象下载方法,其特征在于,应用于服务器,包括:
当接收到客户端的下载申请时,为本次下载生成下载标识,并将所述下载标识发送至所述客户端;
当接收到所述客户端的下载请求时,确定所述下载请求中下载标识对应的下载对象,并根据所述下载请求中的分片大小和分片标识确定下载范围;
将所述下载对象中所述下载范围内的数据发送至所述客户端,以便响应所述下载请求。
6.根据权利要求5所述对象下载方法,其特征在于,将所述下载对象中所述下载范围内的数据发送至所述客户端之后,还包括:
记录下载信息;其中,所述下载信息至少包括所述下载标识、所述分片大小、所述分片标识和所述分片标识对应的分片的标准校验值。
7.根据权利要求6所述对象下载方法,其特征在于,还包括:
根据所述下载对象的总容量和所述分片大小计算所述本次下载的总片数;
判断所述分片标识是否等于所述总片数;
若是,则所述下载请求完成后,删除所述下载标识对应的所有下载信息。
8.一种对象下载装置,其特征在于,应用于客户端,包括:
申请模块,用于确定本次下载的对象,并向存储所述对象的服务器申请本次下载的下载标识;
第一计算模块,用于确定所述本次下载的分片大小,并根据所述对象的总容量和所述分片大小计算所述本次下载的总片数;
第一生成模块,用于基于所述下载标识、所述分片大小和每个分片的分片标识生成每个所述分片对应的下载请求;
第一发送模块,用于向所述服务器发送所述下载请求,以便从所述服务器中下载每个所述分片至临时目录中;
合并模块,用于当所述临时目录中分片数量达到所述总片数时,基于所述分片标识将所述临时目录中所有分片合并为所述对象,完成所述对象的下载。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述对象下载方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述对象下载方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010589350.1A CN111770153A (zh) | 2020-06-24 | 2020-06-24 | 一种对象下载方法、装置及电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010589350.1A CN111770153A (zh) | 2020-06-24 | 2020-06-24 | 一种对象下载方法、装置及电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111770153A true CN111770153A (zh) | 2020-10-13 |
Family
ID=72721670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010589350.1A Withdrawn CN111770153A (zh) | 2020-06-24 | 2020-06-24 | 一种对象下载方法、装置及电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111770153A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113301095A (zh) * | 2020-12-08 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 提供云端对象的数据的方法以及装置 |
CN114443581A (zh) * | 2022-04-11 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种下载控制方法、装置、设备及存储介质 |
CN115174553A (zh) * | 2022-06-06 | 2022-10-11 | 蚂蚁区块链科技(上海)有限公司 | 一种文件传输的方法及装置 |
CN115941663A (zh) * | 2022-10-19 | 2023-04-07 | 国网电力空间技术有限公司 | 一种断点续传方法及系统 |
-
2020
- 2020-06-24 CN CN202010589350.1A patent/CN111770153A/zh not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113301095A (zh) * | 2020-12-08 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 提供云端对象的数据的方法以及装置 |
CN113301095B (zh) * | 2020-12-08 | 2024-05-10 | 阿里巴巴集团控股有限公司 | 提供云端对象的数据的方法以及装置 |
CN114443581A (zh) * | 2022-04-11 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种下载控制方法、装置、设备及存储介质 |
CN115174553A (zh) * | 2022-06-06 | 2022-10-11 | 蚂蚁区块链科技(上海)有限公司 | 一种文件传输的方法及装置 |
CN115941663A (zh) * | 2022-10-19 | 2023-04-07 | 国网电力空间技术有限公司 | 一种断点续传方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111770153A (zh) | 一种对象下载方法、装置及电子设备和存储介质 | |
JP6419319B2 (ja) | 共有フォルダ及び共有ファイルの同期 | |
CN109582644B (zh) | 文件存储方法、装置、设备及计算机可读存储介质 | |
CN103092665B (zh) | 即时更新装置和即时更新方法 | |
CN111031110B (zh) | 一种文件上传方法、装置及电子设备和存储介质 | |
US9367303B2 (en) | Upgrade packet generation method, server, software upgrade method, and mobile terminal | |
KR102376713B1 (ko) | 복합 파티션 함수 제공 기법 | |
CN103136027B (zh) | 即时更新装置和即时更新方法 | |
CN102420843B (zh) | 一种基于云压缩链接的压缩和解压缩方法、装置及系统 | |
CN109542361B (zh) | 一种分布式存储系统文件读取方法、系统及相关装置 | |
US20090138520A1 (en) | Maintaining and Replicating Chat Histories | |
CN102546740B (zh) | 一种基于云压缩文件的压缩和解压缩方法、装置及系统 | |
CN110019024B (zh) | 一种目录查询方法、系统及电子设备和存储介质 | |
CN102360320A (zh) | 一种基于云架构的终端备份对象共享恢复方法 | |
CN105159968A (zh) | 一种文件系统的目录管理方法及客户端 | |
CN102571940A (zh) | 应用程序远程安装系统、方法、智能终端、应用服务器 | |
CN112948340A (zh) | 数据同步方法、装置、电子设备及可读存储介质 | |
CN109144998B (zh) | 节点数据的展现方法、装置、存储介质及电子设备 | |
CN111200634B (zh) | 缓存资源联动更新方法、系统及服务器 | |
CN111158597A (zh) | 一种元数据读取方法、装置及电子设备和存储介质 | |
WO2019085780A1 (zh) | 一种云存储系统及用于云存储系统中实现自定义数据处理的方法 | |
CN108076078A (zh) | 一种云主机创建方法、装置及云服务系统 | |
CN110413594A (zh) | 一种Redis多实例压力测试方法和装置 | |
CN113342746A (zh) | 文件管理系统、文件管理方法、电子设备和存储介质 | |
CN108008925A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201013 |