通过分块上传大文件
uploading the large file through chunking
假设我们正在设计由 Amazon S3 支持的 Dropbox 的核心功能。
我对上传的工作方式有一些困惑(如下是我对上传工作流程的假设。如果下面的任何步骤有误,请纠正我)
- 用户在dropbox联系应用服务器说我有一个1GB的文件需要上传
- Dropbox 向用户提供预签名的 S3 URL,指示使用可恢复(分段)上传将文件直接上传到 S3。
- 所以现在 S3 已经将文件分成 10 个部分。
Q1。如果我到现在为止的理解是正确的,那么谁在 S3 上重新组装文件以创建 1GB 文件?
Q2。如果文件没有重新组合并保存在块中,S3 会通知 dropbox 这是块列表及其位置,以便 dropbox 可以将该信息存储在其元数据中 tables?
Q3。如果文件被重新组合,但我们想以块格式存储它,那么这是否意味着上传需要通过保管箱进行(使用一些上传服务,我们可以将块存储在 S3 中,并将元数据存储在我们的 table)?
注意:我看了很多这方面的资源,文件上传的系统图有点不一致。在某些地方,文件上传过程是通过位于我们的(保管箱)负载平衡器后面的块服务器执行的。
并且在某些地方文件直接上传到s3。
第一季度和第三季度
如果您将文件分块,并使用正常 PutObject
API 上传它们,那么它们将保持分块状态。
如果您将文件分块,并使用分段上传顺序(CreateMultipartUpload
、UploadPart
、然后是 CompleteMultipartUpload
)上传它们,则 S3 将 re-assemble 文件.参考API reference.
Q2
因此,如果您使用分段上传序列,但由于未成功调用 CompleteMultipartUpload
而将其挂在那里,那么它们将一直挂在那里。不过你会被收费,所以你有责任跟踪这些。 S3不会通知你。
备注
图表与本例无关。
假设我们正在设计由 Amazon S3 支持的 Dropbox 的核心功能。 我对上传的工作方式有一些困惑(如下是我对上传工作流程的假设。如果下面的任何步骤有误,请纠正我)
- 用户在dropbox联系应用服务器说我有一个1GB的文件需要上传
- Dropbox 向用户提供预签名的 S3 URL,指示使用可恢复(分段)上传将文件直接上传到 S3。
- 所以现在 S3 已经将文件分成 10 个部分。
Q1。如果我到现在为止的理解是正确的,那么谁在 S3 上重新组装文件以创建 1GB 文件?
Q2。如果文件没有重新组合并保存在块中,S3 会通知 dropbox 这是块列表及其位置,以便 dropbox 可以将该信息存储在其元数据中 tables?
Q3。如果文件被重新组合,但我们想以块格式存储它,那么这是否意味着上传需要通过保管箱进行(使用一些上传服务,我们可以将块存储在 S3 中,并将元数据存储在我们的 table)?
注意:我看了很多这方面的资源,文件上传的系统图有点不一致。在某些地方,文件上传过程是通过位于我们的(保管箱)负载平衡器后面的块服务器执行的。
并且在某些地方文件直接上传到s3。
第一季度和第三季度
如果您将文件分块,并使用正常 PutObject
API 上传它们,那么它们将保持分块状态。
如果您将文件分块,并使用分段上传顺序(CreateMultipartUpload
、UploadPart
、然后是 CompleteMultipartUpload
)上传它们,则 S3 将 re-assemble 文件.参考API reference.
Q2
因此,如果您使用分段上传序列,但由于未成功调用 CompleteMultipartUpload
而将其挂在那里,那么它们将一直挂在那里。不过你会被收费,所以你有责任跟踪这些。 S3不会通知你。
备注
图表与本例无关。