- 1.3 FDS简介
- 1.4 基本概念
- 1.5 使用场景
- 1.6 快速入门
- 1.6.1 帐号注册
- 1.6.2 创建Bucket
- 1.6.3 上传文件
- 1.6.4 生成文件预签名链接
- 1.6.5 为云服务密钥授权
- 1.6.6 通过SDK下载文件
- 1.7 请求认证
- 1.7.1 OAuth认证
- 1.7.2 签名认证
- 1.7.3 预签名认证
- 1.8 权限列表
- 1.9 Presigned URL
- 1.10 SDK
- 1.10.1 Service操作API的签名和示例
- 1.10.2 Bucket操作API的签名和示例
- 1.10.3 Object操作API的签名和示例
- 1.11 Service操作REST API
- 1.11.1 List Buckets
- 1.12 Bucket操作REST API
- 1.12.1 PUT Bucket
- 1.12.2 DELETE Bucket
- 1.12.3 HEAD Bucket
- 1.12.4 PUT Bucket ACL
- 1.12.5 GET Bucket META
- 1.12.6 GET Bucket ACL
- 1.12.7 List Objects
- 1.13 Object操作 REST API
- 1.13.1 Put Object
- 1.13.2 POST Object
- 1.13.3 GET Object
- 1.13.4 HEAD Object
- 1.13.5 Copy Object
- 1.13.6 PUT Object ACL
- 1.13.7 GET Object ACL
- 1.13.8 GET Object metadata
- 1.13.9 DELETE Object
- 1.13.10 Delete multiple Objects
- 1.13.11 DELETE Object ACL
- 1.13.12 Restore Object
- 1.13.13 Rename Object
- 1.13.14 Prefetch Object
- 1.13.15 Refresh Object
- 1.13.16 Init multipart upload
- 1.13.17 Upload part
- 1.13.18 Complete multipart-upload
- 1.13.19 Abort multipart upload
- 1.14 CDN使用
- 1.15 服务端加密
- 1.16 图像处理
- 1.17 计量计费
- 1.18 分片上传
- 1.19 误删数据恢复
- 1.20 TTL功能
- 1.21 跨域资源共享(CORS)
- 1.22 FDS命令行工具
- 1.23 FDS第三方迁移工具
- 1.24 FDS存量数据加密工具
- 1.25 FAQ
- 1.26 问题调查
- 1.27 问题反馈
- 1.28.1 abort-multipart-upload
- 1.28.2 complete-multipart-upload
- 1.28.3 delete-bucket
- 1.28.4 delete-multiple-objects
- 1.28.5 delete-object-acl
- 1.28.6 delete-object
- 1.28.7 delete-objects
- 1.28.8 get-bucket-acl
- 1.28.9 get-bucket-meta
- 1.28.10 get-endpoint
- 1.28.11 get-object-acl
- 1.28.12 get-object
- 1.28.13 copy-object
- 1.28.14 get-object-metadata
- 1.28.15 head-bucket
- 1.28.16 head-object
- 1.28.17 init-multipart-upload
- 1.28.18 list-bucket
- 1.28.19 list-objects
- 1.28.20 OAuth
- 1.28.21 post-object
- 1.28.22 prefetch-object
- 1.28.23 put-bucket-acl
- 1.28.24 put-bucket
- 1.28.25 put-object-acl
- 1.28.26 put-object
- 1.28.27 rename-object
- 1.28.28 refresh-object
- 1.28.29 restore-object
- 1.28.30 upload-part
1.18 分片上传
分片上传
分片上传提供一个将Object拆分成若干个Part进行上传的功能。每个Part是Object数据中连续的一部分。所有Part可以独立且以任何顺序进行上传。任何Part上传失败后,可以单独进行重传,且不影响已经成功上传的Part。所有分片都上传后,FDS对这些Part进行组装,然后用户可以像普通Object一样进行访问。通常,如果Object大于100MB,可以考虑使用分片上传。
分片上传的优点:
- 高throughput — Part可以并行地上传。
- 断点续传 — 当网络出现问题后,仅仅需要重传失败的Part。
- 上传不提前知道大小的Object — Object可以边创建边上传。比如,用户通过一个stream接受数据,然后上传到FDS的场景。
分片上传流程
分片上传是一个三阶段的过程:首先初始化分片上传,然后上传所有分片,最后完成分片上传。当FDS收到完成分片上传请求时,会根据请求中提供的Part列表对Part进行组装。
1.初始化分片上传
初始化分片上传后,FDS会返回一个唯一的upload id来标示本次分片上传。后续的上传分片、结束或终止分片上传都需要带上这个upload id。
2.上传分片
上传分片时,除了指定upload id外,还需要指定part number。Part number的取值范围为1至MAX_NUMBERS,它用于确定该Part在整个Object中的位置。如果用已使用过的part number上传一个新Part,旧的会被覆盖。每个上传Part请求FDS都会返回一个ETag,用户需要记录下这些part number和Etag对。结束分片上传时需要将所有分片的part number和ETag发给FDS。
3.完成分片上传(或者终止)
当所有分片上传完成后,需要进行完成操作。FDS会将所有分片按part number的增序组装成一个Object(part number需要连续且不能有重复项)。Object总大小较大时,这个操作可能会花费几秒钟。同一个Object的不同分片上传(通过upload id来区分),不管哪个先初始化,后complete的会覆盖先complete的。
如果不再需要已上传的分片,需要终止本次分片上传,以免被收取额外的费用。
Mode
分片上传有两种模式:DIRECT和MULTI_BLOB,目前暂不支持用户选择上传模式。
Mode | 是否能获取MD5 | 是否支持乱序上传(并发上传) |
---|---|---|
DIRECT | YES | NO |
MULTI_BLOB | NO | YES |
Limitions
Region | Max object size | Part numbers | Part size | Mode |
---|---|---|---|---|
cnbj0 | 2G | 1 至 400(包含400) | 5M 至 50M(包含5M和5M),最后一个Part可以小于5M | DIRECT |
cnbj2 | 100G | 1 至 20480(包含20480) | 5M 至 50M(包含5M和50M),最后一个Part可以小于5M | DIRECT |
awsbj0 | 100G | 1 至 20480(包含20480) | 5M 至 50M(包含5M和50M),最后一个Part可以小于5M | DIRECT |
awsusor0 | 100G | 1 至 20480(包含20480) | 5M 至 50M(包含5M和50M),最后一个Part可以小于5M | DIRECT |
awssgp0 | 100G | 1 至 20480(包含20480) | 5M 至 50M(包含5M和50M),最后一个Part可以小于5M | DIRECT |
awsde0 | 100G | 1 至 20480(包含20480) | 5M 至 50M(包含5M和50M),最后一个Part可以小于5M | DIRECT |
计费
分片上传除了收取请求个数费用以外,Part所占用的存储空间也会收费。分片上传complete后,组装成的Object收费标准和普通Object一样。Abort后,Part不再收取存储空间费。所以,如果所上传的Part不再需要,请终止该分片上传,以免被收取费用。
Complete效率
Complete阶段需要组装所有Part至一个Object,两种上传模式下的Complete效率相近。总大小为100G时,大概需要花费5秒。
API和SDK
和其它请求一样,FDS提供了Restful API和SDK,具体请参考Object操作 REST API和Object操作API的签名和示例中分片上传相关的章节。
分片上传请求也可以通过presigned url发起,具体请参考Presigned URL
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论