Выбор ответа Middle Kafka спрашивают часто обновлено

acks=all и min.insync.replicas

Вопрос

Топик с фактором репликации 3, min.insync.replicas=2, продюсер с acks=all. Два брокера из трёх упали. Что будет с записью в партицию, у которой в ISR остался только лидер?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Запись отклонят с ошибкой: в ISR меньше двух реплик, без избыточности Kafka не подтвердит. С acks=all запись подтверждается всеми репликами из ISR, а min.insync.replicas задаёт минимальный размер ISR для приёма записи.

Варианты ответа

  1. Запись пройдёт без репликации, а лидер догонит реплики, когда брокеры поднимутся
  2. Kafka подождёт и подтвердит запись, когда брокеры поднимутся, не возвращая ошибку
  3. Запись отклонят с ошибкой: в ISR меньше двух реплик, без избыточности Kafka не подтвердитправильный ответ
  4. Продюсер автоматически переключится на acks=1 и продолжит запись в лидера без ожидания

Разбор

С acks=all запись подтверждается всеми репликами из ISR, а min.insync.replicas задаёт минимальный размер ISR для приёма записи. При одной живой реплике запись отклоняется (NotEnoughReplicas), продюсер может повторять. Это выбор в пользу надёжности, а не доступности. Тихой записи без репликации не будет. Автоматического понижения acks нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.