Этот вопрос проверяет понимание динамики consumer group и того, как Kafka реагирует на изменения в группе.
Rebalance — это процесс перераспределения partition’ов между consumer’ами в группе. Он происходит при изменении состава группы или конфигурации topic’ов. Во время rebalance consumer’ы временно перестают читать сообщения. После завершения rebalance каждый consumer получает новый набор partition’ов. Это встроенный механизм поддержания консистентности группы.
Rebalance — это процесс, при котором Kafka пересчитывает и переназначает partition’ы consumer’ам внутри consumer group.
Rebalance запускается в нескольких случаях:
Consumer подключился к группе
Consumer отключился или упал
Изменилось количество partition’ов
Истек таймаут heartbeat
Процесс включает несколько этапов:
Все consumer’ы приостанавливают чтение
Coordinator собирает текущее состояние группы
Вычисляется новое распределение partition’ов
Consumer’ы получают новые назначения
Во время rebalance:
чтение сообщений временно останавливается
возможны небольшие задержки обработки
порядок сообщений внутри partition сохраняется
На практике используют:
sticky стратегию распределения
настройку таймаутов heartbeat
стабильное количество consumer’ов
Rebalance — необходимый механизм Kafka, обеспечивающий корректное распределение partition’ов при изменениях в consumer group, но он временно приостанавливает обработку сообщений.