我正在编写存储在 Azure VM 上的 MVC 5 互联网应用程序。在此互联网应用程序中,用户可以上传图片和视频等文件,公众可以通过 url 访问这些文件。
我的问题是:
我应该将此上传的数据存储在与 Azure VM 相同位置的 Azure Block Blob 容器中,还是让用户将此数据上传到 VM 存储的硬盘驱动器,然后可以通过 url 访问?
使用 Blob 存储还是在 VM 上存储文件更便宜?
例如,如果我将以下文件存储在 Blob 存储和 Azure VM 上,并且每个文件都被访问和查看了 100 次,哪个会更便宜?
- 10 * 1MB 图片
- 10 * 5MB 视频
此外,除了存储成本和交易成本,我还应该考虑哪些因素?
提前致谢。
最佳答案
在这种情况下,您似乎应该为上传的 blob 创建一个单独的容器并将其标记为公开。您的应用程序应将用户上传的文件保存到此公共(public)容器。然后用户可以通过 blob 的 URL 直接访问容器中的文件。
这个建议有几个原因:
- 成本:正如您提到的, block blob 的成本比 VHD 上的空间便宜
- IOPS:您的 VHD 有每秒 500 次 IO 操作的限制。您已经在此 VHD 上运行您的应用程序和操作系统,这意味着您所有上传的文件加起来剩余的 IOPS 更少
- 吞吐量:通过直接通过存储为这些 blob 提供服务,您不会使前端 VM 成为带宽瓶颈(如果下载流量很高,VM 的网络可能会饱和)
- 可管理性:您可以从任何资源管理器管理 blob,并使用任何存储资源管理器手动添加/删除,而无需登录您的 VM 来执行这些操作。
- 可扩展性:如果将其放在 VM 的磁盘上,则只有该 VM 可以访问这些文件。借助 blob,您可以使用多个虚拟机作为前端,以随着负载的增加而横向扩展。
关于transactions - 我应该为文件使用 Blob 存储还是 Azure VM 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30421079/