我必须更新存储为 Azure blob 的大文件。此更新将需要几秒钟,我需要确保没有其他客户端获得部分更新的文件。
如 https://learn.microsoft.com/en-us/azure/storage/common/storage-concurrency 中所述锁定文件进行写入应该很容易,但据我了解,其他客户端仍然能够读取该文件。我可以使用读锁,但这意味着只有一个客户端可以读取该文件,而这不是我想要的。
根据Preventing azure blob from being accessed by other service while it's being created似乎至少新文件将在上传结束时“提交”,但我找不到更新现有文件时会发生什么的信息。
所以,问题是:其他客户端在更新(替换)操作期间会读取什么?
- 他们会读取旧文件直到提交新数据还是
- 他们会读取部分更新的文件内容吗?
最佳答案
我对该场景进行了测试(我没有找到任何关于此的官方文档),用 600M 文件更新 blob 中的 400M 文件。在更新期间(开始更新后大约10秒),使用代码读取正在更新的blob。
测试结果是,更新时只能读取旧文件。
关于c# - 在写入期间锁定 Azure blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53980282/