http://farm8.staticflickr.com/7020/6702134377_cf70482470_z.jpg
Хорошо, извините за ужасный рисунок, но это казалось лучшим способом организовать мои мысли и передать их.Некоторое время я боролся с тем, как создать оптимальную, легко масштабируемую систему для выгрузки файлов в веб-приложение на AWS.
Загрузка напрямую в S3 будет работать, за исключением того факта, что файлы должны быть мгновенно доступны загрузчику для манипуляции, а затем после манипуляции они могут перейти на s3, где они будут обслуживаться во всех экземплярах.
Я поиграл с идеей создания SAN с чем-то вроде glusterfs, затем загружать прямо в это и обслуживать из этого.Я не исключаю этого, но из разных источников надежность этого решения может быть не идеальной (если у кого-то есть лучшее понимание этого, я хотел бы услышать).В любом случае я хотел сформулировать более «готовое» (в контексте AWS) решение.
Поэтому, чтобы подробнее остановиться на этой диаграмме, я хочу, чтобы файл был загружен в локальную файловую системуНапример, это происходит на том EBS.Место хранения файла не будет предоставлено общественности (т.е. / tmp / uploads /). К нему все равно можно получить доступ через операцию readfile () в PHP, чтобы пользователь мог видеть и манипулировать им сразу после загрузки.Как только пользователь закончит манипулирование файлом, в SQS может быть поставлено в очередь сообщение о его перемещении на s3.
Мой вопрос: как только я сохраню файл «локально» на экземпляре (который может быть любым экземпляром из-за балансировки нагрузки), как я могу записать, на каком экземпляре он (в БД), чтобыпоследующие запросы через PHP на чтение или перемещение файла найдут указанный файл.
Если кто-то, имеющий больше опыта в этом, обладает некоторой проницательностью, я был бы очень благодарен.Благодарю.