azure - 在 Windows Azure 中,CloudBlockBlob.PutBlock 方法使用 TCP 还是 UDP 作为传输协议(protocol)?

标签 azure azure-storage azure-blob-storage

我正在创建一个应用程序来使用 Azure SDK 优化 blob 上传。

我想知道 PutBlock 方法使用 TCP 还是 UDP 作为其底层传输协议(protocol)?

无论它使用哪个,我可以编写一个自定义函数来使用我自己的协议(protocol)执行 blob 上传操作吗?因为这就是我计划优化我的用例的方法。

编辑1: 谢谢纪尧姆, 虽然我不确定你的意思,但即使我添加了代理 worker 角色,它最终不会使用 REST API 的 HTTP/TCP 协议(protocol)来完成这项工作。在这种情况下,我的协议(protocol)难道不只是另一种降低速度的开销吗?

最佳答案

Windows Azure 存储 Blob 通过 REST API 进行管理(http 或 https)所以它是 TCP。您对 Azure Blob 存储协议(protocol)没有任何控制权,只能在 http 或 https 之间进行选择。

如果您想使用自己的协议(protocol)上传到 Azure,则必须添加一个“代理”辅助角色(或另一个 VM 实例,请参阅 David 的评论),该角色使用您的协议(protocol)公开端点,然后将数据上传到 blob使用常规 REST blob 端点。由于您的工作线程和存储帐户位于同一数据中心,因此不应成为瓶颈。

<小时/>

要回答问题的第二部分,是的,开销更大,但可能不会减慢速度。 假设 Blob 协议(protocol)开销为 10%,而您自己的协议(protocol)开销为 5%。假设客户端和 Azure 之间的连接速度为 128kbps,Azure 内部速度为 1Gbps(完全随机数,仅用于演示潜在结果)。

  • 客户端到 Blob ==> 10Mb,128kbps 时有 10% 开销 => 00:11:27
  • 客户端到代理 => 10Mb,128kbps 时有 5% 开销 ==> 00:10:56
  • 代理到 Blob ==> 10Mb,1Gbps 时有 10% 开销 ==> 00:00:00 (真的很快!)

客户端到代理 + 代理到 Blob = 10 分钟 56 秒,更快;)

现在做你自己的download time calculations测量带宽和开销(您还应该考虑延迟,...)。

关于azure - 在 Windows Azure 中,CloudBlockBlob.PutBlock 方法使用 TCP 还是 UDP 作为传输协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24648118/

相关文章:

python - 无需绑定(bind)即可访问 Blob 存储?

Azure 自定义视觉服务紧凑域

c# - 用于访问 Azure 存储中的私有(private) blob 的 URL

asp.net - 为 Azure 存储帐户连接字符串构建连接字符串

azure - 如何访问 Azure powershell Runbook 中的本地文件路径

azure - 从 Append Blob 复制到 BlockBlob

azure - 如何在没有旧的 Azure 门户的情况下获取现有服务总线的连接字符串

azure - 具有应用服务的 SharePoint 2013 非 HA 场

azure - Azure Cosmos DB 集合的分区键

c# - 如何从 Azure Blob 存储将文件下载到浏览器