В Kafka после обнаружения отказа consumer его партиции перераспределяются между живыми участниками группы. Новый владелец продолжает с сохранённого offset, поэтому возможны повторы.
Что происходит, если один из consumer'ов в группе отваливается? Расскажите про ребалансировку.
В Kafka после обнаружения отказа consumer его партиции перераспределяются между живыми участниками группы. Новый владелец продолжает с сохранённого offset, поэтому возможны повторы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Kafka после обнаружения отказа consumer его партиции перераспределяются между живыми участниками группы. Новый владелец продолжает с сохранённого offset, поэтому возможны повторы.
Отказ обнаруживают по правилам протокола группы, heartbeat и таймаутам; точные параметры зависят от протокола и версии клиента. При ребалансировке меняется назначение партиций, а отдельные участники могут временно остановить их обработку.
Если сообщение обработано, но прогресс не подтверждён, новый consumer получит его снова. Если offset сохранён раньше результата, возможен пропуск бизнес-обработки. Поэтому нужны правильный порядок подтверждения, идемпотентность и контролируемая остановка.
Источник: Документация Apache Kafka.