← Назад к вопросам
Что знаешь про 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
- Инициализация: все реплики в ISR
- Отставание: реплика отстаёт и исключается из ISR
- Восстановление: реплика догоняет лидера и возвращается в ISR
- Переизбрание лидера: новый лидер выбирается из 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 гарантировать, что данные не будут потеряны при отказе отдельных брокеров, сохраняя при этом высокую пропускную способность.