gpt4 book ai didi

java - azure-storage-api java 的 downloadAttributes 上不存在指定的 blob

转载 作者:行者123 更新时间:2023-12-01 09:30:35 26 4
gpt4 key购买 nike

我们有一个应用程序,其中许多(~1000)消费者尝试从 blob 存储中获取文件。 Blob 文件没有并发访问,但它们共享单个存储帐户。我看到 Blob 存储上有可用文件,但我们经常看到以下异常

Caused by: com.microsoft.azure.storage.StorageException: The specified blob does not exist.
at com.microsoft.azure.storage.StorageException.translateFromHttpStatus(StorageException.java:207)[3:org.ops4j.pax.logging.pax-logging-service:1.6.9]
at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:172)[3:org.ops4j.pax.logging.pax-logging-service:1.6.9]
at com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:306)[3:org.ops4j.pax.logging.pax-logging-service:1.6.9]
at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:177)[3:org.ops4j.pax.logging.pax-logging-service:1.6.9]
at com.microsoft.azure.storage.blob.CloudBlob.downloadAttributes(CloudBlob.java:1268)[3:org.ops4j.pax.logging.pax-logging-service:1.6.9]
at com.microsoft.azure.storage.blob.CloudBlob.downloadAttributes(CloudBlob.java:1235)[3:org.ops4j.pax.logging.pax-logging-service:1.6.9]

我们正在使用

Azure-storage-api 1.1.0

这是一个已知的错误或限制吗?什么情况下我们会遇到这个异常?

我们使用以下代码下载 blob

String storageConnectionString = "DefaultEndpointsProtocol=http;AccountName="+ storageAccount + ";AccountKey=" + primaryAccessKey;
CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient blobClient = account.createCloudBlobClient();
CloudBlobContainer container = blobClient.getContainerReference(containerName.toLowerCase());
CloudBlockBlob blockBlob = container.getBlockBlobReference(fileName);
blockBlob.downloadAttributes();
//http://stackoverflow.com/questions/1071858/java-creating-byte-array-whose-size-is-represented-by-a-long
int size = (int)blockBlob.getProperties().getLength();
out = new byte[size];
blockBlob.downloadToByteArray(out, 0);

最佳答案

什么是不断?是总是,还是当超过 X 个消费者尝试获取 blob 时?

关于Scalability Targets for Azure Storage您可以了解有关目标可扩展性参数的更多信息。其中之一是单个 blob 的目标吞吐量:

Target throughput for single blob Up to 60 MB per second, or up to 500 requests per second

对于 1000 个消费者,毫无疑问在查询同一个 blob 时会达到该限制。问题是 - 你真的需要从 blob 中获取如此强烈的内容吗?你可以缓存在某个地方(中间界面)还是可以使用 CDN(它也适用于 SAS's )

如果 1000 个消费者访问 1000 个不同的 blob,则存在一些限制,例如:

Total Request Rate (assuming 1KB object size) per storage account Up to 20,000 IOPS, entities per second, or messages per second

对于 1000 个消费者每秒发出 20 个请求 - 根据文件中的 block 数,这也可能是该限制。

无论如何,您都应该修改您的申请并发现您达到了哪个限制。

关于java - azure-storage-api java 的 downloadAttributes 上不存在指定的 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39448359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com