【问题标题】:Lock Azure blob during write在写入期间锁定 Azure Blob
【发布时间】:2020-12-31 16:19:07
【问题描述】:

我必须更新存储为 Azure blob 的大文件。此更新需要几秒钟,我需要确保没有其他客户端获得部分更新的文件。

https://docs.microsoft.com/en-us/azure/storage/common/storage-concurrency 中所述,锁定文件以进行写入应该很容易,但据我了解,其他客户端仍然可以读取该文件。我可以使用读锁,但这意味着只有一个客户端可以读取文件,这不是我想要的。

根据Preventing azure blob from being accessed by other service while it's being created 看来,在上传结束时至少会“提交”新文件,但我找不到更新现有文件时会发生什么的信息。

所以,问题是:在更新(替换)操作期间,其他客户端会读取什么?

  • 他们会在提交新数据之前读取旧文件还是
  • 他们会读取部分更新的文件内容吗?

【问题讨论】:

    标签: c# azure azure-blob-storage


    【解决方案1】:

    我对场景进行了测试(我没有找到任何关于此的官方文档),用 600M 文件更新 blob 中的 400M 文件。并在更新期间(开始更新后约 10 秒),使用代码读取正在更新的 blob。

    测试结果是,更新时只能读取旧文件。

    【讨论】:

    • 感谢测试。
    • 这是一个非常有用的测试结果。官方文档仅将多个写入者作为要处理的问题(通过最后写入获胜 vs 乐观 + 悲观并发)这一事实是处理并发读/写情况的有力指标......但它是很高兴对此进行测试。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2020-06-09
    • 2018-02-13
    • 2021-04-30
    • 2019-03-08
    • 2023-01-03
    • 2023-02-23
    相关资源
    最近更新 更多