Пакетное задание Java в кластерной среде - PullRequest
5 голосов
/ 21 июля 2011

У нас есть кластер с 2 узлами JBOSS. У нас есть пакетное задание, которое загружает все данные пользователей из активного каталога в БД. Эта работа выполняется каждый день. Ранее он запускался в некластерной среде, поэтому мы разработали его как синглтон. Сейчас у нас кластерная среда, и я не знаю, как лучше всего добиться того же результата. Я хочу, чтобы пакетная работа выполнялась только один раз в день. Мы используем Spring и Hibernate, и я посмотрел на пакет Spring. Я не смог получить краткий ответ на мой вопрос.

Может кто-нибудь сообщить мне, если вы внедрили пакет в кластерной среде? Что было бы лучшим решением в этом сценарии?

Ответы [ 3 ]

6 голосов
/ 26 февраля 2012

Мы реализовали это, запустив и запустив задания извне через MQ (HTTP-запрос на запуск задания также будет работать). Планировщик помещает сообщение в очередь, и, хотя у нас есть n узлов, прослушивающих очередь, один узел получит сообщение и, основываясь на его содержимом, запустит задание. Вы можете сделать это и с HTTP.

Реальным «решением» этого является планирование пакетного задания «внешне», а не с помощью внутреннего триггера cron. Фактический механизм запуска является вторичным по отношению к этому.

1 голос
/ 10 октября 2014

Рассмотрим также https://github.com/willschipp/spring-batch-cluster, который имеет

  • запись для репозитория пакетных заданий
  • HA для пакета в кластере (автоматическая остановка и отработка выполнения заданий)
0 голосов
/ 11 октября 2017

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

Заметьте, что бы это ни стоило, пост в блоге о пакетных заданиях в кластерных средах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...