Насколько хороша такая архитектура?

Будет некий сервис, в котором пользователь может загрузить медийный-файл а сам сервис должен изменить в нем некие св-ва.

Будет:


N-главных серверов. Назовем M*. Эти сервера общаются с пользователем. Прием файла от пользователя и необходимых надстроек над файлом.
N-задачных серверов. Назовем W*. Эти серевера будут производить те самые изменения в файлах.

Вся реализация будет на python+twisted.

Схема:


При загрузки пользователем файла на M сервер, файл с сервера M отправляется на наиболее «свободный» W сервер, попадая в очередь. W сервер сообщает о успешном завершении операции с ID очереди (для связи. Узнать статус либо при получении уведомления).

После завершения изменений с файлом на сервере W, этот сервер уведомляет M о успешности выполнения задачи. Для всего обмена данными хочу написать собственный сервис.

1. Насколько нормальна будет такая схема?
2. Файлы могут быть большими, 1Гб например. Беспокоит то, что приходится «гонять» файлы туда-сюда, с M сервера на W (и может быть обратно, хотя этот шаг можно обойти отдавая пользователю результат файла напрямую с сервера W).
  • Вопрос задан
  • 3323 просмотра
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
1) Нормальная схема. Нечто подобное используют многие, например, Flickr.
2) ну и что, что будут гоняться? Межсерверные линки всё равно быстрее WAN'а. А раздавать файлы с воркеров — идея плохая. Воркеры должны иметь возможность умирать, ничего не затрагивая, а только увеличивая время обработки файликов.

> Для всего обмена данными хочу написать собственный сервис.
Зачем? Воспользуйтесь сервером очередей.
Ответ написан
gricom
@gricom
Я бы выделил еще сервер Q, который будет содержать и обслуживать очередь, в него будут складываться сырые файлы. Серверы W будут смотреть, есть еще задания для выполнения, а после выполнения результат складывать на тот же сервер W, в очередь готовых файлов.
По-моему, так легче будет масштабироваться, да и логика серверов М немного упростится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы