Разница между подпружиненным удаленным разделением на части и удаленным разделением
В чем разница между групповым удаленным разделением на блоки и удаленным разделением?
Я не могу понять разницу между удаленным разделением на части и удаленным разделением в весенней партии. Кто-нибудь может объяснить, пожалуйста?
2 ответа
Дистанционное разбиение
Разделение - это конфигурация шага "главный / подчиненный", которая позволяет обрабатывать разделы данных параллельно. Каждый раздел описывается с помощью некоторых метаданных. Например, если вы обрабатывали таблицу базы данных, раздел 1 может иметь идентификаторы 0-100, раздел 2 - 101-200 и т. Д. Для Spring Batch мастер-шаг использует Partitioner для генерации ExecutionContexts, который содержит метаданные для каждого раздела. Эти ExecutionContexts распределяются на подчиненный шаг для обработки PartitionHandler (для удаленного разделения обычно используется MessageChannelPartitionHandler). Ведомые устройства выполняют свой шаг и возвращают полученные состояния для агрегирования мастером.
Что нужно отметить по поводу удаленного разбиения:
- Вход и выход являются локальными для рабов. Например, если входной файл является файлом, ведомые устройства должны иметь доступ к файлу.
- Рабы должны иметь доступ к JobRepository. Подчиненные устройства - полностью определенные шаги Spring Batch, поэтому им необходим доступ к JobRepository.
Дистанционное чанкинг
Удаленное разбиение на блоки аналогично удаленному разделению в том, что это конфигурация ведущий / ведомый. Однако при удаленном разделении данных данные считываются ведущим и отправляются по проводам на ведомое устройство для обработки. Как только обработка завершена, результат ItemProcessor возвращается мастеру для записи.
Что следует отметить при удаленном чанкинге:
- Все операции ввода / вывода выполняются мастером.
- Подчиненные обрабатывают только обработку и поэтому не нуждаются в доступе к JobRepository.
- Удаленное разбиение на блоки требует больше операций ввода-вывода, чем удаленное разбиение, поскольку фактические данные передаются по проводам, а не метаданным, которые их описывают.
Я рассказал о масштабировании Spring Batch и демонстрации удаленного разбиения, которую вы можете посмотреть здесь: http://www.youtube.com/watch?v=CYTj5YT7CZU
Удаленное разделение
Удаленное разбиение на фрагменты — это подход «менеджер/работник», который позволяет разработчикам Spring Batch масштабировать пакетные приложения.
При удаленном разбиении на фрагменты обработка Step разделена между несколькими процессами, которые взаимодействуют друг с другом через некоторое промежуточное программное обеспечение для обмена сообщениями.
Обработкой и записью занимается рабочий, а чтением — мастер. Менеджер должен прочитать, а затем передать фактические записи работнику по сети (например, тема кафки).
Учебник:https://www.youtube.com/watch?v=-MFtwajUalg
Удаленное разбиение
Удаленное разбиение на разделы позволяет распределить рабочую нагрузку на несколько JVM. По умолчанию Spring Batch предоставляет PartitionHandler на основе сообщений, который можно использовать для разветвления обработки между JVM.
Плюсы: возможность перезапуска. Охватывает JVM. Безопасность потока
Минусы: сложная настройка разделителя и развертывания рабочего процесса.