В настоящее время я работаю над проектом, в котором мне нужно обрабатывать большое количество повторяющихся заданий. Обычно, когда работа закончена, я хочу начать ее снова через 15 минут.
Набор заданий динамически меняется со временем, и поэтому мне нужно будет отслеживать новые и удаленные задания.
Каждая работа может занять некоторое время, поэтому мне нужно иметь возможность масштабировать. У меня будет веб-сайт для управления этими заданиями.
Я рассматриваю возможность использования MongoDB (с шардингом) для хранения заданий.
Затем я мог бы создать «брокера заданий», чтобы часто запрашивать базу данных, чтобы увидеть, готовы ли какие-либо задания и использовать, например, RabbitMQ для начала работы над набором рабочих.
Есть несколько очень очевидных проблем с этой настройкой:
- "Брокер заданий" является узким местом и единой точкой отказа
- Очень частый запрос MongoDB к потенциально огромной коллекции кажется плохим решением.
Я не ограничен этой технологией, но я просто не знаю, как мне планировать архитектуру для этого. Есть идеи?