← Назад к вопросам

Что знаешь про Insync replica в Kafka?

1.3 Junior🔥 31 комментариев
#DevOps и инфраструктура#Django

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

In-Sync Replica (ISR) в Kafka

In-Sync Replica — это набор реплик партиции, которые синхронизированы с лидером. Это один из ключевых механизмов обеспечения надёжности и доступности в Kafka.

Что такое ISR?

ISR включает лидера и все реплики, которые:

  • Успешно реплицировали все сообщения до последнего известного положения
  • Имеют задержку репликации меньше, чем конфигурируемая граница (replica.lag.time.max.ms)
  • Активно общаются с контроллером и лидером

Как работает механизм ISR

# Пример конфигурации Kafka топика
# Партиция может иметь 3 реплики: лидер + 2 фолловера
# Если реплика отстаёт от лидера > 30 секунд (по умолчанию),
# она исключается из ISR

# Минимальное число ISR (min.insync.replicas) = 2
# Это означает, что сообщение считается репликованным,
# когда оно записано на лидер и минимум 1 фолловера

Ключевые параметры

replica.lag.time.max.ms (по умолчанию 30000 мс):

  • Максимальное время задержки репликации
  • Если фоллower не получал данные дольше этого времени, он исключается из ISR

min.insync.replicas (по умолчанию 1):

  • Минимальное количество реплик, которые должны подтвердить запись
  • При значении 2: сообщение безопасно, если записано на лидер + минимум 1 фолловер
  • Защищает от потери данных при падении лидера

unclean.leader.election.enable (по умолчанию false):

  • Если true, лидер может быть выбран из реплик, не входящих в ISR
  • Это может привести к потере данных, но повышает доступность

Жизненный цикл ISR

  1. Инициализация: все реплики в ISR
  2. Отставание: реплика отстаёт и исключается из ISR
  3. Восстановление: реплика догоняет лидера и возвращается в ISR
  4. Переизбрание лидера: новый лидер выбирается из ISR

Отказоустойчивость

Сценарий 1: Падение одной реплики

# Конфиг: 3 реплики, min.insync.replicas = 2
# Лидер + 2 фолловера в ISR
# Падает один фоллower → остаётся лидер + 1 фоллower
# ISR = 2 → сообщения еще записываются с acks=all

Сценарий 2: Партitioned лидер

# Старый лидер изолирован от кластера
# На других брокерах выбирается новый лидер из ISR
# Клиенты переключаются на нового лидера
# Старый лидер отклоняет запросы записи

Мониторинг ISR

Админам нужно следить за:

  • Размером ISR: если ISR < min.insync.replicas, запись блокируется
  • Лагом репликации: если растёт, реплики могут исключиться из ISR
  • Лидер-фолловер задержкой: через метрики Prometheus

Важные практики

  • Для критичных данных: установи min.insync.replicas ≥ 2
  • Для высокой доступности: используй 3+ реплик
  • Мониторь ISR: алерт, если размер ISR уменьшается
  • Не включай unclean.leader.election для данных, требующих гарантий

ISR — это баланс между надёжностью и производительностью. Он позволяет Kafka гарантировать, что данные не будут потеряны при отказе отдельных брокеров, сохраняя при этом высокую пропускную способность.

Что знаешь про Insync replica в Kafka? | PrepBro