Получить доступ

Как min.insync.replicas работает вместе с acks=all?

SeniorРепликация KafkaKafka
Ещё спрашивают так:
  • Как гарантировать, что запись есть хотя бы на двух брокерах?
Коротко

min.insync.replicas — минимум реплик в ISR, при котором брокер принимает запись с acks=all. Если синхронных реплик меньше — продюсер получает ошибку NotEnoughReplicas.

  • Стандарт: replication.factor=3, min.insync.replicas=2 — переживает отказ одного брокера без потери и без остановки записи
  • min.insync.replicas=3 при RF=3 — отказ одного брокера останавливает запись
  • Влияет только на продюсеров с acks=all

А ещё Лучше отказ записи, чем подтверждение с одной копией

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

acks=all сам по себе означает «дождаться всех реплик в ISR», но если ISR схлопнулся до одной реплики (лидера), то acks=all формально выполняется и при потере этой реплики данные пропадут. min.insync.replicas (например, 2) задаёт нижнюю границу: при acks=all, если в ISR меньше этого числа, брокер отклоняет запись (NotEnoughReplicas), и продюсер узнаёт о проблеме, а не теряет данные тихо. Классическая надёжная связка: replication.factor=3, min.insync.replicas=2, acks=all — переживает отказ одной реплики и продолжает принимать запись.

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

  • Смысл параметра и связь с acks=all.
  • Типичная конфигурация и её отказоустойчивость.
  • Компромисс доступности записи и надёжности.

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

  • Ставить min.insync.replicas=replication.factor — кластер теряет запись при отказе любой одной реплики.
  • Считать, что acks=all без min.insync.replicas достаточно для надёжности.

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

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

Показать варианты и ответ
  • ✓min.insync.replicas задаёт минимум реплик в ISR, при котором приём записи с acks=all разрешён; если живых реплик в ISR меньше — продюсер получает ошибку, а не молчаливую потерю
  • ✗Это число consumer-ов, которые должны прочитать сообщение перед commit
  • ✗Это таймаут ожидания подтверждения от лидера
  • ✗Оно отключает репликацию, если реплик слишком много

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

  • Почему min.insync.replicas=RF — плохая идея?
  • Что вернёт продюсер при недоборе ISR?

Разбор темы

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

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем