Azure存储blob-与Etag的乐观并发性

Azure存储blob-与Etag的乐观并发性,azure,azure-storage,azure-storage-blobs,Azure,Azure Storage,Azure Storage Blobs,我们有一个多写入器场景,其中多个进程可以写入同一块blob。我们正在探索使用ETag实现乐观并发的选项。如果存在冲突,存储客户端将引发异常。现在冲突是很正常的,因此抛出大量异常可能会降低进程的吞吐量。有没有一种方法可以识别并发更新,而不会从azure存储客户端引发异常。据我所知,我们无法直接识别并发更新。Azure存储服务检查blob是否根据etag更新。如果etag与存储服务资源的etag不相等。它将在响应中返回409错误 我们无权更改服务器并返回409错误响应 唯一的方法是在更新blob之前

我们有一个多写入器场景,其中多个进程可以写入同一块blob。我们正在探索使用ETag实现乐观并发的选项。如果存在冲突,存储客户端将引发异常。现在冲突是很正常的,因此抛出大量异常可能会降低进程的吞吐量。有没有一种方法可以识别并发更新,而不会从azure存储客户端引发异常。

据我所知,我们无法直接识别并发更新。Azure存储服务检查blob是否根据etag更新。如果etag与存储服务资源的etag不相等。它将在响应中返回409错误

我们无权更改服务器并返回409错误响应

唯一的方法是在更新blob之前,我们首先请求etag

但是如果另一个进程更新blob,etag发生了变化,它仍然会返回409错误

这里有一个解决办法。如果您使用azure storage SDK,它会提供,您可以使用它来避免显示异常,并将请求重新发送到azure以再次更新blob。但是azure存储仍将向客户端返回409响应


如果您使用rest api,我建议您可以使用try-catch捕获异常并再次尝试发送rest api请求。

据我所知,我们无法直接识别并发更新。Azure存储服务检查blob是否根据etag更新。如果etag与存储服务资源的etag不相等。它将在响应中返回409错误

我们无权更改服务器并返回409错误响应

唯一的方法是在更新blob之前,我们首先请求etag

但是如果另一个进程更新blob,etag发生了变化,它仍然会返回409错误

这里有一个解决办法。如果您使用azure storage SDK,它会提供,您可以使用它来避免显示异常,并将请求重新发送到azure以再次更新blob。但是azure存储仍将向客户端返回409响应

如果您使用RESTAPI,我建议您可以使用TryCatch来捕获异常并再次尝试发送RESTAPI请求