Использование Quartz для планирования одного задания на нескольких серверах приложений без сохранения состояния

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

До сих пор это работало нормально, но теперь я хотел бы иметь запланированное задание, которое выполняется ровно на одном из серверов приложений. Все серверы приложений будут работать с Quartz и будут иметь одинаковое расписание для выполнения заданий. Триггер срабатывает на каждом сервере приложений, но я бы хотел, чтобы только один сервер приложений действительно выполнял задание - по сути, все они гонятся за запуском, и только один запускается, остальные серверы приложений просто игнорируют задание. Идея здесь в том, что если мы потеряем сервер приложений, другой будет выполнять задание вместо него, а если мы добавим новые серверы приложений, они займутся выполнением заданий.

Я планировал сделать это, имея ' Блокировка задания »в базе данных, которую все серверы приложений будут читать перед запуском задания и запускать только в том случае, если задание« разблокировано ». Сервер приложений, который первым выполняет обновление таблицы, по существу блокирует другие, обновляя таблицу до состояния выполнения / сбрасывая ее в конце задания.

Прежде чем я создам это, я был бы признателен за некоторые комментарии от тех, кто больше опыта работы с Quartz:

a) Могу ли я подключить это поведение к Quartz, чтобы его не приходилось выполнять для каждой работы? Т.е. разработчики могут добавлять новые задания, не беспокоясь о блокировке заданий, поскольку они абстрагируются.

б) Предоставляет ли Quartz какие-либо встроенные механизмы для достижения чего-то похожего на вышеупомянутое, чтобы мне не приходилось делать это самому?

Спасибо!

21
задан Scruffers 12 July 2011 в 11:02
поделиться