У нас есть сотни тысяч задач, которые нужно запускать с различными интервалами, каждый час, каждый день и т.д. Задачи являются ресурсоемкими и должны быть распределены между многими машинами.
Теперь задачи хранятся в базе данных с меткой "выполнить в это время". Чтобы найти задачи, которые необходимо выполнить, мы запрашиваем базу данных для заданий, которые должны быть выполнены, а затем обновляем временные метки, когда задача завершена. Естественно, это приводит к существенной нагрузке на запись в базе данных.
Насколько я могу судить, мы ищем что-то, чтобы выпустить задачи в очередь с заданным интервалом. (Рабочие могут затем запрашивать задания из этой очереди.)
Каков наилучший способ планирования повторяющихся задач в масштабе?
Для чего это стоит, мы в основном используем Python, хотя у нас нет проблем с использованием компонентов (RabbitMQ?), написанных на других языках.
ОБНОВЛЕНИЕ: Сейчас у нас есть около 350 000 задач, которые запускаются каждые полчаса или около того с некоторыми изменениями. 350 000 заданий * 48 раз в день - 16 800 000 заданий, выполняемых в день.
ОБНОВЛЕНИЕ 2: Нет зависимостей. Задачи не должны выполняться по порядку и не полагаться на предыдущие результаты.