8

在 Azure 中,我应该将需要由辅助角色访问的物理文件存储在哪里?

在我的情况下,我通常会将这些特定文件存储在我的 Web 角色的 App_Data 文件夹中,但我不相信 Worker Roles 可以访问该文件夹。

4

4 回答 4

11

如果您将文件放在 Windows Azure 存储中(blob 非常适合文件存储),那么您的任何角色实例都可以访问它们,无论是在 Web 角色还是在工作角色中。此外,Blob 存储是持久的,这意味着在数据中心内进行三次复制(并在地理上复制到另一个数据中心)。

关于 Worker Role 实例无法访问 Web Role 实例(或另一个 Worker Role 的实例)中的文件夹,您是对的。事实上,同一角色的多个实例无法访问彼此的文件系统(请记住,角色只是 Windows 2012 Server,并且该角色的每个实例都在其自己的虚拟机中运行,并具有自己的本地磁盘)。

编辑 2014 年 7 月 5 日这个答案现在有点老了。Azure 现在提供文件服务,提供由 Blob 存储支持的 SMB 共享。对于必须使用文件系统并且无法更改为直接读取/写入 blob 的遗留应用程序,这往往更容易使用。更多信息可以在这里找到。

于 2012-04-16T10:55:50.703 回答
3

由于数据不会保留在实例上,因此您需要分布式存储,您可以在其中存储文件(和其他数据)。这可以通过使用 Windows Azure Blob 存储来完成(与将文件存储在 SQL Azure 中相比,这非常便宜)。

于 2012-04-16T10:56:07.393 回答
3

Azure storage is a good option. You can also look at using Local Storage Resources:

http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

A local storage resource is a reserved directory in the file system of the virtual machine in which an instance of a role is running. Code running in the instance can write to the local storage resource when it needs to write to or read from to a file. For example, a local storage resource can be used to cache data that may need to be accessed again while the service is running in Windows Azure.

于 2012-04-16T15:38:00.783 回答
2

如果您存储的数据是敏感数据 - 请确保在您的 blob 容器上使用某种保护方案,并且不要将 blob 数据存储为任何人都可以查看的可公开访问的链接。最好的办法是使用 SaS(共享访问签名)来安全地访问您存储的 Azure blob 数据。如果数据不敏感 - 这不是必需的。

请参阅有关在 Azure 中保护 Blob 和容器的更多MSDN 参考。

于 2012-04-16T13:03:27.093 回答