【问题标题】:Connection pooling on Azure StorageAzure 存储上的连接池
【发布时间】:2014-07-02 21:14:28
【问题描述】:

我开始使用 Azure 存储将文件保存到我的应用程序上的 blob。由于我的应用程序可以访问不同存储上的不同容器,我想知道如何实现一个可以优化资源的连接池。

我想保持对不同容器的连接打开,而不是每次尝试下载 blob 时都打开连接

谁能为我提供实现这一目标的最佳方法?

谢谢

【问题讨论】:

    标签: azure azure-storage azure-blob-storage


    【解决方案1】:

    对您的问题的简单回答是,您不能真正保持与 Azure 存储的连接,因为它本质上是一个基于请求/响应的 HTTP 连接。你向 Azure 存储发出请求,它会向你发送响应,然后连接就会终止。

    事实上,Azure 存储不允许您长时间保持单个连接打开,因为它是一项服务,它需要为像您这样的许多客户提供服务。因此,如果您尝试执行的操作时间超过 Azure 存储服务指定的阈值,该服务将超时您的请求。

    【讨论】:

    • HTTP 级别的连接被“终止”。除非服务器或客户端拒绝使用“keep-alive”,否则底层 TCP 级别的连接可以使用“keep-alive”并被持久化。
    • 感谢 Guaurav / @sharptooth!因此,基本上每次我想对 blob 执行操作(下载、创建等)时,我都必须执行以下步骤:CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(storageConnectionString); CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); _cloudBlobContainer = cloudBlobClient.GetContainerReference(blobContainerName);
    • 这些语句不进行网络调用。它们只是创建这些对象的一个​​实例,因此在您创建这些对象的实例时没有与网络延迟相关的开销。
    • 不过,这可能会浪费大量周期来创建您实际上并不需要的对象。
    猜你喜欢
    • 2013-03-02
    • 2017-11-27
    • 1970-01-01
    • 2017-04-29
    • 2017-05-09
    • 2022-08-03
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多