【问题标题】:Uploading data to Azure App Service's persistent storage (%HOME%)将数据上传到 Azure 应用服务的持久存储 (%HOME%)
【发布时间】:2022-12-20 02:48:50
【问题描述】:

我们有一个基于 Windows 的应用程序服务,需要运行大型数据集(存储在 Azure Blob 存储中的文件大约 30GB)。每个应用程序版本的数据都是静态的,因此应该可供给定插槽中的所有实例访问(在我们的例子中,一个插槽代表一个版本)。

根据我们的初步研究,持久存储 (%HOME%) 似乎是实现此目的的理想场所,因为存储在那里的数据跨实例共享,但不跨插槽共享。

现在的下一步是加载所需的数据作为我们的 devops 部署管道的一部分,因为应用程序服务无法在没有基础数据的情况下运行。但是,似乎 %HOME% 目录只能由应用服务本身访问,即使底层实现使用的是 Azure 存储。

此时,我们正在考虑让应用程序服务在其启动期间下载数据,但随后我们遇到了一个障碍,那就是我们有两个实例。我们可以实现一个 Mutex(使用 blob 租约),但在我们看来,对于一个简单的需求来说,这似乎是一个过于复杂的解决方案。

关于如何最好地实施这个的任何想法?

【问题讨论】:

    标签: azure azure-devops azure-web-app-service


    【解决方案1】:

    我在容器启动时加载文件时遇到的问题如下:

    1. 它会非常慢,您可能会遇到内置应用服务超时之一。
    2. 每次您的容器重新启动或您添加另一个实例时,它都会重新下载所有数据,并且可能会因为文件句柄锁而导致写入受阻问题,这会使 %HOME% 上的文件或目录完全无法访问用于阅读和修改(我刚刚遇到这种情况)。

      为此,我宁愿建议通过 SMB 将应用程序连接到 Azure 文件,例如,每个版本都有一个目录。通过这种方式,您可以连接到 Azure 文件并在构建管道期间写入数据,并保存一个 ENV 变量或文件,告诉每个槽从哪个目录获取当前版本的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 2019-06-25
      • 2012-02-21
      • 1970-01-01
      • 2019-12-31
      • 2022-07-03
      • 1970-01-01
      相关资源
      最近更新 更多