【问题标题】:Google cloud storage compatibility with aws s3 multipart uploadGoogle 云存储与 aws s3 分段上传的兼容性
【发布时间】:2020-08-13 09:33:56
【问题描述】:

好的,我有一个使用 amazon s3 multipart 的工作应用程序,它们使用 CreateMultipart、UploadPart 和 CompleteMultiPart。

现在我们正在迁移到谷歌云存储,但我们遇到了多部分的问题。据我了解,谷歌不支持 s3 多部分,从这里获取信息Google Cloud Storage support of S3 multipart upload

所以我看到google有最接近的方法Compose https://cloud.google.com/storage/docs/composite-objects,我只是上传不同的对象然后发送请求来组合它们,或者我可以使用uploadType=multipart https://cloud.google.com/storage/docs/json_api/v1/how-tos/upload#resumable,但这似乎与s3完全不同多部分。还有可恢复的上传https://cloud.google.com/storage/docs/resumable-uploads,似乎允许分块上传文件,但没有完整的分段。

最好的选择是什么?一些服务已经使用 CreateMultiPart、UploadPart、CompletePart,我需要为这些服务编写“适配器”以使其与谷歌云存储兼容。

【问题讨论】:

    标签: amazon-s3 google-cloud-storage aws-sdk google-cloud-sdk


    【解决方案1】:

    更新:以下答案不再正确。 GCS 确实支持分段上传:https://cloud.google.com/storage/docs/xml-api/post-object-multipart

    你是对的。 Google Cloud Storage 目前不支持分段上传。

    分段上传的主要好处是允许多个流从一台或多台机器并行上传,并且允许部分上传失败不会破坏整个上传。使用 GCS 获得相同好处的最佳方法是将这些部分作为单独的对象上传,然后使用 Compose 将它们组合成最终对象。事实上,这正是 gsutil 命令行实用程序在并行上传时所做的事情。

    如果您想按顺序在单个流中上传单个对象,并且希望能够在连接丢失时恢复,那么可恢复上传是一个很好的工具。

    “uploadtype=multipart”上传有点不同。它们是一种使用 HTTP 多部分请求在单个上传操作中指定对象的完整元数据及其数据的方法。

    【讨论】:

    • 我想知道多部分在从单台机器上传的情况下是否有用,因为在直接上传的情况下,部分上传与单个部分使用的整个带宽可能会共享带宽。在上传超过几 mb 的内容时,所有 S3 SDK 都在后台使用 multipart。我想知道它是否真的提高了吞吐量,有什么想法吗?
    • 从一台机器上并行上传一个对象的几个部分实际上经常会由于 TCP 的工作而增加吞吐量。您可以使用 GCS 实现此目的,方法是将多个对象作为单独的对象上传,然后使用 compose API 调用将它们组合成一个最终对象。如果您使用 -m 标志,gsutil 命令可以为您的上传执行此操作。
    • 谢谢。我应该说相同的客户端/进程而不是“单机”。但我认为答案是一样的吧?
    • 在区分“支持”和“作为预览功能提供”时要小心。后者在生产系统中使用风险更大,并且参考文章都指出这仍被视为预览功能并且可能具有有限的支持。很遗憾,这意味着您的原始答案仍然有效。
    猜你喜欢
    • 2020-07-04
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2017-05-14
    • 1970-01-01
    • 2018-08-26
    • 2021-08-27
    相关资源
    最近更新 更多