Вопрос с собеседования · Spring

Как устроена chunk-ориентированная обработка в Spring Batch и что она даёт?

MiddleSpring Batch и IntegrationSpring
Ещё спрашивают так:
  • Что такое chunk в Spring Batch?
Коротко

Chunk — порция: прочитать N записей по одной, обработать, записать пачкой в одной транзакции. Память ограничена размером чанка, а после сбоя задание продолжается с последнего закоммиченного чанка.

  • Размер чанка — компромисс: больше — быстрее, но дольше откат и больше повтор
  • Ошибка в чанке — откат и повтор, с skip — пропуск плохих записей
  • Reader должен уметь продолжить с позиции (ItemStream)

А ещё Партиционирование — параллельные чанки по диапазонам

Подробно

Размер чанка задаёт компромисс: слишком маленький даёт много коммитов и накладных расходов, слишком большой удлиняет транзакцию и увеличивает потери при сбое. Ключевую роль играет JobRepository — он хранит метаданные о выполнении, благодаря чему упавшая работа перезапускается не с начала, а с последнего успешного чанка. Именно поэтому пакетная обработка на Spring Batch устойчивее самописного цикла: тот при падении на миллионной записи обычно требует ручного разбора. Полезно знать и про обработку сбойных записей — skip и retry с ограничениями позволяют не ронять всю работу из-за нескольких плохих строк.

Что хотят услышать

  • Схема read-process-write порциями.
  • Транзакция на чанк, память, перезапуск.

Частые ошибки

  • Ставить размер чанка равным всему объёму данных.
  • Писать пакетную обработку циклом без сохранения прогресса.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Все элементы читаются в память целиком, обрабатываются и пишутся одной общей транзакцией
  • ✗Каждый элемент обрабатывается в собственной транзакции
  • ✓Элементы копятся до размера чанка и пишутся пачкой в транзакции; сбой откатывает чанк
  • ✗Обработка идёт параллельно без транзакций вообще

Что спросят дальше

  • Как выбрать размер чанка?
  • Чем skip отличается от retry в Spring Batch?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования