Распределить обработку записей заданий планировщика - PullRequest
0 голосов
/ 09 марта 2019

Я работаю над сценарием использования, где у меня запланировано задание cron (через кварц), которое читает определенные записи из базы данных и обрабатывает их.Теперь в каждом расписании я могу получить тысячи записей, которые нужно обработать.Обработка каждой записи занимает время (в секундах / минутах).В настоящее время все эти записи обрабатываются на одном узле (узле, выбранном кварцем).Теперь моя задача - распараллелить обработку этих записей.Пожалуйста, помогите мне решить следующие проблемы:

  1. Как я могу распространить эти записи / задачи на кластер машин
  2. Если какой-либо компьютер дает сбой после обработки нескольких записей, то остальные записи должны быть обработаныпо исправным узлам в кластере
  3. Получите сигнал о завершении обработки всех записей.

1 Ответ

0 голосов
/ 12 марта 2019

Создание заданий cron для запуска отдельно на каждом хосте с желаемой частотой Вам потребуется некоторая форма блокировки для каждой записи или некоторая форма блокировки диапазона для набора записей, чтобы серверы обрабатывали взаимоисключающий набор записей.

например. : Вы можете добавить следующее новое поле ко всем записям:

заблокировано сервером: Заблокировано на время действия (или время истечения блокировки):

При каждом запуске каждый хрон выбирает набор записей с истекшими или пустыми блокировками, а затем фиксирует блокировку на небольшом наборе записей, помещая эти две записи. Затем он приступает к их обработке. Если он выходит из строя или застревает, срок действия блокировки истекает, в противном случае он освобождается при завершении.

...