Рекомендуемый подход для параллельных пружинных пакетных работ

Документация Spring Batch Integration объясняет, как использовать удаленное разбиение на части и разбиение на разделы для шагов, см.

http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html#externalizing-batch-process-execution.

Наша работа не состоит из простых шагов чтения / обработки / записи. Поэтому мы просто хотим, чтобы целые задания выполнялись параллельно, и каждое задание передавалось в разные разделы.

Есть ли уже шаблон для этого в Spring Batch? Или мне нужно будет реализовать свой собственный JobLauncher, чтобы поддерживать пул подчиненных серверов для запуска заданий?

Ура, Менно


person Menno    schedule 10.10.2014    source источник


Ответы (1)


Spring Batch, в частности, занимает позицию не обрабатывать оркестровку заданий (о чем, по сути, и идет ваш вопрос). Для чего-то вроде этого есть несколько подходов:

  • Распределенный планировщик - большинство распределенных планировщиков могут выполнять задачи на нескольких узлах. Например, у кварца есть распределенный режим.
  • Использование удаленного разбиения на разделы для оркестрации - удаленное разбиение на разделы выполняет полные шаги Spring Batch в качестве ведомых устройств. Нет причин, по которым эти шаги не могут быть шагами работы, которые выполняют работу.
  • Запуск заданий на основе сообщений - Spring Batch Integration (дочерний модуль Spring Batch) предоставляет средства для запуска заданий через сообщения. Другой подход состоит в том, чтобы иметь набор ведомых устройств, слушающих очередь, ожидающих сообщения для запуска задания. Вам придется каким-то образом справиться с такими вещами, как балансировка нагрузки между ведомыми устройствами, но это еще один распространенный подход к управлению оркестровкой заданий.
person Michael Minella    schedule 10.10.2014
comment
Разве это не выполнение задания, а не согласование заданий, поскольку меня не интересует рабочий поток между заданиями? Я уже использую Spring Batch Integration для запуска заданий, управляемых сообщениями. Но когда я начал думать о том, как наилучшим образом реализовать параллельные задания, я не был уверен, нужно ли иметь несколько программ запуска заданий, по одной на каждом ведомом устройстве, с общим репозиторием заданий. Или иметь одну главную программу запуска заданий, которая может обрабатывать распределение / балансировку заданий. Но подчиненным в любом случае потребуется общий репозиторий заданий для хранения контекстов заданий на случай сбоя / перезапуска задания. То же самое для удаленного разбиения на разделы с этапами задания. Отсюда мой вопрос. - person Menno; 11.10.2014