在最快的时间内上传具有巨大尺寸的GB的blob的最佳方式

Shr*_*kar 17 upload download azure azure-storage

有人可以建议在最快的时间内上传/下载多GB大小的视频blob到Azure存储的最佳方法吗?

Gau*_*tri 7

从Windows Azure存储上传/下载大blob的最佳方法是通过分块上传/下载并正确使用多线程.您需要考虑以下几点:

  1. 块大小应取决于您的Internet连接.例如,如果您的Internet连接非常慢,那么上传大型单个块几乎总会导致请求超时.
  2. 要上载/下载的并发线程数应取决于运行应用程序代码的计算机上的处理器核心数.根据我的经验,如果您在8核计算机上运行应用程序以获得最佳性能,则可以生成8个多线程,其中每个线程上载/下载部分数据.人们可能会试图运行100个线程并将线程管理留给操作系统,但我观察到的是,在这种情况下,大多数时间请求都会超时.
  3. 上传/下载操作应该是异步的.您不希望应用程序阻止/占用计算机上的资源.

对于上传大文件,您可以决定块大小(假设它是1 MB)和并发线程(假设它是8)然后从包含8个元素的数组中的文件读取8 MB并开始上传这8个元素并行使用上传块功能.上传8个元素后,重复逻辑以读取下一个8 MB并继续此过程,直到上传所有字节为止.之后,您将调用提交阻止列表功能以在blob存储中提交blob.

同样,对于下载大文件,您可以再次决定块大小和并发线程,然后通过在Get Blob功能中指定"range"标头来开始读取blob的某些部分.一旦下载了这些块,您将需要根据它们的实际位置重新排列(因为可能会发生在0-1 MB块之前下载3-4块的块)并开始将这些块写入文件.您需要重复此过程,直到下载所有字节为止.


Vit*_*lla 5

我是微软技术推广人员,我开发了一个样本和免费工具(无支持/不保证)来帮助解决这些问题.

二进制文件和源代码可在此处获取:https://blobtransferutility.codeplex.com/

Blob Transfer Utility是一个GUI工具,用于向/从Windows Azure Blob存储上载和下载数千个小/大文件.

特征:

  • 创建上传/下载批次
  • 设置内容类型
  • 并行传输文件
  • 将大型文件拆分为并行传输的较小部分

第四个功能是您的问题的答案.

您可以从示例代码中学习我是如何做到的,或者您只需运行该工具并执行您需要执行的操作.

  • [Microsoft Azure存储资源管理器](https://azure.microsoft.com/zh-cn/features/storage-explorer/)是通过Internet传输大文件的最佳方法(截至2018年10月) (2认同)