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

时间:2013-02-15 10:43:29

标签: azure upload download azure-storage

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

7 个答案:

答案 0 :(得分:7)

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

  1. 块大小应取决于您的Internet连接。例如,如果您的互联网连接非常慢,那么上传大型单个块几乎总会导致请求超时。
  2. 上传/下载的并发线程数应取决于运行应用程序代码的计算机上的处理器核心数。根据我的经验,如果您在8核计算机上运行应用程序以获得最佳性能,则可以生成8个多线程,其中每个线程上载/下载部分数据。人们可能会试图运行100个线程并将线程管理留给操作系统,但我观察到的是,在这种情况下,大多数时间请求都会超时。
  3. 上传/下载操作应该是异步的。您不希望应用程序阻止/占用计算机上的资源。
  4. 对于上传大文件,您可以决定块大小(假设它是1 MB)和并发线程(假设它是8)然后从包含8个元素的数组中的文件中读取8 MB并开始上载使用上传块功能并行处理这8个元素。上传8个元素后,重复逻辑以读取下一个8 MB并继续此过程,直到上传所有字节为止。之后,您将调用提交阻止列表功能以在blob存储中提交blob。

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

答案 1 :(得分:5)

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

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

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

功能

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

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

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

答案 2 :(得分:4)

如果您使用的是Windows操作系统,则可以使用Microsoft的AzCopy命令行实用程序。对于Linux / Mac,您可以使用Azure CLI

  

AzCopy 是一个Windows命令行实用程序,用于使用具有最佳性能的简单命令在Microsoft Azure Blob,文件和表存储中复制数据。

下载blob

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:my_key_here /Pattern:"abc.txt"

上传单个文件

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:my_key_here /Pattern:"abc.txt"

AzCopy here的更多示例和信息。

答案 3 :(得分:1)

您可以使用Cloud Combine将可靠,快速的文件上传到Azure blob存储。它支持多线程处理,因此文件以最快的速度上传。

答案 4 :(得分:1)

您可以使用windows azure powershell从azure上传/下载大文件。

Set-AzureStorageBlobContent用于上传。

Set-AzureStorageBlobContent -Container containerName -File .\filename -Blob blobname

http://msdn.microsoft.com/en-us/library/dn408487.aspx

Get-AzureStorageBlobContent用于下载。

Get-AzureStorageBlobContent -Container containername -Blob blob -Destination C:\test\

http://msdn.microsoft.com/en-us/library/dn408562.aspx

答案 5 :(得分:0)

您可以使用Azure导入/导出服务,您可以将包含数据的磁盘发送到Azure DataCenter。

检查此链接: https://azure.microsoft.com/en-us/documentation/articles/storage-import-export-service/

答案 6 :(得分:0)

我对整个数据迁移工作相对较新,我正在尝试使用一组业务规则和各种BETA测试方案,最大限度地利用“冷”存储与“执行”存储的优势。

我与该产品没有任何联系,但我发现,为了钱,GoodSync产品可以带来最好的效果。允许调度,文件更改触发器,大量过滤选项,到目前为止,所有基于SMB和/或云的存储选项都可以进行分析和同步。它还允许多线程。它们都不是“超级快”,但GoodSync至少使得使用单独的标签运行一堆作业变得非常易于管理。

检查出来......