Где в Azure следует хранить физические файлы, к которым должна иметь доступ рабочая роль?
Где в Azure следует хранить физические файлы, к которым должна иметь доступ рабочая роль?
В моем случае я обычно храню эти конкретные файлы в папке App_Data моей веб-роли, но я не верю, что рабочие роли могут получить доступ к этой папке.
4 ответа:
Если вы размещаете файлы в хранилище Windows Azure (Blob-объекты хороши для хранения файлов), любой экземпляр вашей роли может получить к ним доступ, будь то в веб-ролях или рабочих ролях. Кроме того, хранилище Blob-объектов является долговечным, что означает тройную репликацию в пределах центра обработки данных (и геореплицирование в другой центр обработки данных).
Что касается экземпляров рабочих ролей, не имеющих доступа к папкам в экземпляре веб-роли (или экземплярах другой рабочей роли), то вы правы. На самом деле, несколько экземпляров одного и того же Роли не могут получить доступ к файловой системе друг друга (просто помните, что роль-это просто Windows 2012 Server, и каждый экземпляр этой роли работает в своей собственной виртуальной машине с собственными локальными дисками).
EDIT JULY 5 2014 Этот ответ теперь немного устарел. Azure предлагает файловая служба, предоставление общих ресурсов SMB, которые опираются на хранилища больших двоичных объектов. Это, как правило, легче работать с устаревшими приложениями, которые должны использовать файловую систему и не могут быть изменены для прямого чтения из / записи в BLOB-объекты. Больше информацию можно найти здесь.
Поскольку данные не сохраняются в экземплярах, вам потребуется распределенное хранилище, где вы можете хранить свои файлы (и другие данные). Это можно сделать с помощью хранилища Blob-объектов Windows Azure (и это очень дешево по сравнению с хранением файлов в SQL Azure).
Хранилище Azure-это хороший вариант. Вы также можете посмотреть на использование локальных ресурсов хранения:
Http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx
Локальный ресурс хранения - это зарезервированный каталог в файловой системе виртуальной машины, в которой выполняется экземпляр роли. Код, запущенный в экземпляре, может выполнять запись в локальный ресурс хранения, когда ему требуется выполнить запись в файл или чтение из файла. Например, локальный ресурс хранения может быть используется для кэширования данных, к которым может потребоваться повторный доступ во время работы службы в Windows Azure.
Если данные, которые вы храните, являются конфиденциальными - убедитесь, что вы используете некоторую схему защиты на вашем контейнере blob, а не просто храните данные blob как общедоступную ссылку, где любой может их просмотреть. Лучше всего использовать SaS (подпись общего доступа ) для безопасного доступа к сохраненным данным blob-объектов Azure. Если данные не являются конфиденциальными-это не требуется.
Смотрите дополнительную справкуMSDN по защите BLOB-объектов и контейнеров в Azure.