【问题标题】:Azure Web Application: CDN + application service vs Blob storageAzure Web 应用程序:CDN + 应用程序服务 vs Blob 存储
【发布时间】:2018-05-27 16:27:16
【问题描述】:

如果在 Azure 中使用与网站/Web 应用程序(即 Azure 应用程序服务)相关的 CDN,与仅使用 Web 应用程序作为端点相比,使用 Blob 存储有哪些优点/缺点?

例如,一个简单的 CMS 网站将所有上传的图片存储在 /uploads/myimage.jpg 中

使用 CDN,我可以将其端点设置为 mywebsite.com/uploads/,或者我可以创建一个 blob 容器,将 CMS 设置为在那里存储图像并将其设置为 CDN 的来源。

我在选择其中一个时有哪些考虑?

【问题讨论】:

    标签: azure azure-web-app-service azure-storage azure-blob-storage azure-cdn


    【解决方案1】:

    如果我理解您的问题,您是在询问两种不同方案的优缺点:

    1. 使用由 Azure Blob 存储支持的 Azure CDN。
    2. 使用直接访问底层 Web 应用的 Azure CDN。

    老实说,两者之间并没有太大的区别。当向您的 CDN 发出资产请求时,Azure 将检索内容、缓存并提供服务。因此,一旦加载了 CDN 的缓存,这两种情况就没有区别了。

    如果您的缓存过期标头的时间很短,并且您正在处理非常大的文件和大量请求,那么使用 Blob 存储进行初始加载将是减轻 Web 应用程序负载的更好选择.

    我可能会从最容易为您的解决方案实施的方法开始,并且仅在遇到问题时进行调整。

    【讨论】:

    • 你明白我的问题,谢谢。我很好奇是否有任何成本考虑,例如存储空间、带宽成本等。我还看到了有关数据寿命和保证的参考(例如,可以擦除 Web 应用程序数据?)。但找不到任何具体的内容。
    • 优秀。您必须为大文件推送一些主要流量才能让这个实现细节真正重要。但是提前思考是值得称赞的。
    • 抱歉,我在按回车换行后扩展了我的评论:/。我会暂时保留这个问题,以防万一还有其他要点,否则明天会接受你的回答:)
    • @DannyT,Web 应用程序文件实际上由 Azure 存储支持。我知道清除 Web App 文件的唯一方法是明确删除它们,或者在发布时不小心选中“在目标位置删除其他文件”。那个疼,问我怎么知道的。 :-) 您可以使用 Blob 存储进行异地复制,让您更加安心。
    【解决方案2】:

    正如 Rob 在他的回答中所说,在性能方面没有太大区别。以下是我认为 Web 应用支持的 CDN 和 Blob 支持的 CDN 之间的核心差异:

    • 对于对象的首次命中(或缓存过期后的命中),Web 应用程序支持的 CDN 最初将通过您的 Web 应用程序获得该流量路由。如果它是一个非常大的资源(例如视频文件),您可能会注意到由于带宽以异常高的方式消耗而导致的间歇性性能下降(直到此对象缓存在 CDN 中)。 Blob 存储没有相同类型的带宽限制。
    • 使用 Web 应用支持的 CDN,您必须记住,您的存储受限于您选择的 Web 应用层。例如,如果您拥有 10 GB 的资产,这可能会迫使您进入更高的级别。使用 Blob 存储,您将拥有 500TB 的总持久存储空间,其中对象大小高达 4.77TB。
    • Web Web App 支持的 CDN,驻留在 Web 应用程序中的存储持久,就像 blob 存储一样,直到您删除 Web 应用程序。然后那个存储就消失了。使用 Blob 存储,即使在删除 Web 应用(或整个应用服务)之后,您的存储也会保留。当然,如果您删除了存储帐户,您的对象就会消失...
    • 如果您拥有多个 Web 应用程序(或托管在其他地方的其他应用程序)所需的资产,您将开始拥有来自一个应用程序的链接,指向另一个应用程序的资产,从而引入依赖项(例如 Web 应用程序A带有指向 Web 应用程序 B 中内容的 css 链接)。你需要仔细管理它。或者将公共资产存储在 blob 存储中,避免应用到应用的链接依赖。
    • Blob 存储可以让您选择将静态资产放置在与 Web 应用程序不同的区域中。使用 Web 应用程序存储,它们将始终位于同一位置。 (我不提倡跨区域分离内容;只是指出这样做的灵活性)。
    • 可以通过多种方式对 Blob 存储进行内容管理:直接 REST API 调用、基于 SDK 的调用以及许多第一方和第三方工具。对于 Web App 内容,没有这样的 API 和工具;您要么必须将资产与代码一起部署,要么在启动时(或手动、或通过脚本或您选择的其他方式)从其他来源(例如 blob 存储)复制内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 2017-02-07
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      相关资源
      最近更新 更多