У нас есть приложение, которое должно
каждую ночь обрабатывать большие объемы данных и
повторно обрабатывать большие объемы данных по запросу.
В обоих этих случаях создается и затем запускается около 10 000 кварцевых заданий. В случае nightly у нас есть одно задание кварца cron
, которое порождает 10 000 заданий, каждое из которых по отдельности выполняет работу по обработке данных.
Проблема заключается в том, что мы работаем с примерно 30 потоками, поэтому, естественно, задания кварца дают осечку и продолжают сбоить, пока все не будет обработано. Обработка может занять до 6 часов. Каждое из этих 10 000 заданий относится к определенному объекту домена, который может обрабатываться параллельно и является полностью независимым. Каждое из 10 000 заданий может занять разное время (от полсекунды до минуты).
Мой вопрос:
Есть лучший способ сделать это?
Если нет, то как нам лучше всего запланировать/настроить наши кварцевые задания, чтобы минимальное количество времени тратилось на переборку и устранение осечек?
Примечание об архитектуре: мы используем два кластера с тремя узлами в каждом. Версия кварца немного устарела (2.0.1), а кластеризация включена в файле кварца.свойства.