0

我在托管网站的云服务上运行 2 个 azure 实例。

我将文件上传到文件夹,并保存在其中一个实例中。当我尝试加载它时,如果 azure 选择了错误的实例,它不会找到该文件。我有什么选择来解决这个问题?

我想将文件保存在 blob 存储中,但如果我能以这种方式保存它,它将为我节省一些时间。

4

2 回答 2

3

正如您在问题中提到的,您应该将其保存在 blob 存储中。有几个原因:

  1. 默认情况下,Windows Azure 使用循环负载平衡策略。这意味着,如果您在一个实例中上传文件,并且当用户请求该文件时,如果该请求由第二个实例提供,则将找不到该文件(您收到的错误)。
  2. 更重要的是,云服务是stateless by nature. 这意味着一旦 VM 出现故障,您在该 VM 上执行的任何操作(例如保存文件等)都会消失。

另一方面,Blob 存储是持久存储,可通过简单的 http 协议访问。因此,当用户上传文件时,您将其保存在 blob 存储中。当用户请求它时,您只需从 blob 存储中提供 blob。

更新 - 基于以下评论

关于您的第一条评论,您仍然可以使用 blob 存储。您可以做的是创建一个 blob 容器来保存临时文件,一旦用户完成所有步骤,您就可以将它们移动到另一个容器(我们称之为永久容器)。要将 blob 从一个容器复制到另一个容器,您甚至不必将 blob 下载到 VM。Windows Azure 支持服务器端异步复制,它将 blob 从一个容器复制到另一个服务器端。

关于您的第二条评论,我认为您无法更改负载平衡策略。有一些东西Application Request Routing (ARR)可以实现粘性会话,但不幸的是我不熟悉它。你可能想调查一下。

于 2013-09-05T15:09:42.550 回答
0

您正在使用虚拟机,对吗?如果切换到 Azure 网站是一种选择,那么您的应用程序文件/图像将位于一个共享网络驱动器上,始终可供所有实例使用。http://azure.microsoft.com/en-us/documentation/videos/web-sites-internals-and-the-file-system/

于 2014-05-05T21:34:32.497 回答