【问题标题】:Is the Azure Put Blob operation atomic?Azure Put Blob 操作是原子操作吗?
【发布时间】:2015-10-28 03:34:13
【问题描述】:

Azure 的Put Blob REST API 操作文档告诉我们,可以通过单个请求上传高达 64 MB 的块 Blob。

我想知道这样的操作是否是原子的。特别是我需要知道以下假设是对还是错。

  1. 如果两个或多个客户端同时使用此 API 指定 If-None-Match: * 放置特定的不存在的 blob,则最多有一个会成功。

  2. 使用此 API 放置的 blob 永远不会部分公开。它要么不存在,要么与放置的全部内容 (

谁能证实或反驳这些假设?

【问题讨论】:

  • 附注:如果您使用 分块上传,则可以在单个请求中上传超过 64 MB 的文件,请参阅我的源代码 azureslfileuploader.codeplex.com/SourceControl/latest#tags/… 以获取示例。
  • @IngeHenriksen 据我所知,这不是一个单一的请求上传。看起来您正在上传块,在这种情况下,您至少需要发送两个请求。无论如何,这与我的问题无关。

标签: azure azure-storage


【解决方案1】:

我已直接从 Microsoft 支持技术人员处收到确认这两个假设都是正确的

  1. 如果两个或多个客户端同时使用此 API 指定 If-None-Match: * 放置特定的不存在的 blob,则最多有一个会成功。

  2. 使用此 API 放置的 blob 永远不会部分公开。它要么不存在,要么与放置的全部内容 (

【讨论】:

    【解决方案2】:

    Azure Put Blob 操作是原子操作吗? 答:完全没有。

    在步骤 3 完成之前读取 blob 的任何尝试都会 导致 HTTP 404(未找到)。

    是的,100% 安全,您会收到 404

    在第 3 步完成后读取 blob 的任何尝试都会 要么查看整个 blob 内容和元数据,要么导致 HTTP 404(未找到)以防第 3 步不成功。

    是的,如果操作未完成,则 blob 存储中没有文件

    任何尝试将带有 If-None-Match: * 标头的 blob 放在 第 2 步的开始必须等到第 3 步完成,要么 成功,在这种情况下,请求必须以 HTTP 409 失败 (前提条件失败)或正常继续,因为 blob 不会 存在。

    在我的测试中:无需等待。

    因此,通常在第二次尝试上传相同的文件名后,您会收到 HTTP/1.1 409 The specified blob already exists。 (只要您发送的请求带有 If-None-Match:* 标头)

    问题在于,如果第一个上传文件尚未收到第一个 201 确认(或者如果您在一个请求中上传所有文件,则该文件是唯一的),那么即使已启动第二个文件也将被允许创建资源在第一个之后。如果第二个文件比第一个文件短,就会发生这种情况,因为可能仅在第一个(短)请求中,文件就会完成传输。

    最奇怪的是,当这种情况发生时,第一个流将继续正常上传数据,直到发出最后一个请求,最后一个请求的答案将是 409。

    我强烈建议您创建一个尖峰解决方案来测试您的特定用例,因为上述情况可能不是您的应用程序的有效用例。

    【讨论】:

    • 您确定在完全上传之前无法看到正在放置的 blob 的部分吗?如果是这样,它就是原子的——它要么完全存在,要么根本不存在。但是,您说 一点也不 来回答它是否是原子的。令人困惑。
    • 1.是的,我 100% 确定 2. "not at all " 部分是因为最后提到的特殊情况,我的意思是没有“等待”,如果第一个请求没有在第二个文件开始上传之前结束,将存储第二个文件而不是第一个。
    • 优秀。您能否解释一下为什么您 100% 确定 - 您可以链接到任何官方文档或其他可信来源吗?
    • 我已经测试过该场景,但无论如何我已经创建了一个尖峰解决方案,以使用 >50 MB 的文件再次对其进行测试。在运行时,我使用 fiddler 跟踪所有请求和响应
    • 我不明白你怎么能通过测试来 100% 确定这一点。
    猜你喜欢
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 2016-11-05
    • 2015-01-10
    相关资源
    最近更新 更多