@IsaevDev

Как лучше организовать очередь отложенной обработки изображений?

Получаю изображения через php. Дальше их надо подрезать/уменьшить
Молотилку хочу сделать на отдельном сервере с возможностью в будущем сделать пул таких молотилок. А также пул серверов принимающих изображения и отрабатывающих логику. И чтобы можно было в любой момент любой сервер вытащить/вставить.
Как посоветуете организовать обработку?
Выкачивать с сервера логики на случайную молотилку по крону? Или отправлять задачу на некий управляющий сервер и потом им перебрасывать изображения?

Немного пугает использование и администрирование нескольких готовых решений (типа очередь в редисе или гирмен)
Мне кадется что это оверхэд

Может просто шлепнуть сервер для обработки на java? В общем благодарен любым советам по организации/софту
  • Вопрос задан
  • 526 просмотров
Пригласить эксперта
Ответы на вопрос 2
TheKnight
@TheKnight
Программист
1) RabbtiMQ|Kafka|ActiveMQ|whatever. Кладем в очередь сообщения на обработку, помним про ограничения на размер сообщения.
2) Самописное решение на костылях и скотче, с использованием БД.
3) Сделать развязку в виде сервиса хранения данных и рест интерфейса. PHP принимает изображение, сохраняет, посылает рест запрос на обработку сообщения лежащего на сервере. ЛБ динамически распределяет запросы по молотилкам.
4) Any variants.

Но на самом деле есть вопрос. А много ли тех изображений? Может и не стоит заморачиваться-то?
Ответ написан
@lubezniy
Я бы сделал какой-нибудь сервер-диспетчер с хранилищем и очередью обработки (не важно, MQ или что-то самописное с базой). Его задачи:

1. Взаимодействие с клиентами - принимать входные данные и ставить их в очередь на обработку (в ответ выдаём какой-нибудь id), выдавать по переданному id состояние обработки (очередь, в работе, готово, ошибка) и по готовности результат
2. Взаимодействие с серверами-обработчиками - передавать полученные и готовые к старту задания по очереди на запросы готовности сервера к обработке задания, принимать результаты или сообщения об ошибках, мониторить работу серверов (если какой-то сервер слишком долго обрабатывает задание или не передаёт запросы готовности, уведомлять админа, а зависшее задание поставить как стартующее заново, чтобы другой сервер его перехватил).

В принципе можно поставить и несколько диспетчеров так, чтобы сервер-обработчик опрашивал их по очереди (допустим, основной и запасной).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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