我有一个关于 Azure blob 下载速度优化的问题。我正在考虑在 Azure blob 存储中拥有一个私有(private)容器,其中包含 10000 个大小约为 5 MB 的文件。每当用户想要下载该文件时,我都会生成一个 SAS Url 供用户下载该文件。截至目前,我发现约有 1000 个并发用户在任何时间点下载各种文件。
我想知道以下任何步骤是否可以帮助我保持此类使用的最佳下载速度。
- 将文件存储在不同的容器中是否有助于提高下载速度。
- 阅读 Windows Azure 存储团队的博客,了解每个存储帐户都有固定的带宽。为了弥补这一点,我是否需要将文件存储在不同的存储帐户中。
- 存储帐户中只有一个容器是否足以为约 1000 个并发用户提供最佳下载速度。 我 如果您能让我了解实现这一目标的最佳实践,那就太好了。
最佳答案
- 没有。 Blob 是分区,而不是容器。
- 是的。
- 这要看情况。 单个 blob 的目标吞吐量高达 60 MB/秒,但由于您正在谈论 10000 个文件,这应该不是问题(假设您的 1000 个并发用户将下载不同的文件)。您需要查看的是存储帐户的可扩展性目标,其中吞吐量高达每秒 3 GB。如果您的应用程序增长,这可能会成为一个问题,但您可以考虑以下一些解决方案:
- 使用多个存储帐户(可能每个国家/地区、每个应用程序一个……)。创建存储帐户的限制非常低(以前每个订阅有 5 个存储帐户,不知道是否有变化),因此如果您想使用更多存储帐户,则需要联系 Microsoft。
- 考虑将 CDN 与 Blob 存储结合使用来公开您的文件。这将提高性能(更高的吞吐量),但您的用户下载文件的速度也会更快,因为他们是从“附近”位置下载的。
- 您还可以在 Web 角色中进行一些缓存(例如在 LocalResources 或缓存预览中,以缓存常用文件)。但我不建议这样做。
这篇文章是一个很好的起点:Windows Azure Storage Abstractions and their Scalability Targets
关于azure - 优化具有 1000 个并发用户的 Azure Blob 存储的下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12799473/