我正在创建一个使用Azure SDK优化blob上传的应用程序。
我想知道PutBlock方法是否使用TCP或UDP作为其底层传输协议?
无论使用哪种方式,我都可以编写一个使用我自己的协议进行blob上传操作的自定义函数吗?因为这是我计划优化我的用例。
编辑1: 谢谢纪尧姆, 虽然我不确定你的意思,即使我确实添加了代理工作者角色,但它最终不会使用REST API的HTTP / TCP协议来完成这项工作。在那种情况下,我的协议不会只是另一个减慢东西的开销吗?
答案 0 :(得分:4)
Windows Azure存储Blob通过REST API(http或https)进行管理,以便它的TCP 。您无法控制Azure Blob存储协议,只能在http或https之间进行选择。
如果您想使用自己的协议上传到Azure,则必须添加一个代理服务器'工作者角色(或其他VM实例,请参阅David的评论),使用您的协议公开端点,然后使用常规REST blob端点将数据上载到blob。由于您的员工和存储帐户位于不应成为瓶颈的同一数据中心。
要回答问题的第二部分,是的,有更多的开销,但它可能不会减慢速度。 我们假设Blob协议开销为10%,您自己的协议有5%的开销。让我们说客户端和Azure之间的连接是128kbps和1Gbps Inside Azure(完全随机数只是为了证明潜在的结果)。
客户端到代理+代理到Blob = 10分56秒,这更快;)
现在用测量的带宽和开销来做你自己的download time calculations(你还应该考虑延迟,......)。
答案 1 :(得分:0)