MogileFS и отдача файлов конечному пользователю.

Wicked

Новичок
MogileFS и отдача файлов конечному пользователю.

Пытаюсь разобраться, подойдет ли MogileFS для приватного фотохостингового (т.е. не фотошарингового) проекта, на котором я работаю. Не понял пока что одну вещь: если mogstore ноды сделать фронтендами, то получится ли отдавать с них файлы с помощью nginx/lighttpd? Пока что мне видится такая схема:
  1. браузер запрашивает файл по глобально уникальному урлу с хоста-диспетчера - например, по ссылке типа http://images.domain.com/{image_id}.jpg;
  2. простой пхп-скрипт на images.domain.com делает запрос mogilefs tracker-у, получает список mogstore нод, где этот файл лежит. Он выбирает один, и делает редирект на mogstore ноду store##.images.domain.com, который будет отдавать файл юзеру. (кстати, как добиться отказоустойчивости самого tracker'a и базы данных, которая для него используется?).
  3. когда редирекченный браузер придет на ноду за файлом, мы запустим пхп-скрипт, который по сессии сходит в мемкэш/базу, удостоверится, что у этого юзера есть доступ к файлу, и отдаст X-LIGHTTPD-send-file или X-Accel-Redirect хедер соответственно, чтобы сказать веб-серверу отдать файл. Тут возникает второй вопрос: реально ли понять, какой именно файл с диска нужно отдавать? Я так и не нашел, как mogstore физически хранит файлы на диске, а ставить это все дело, только для того, чтобы проверить, пока нет ни времени, ни желания.
  4. Ну и дальше lighttpd/nginx отдаёт файл браузеру.
    [/list=1]

    ЗЫ: кстати, вот сейчас еще поковырялся... Можно попробовать второй-третий шаг заменить на:
    простой пхп-скрипт на images.domain.com делает запрос mogilefs tracker-у, получает список mogstore нод, где этот файл лежит. Он выбирает один, и делает редирект на почти-DAV-ссылку на mogstore ноду , который будет отдавать файл юзеру. "Почти" - потому что там браузера будет ждать не mogstore daemon, а nginx/lighttpd, который, проверив доступ, спроксирует уже на mogstore. Должно тоже довольно резво работать.

    Еще интересует, не опасно ли светить юзеру mogilefs'овскую ссылку? Или лучше сделать, чтобы юзер приходил на http://store##.images.domain.com/{image_id}.jpg, где бы делался свой запрос к трэкеру (ну или в крайнем случае, к некоторому кэшу)?

    К слову, почему именно MogileFS:
    • Нужно универсальное хранилище, к которому может получить доступ любой наш сервер.
    • Нужна масштабируемость по объему.
    • Нужна отказоустойчивость за счет избыточности, а контроль избыточности тут, вроде как, сделан довольно разумно.

    -~{}~ 05.09.07 23:26:

    Нашел статью, в которой похожая тема более-менее раскрывается: http://www.royans.net/arch/2007/08/25/typepad-architecture-problems-and-solutions/

    Только сделано там по-другому - через единый лоад балансер. Но в моем вышеописанном случае можно каждому могстору опционально дать дырку наружу, что наверное хорошо.

    -~{}~ 05.09.07 23:36:

    Ну и, если кто хочет сам поиграться с могилой (на форуме я ничего по теме не нашел), есть уже настроенный vmware-образ, который лично у меня крутится в vmware player'е:
    http://lists.danga.com/pipermail/mogilefs/2006-September/000513.html

    Из пхп (5.1+) с оной системой работаю через оную библиотеку:
    http://lists.danga.com/pipermail/mogilefs/2007-July/001085.html
 
Сверху