Что такое high watermark в Kafka и как он связан с видимостью сообщений для consumer-а?
- Почему потребитель не видит только что записанное сообщение?
High watermark — offset, до которого запись реплицирована на все реплики ISR. Потребители видят сообщения только до него: иначе прочитали бы данные, которые могут исчезнуть при смене лидера.
- Log end offset лидера может быть больше HW — хвост ещё не реплицирован
- Новый лидер обрезает журнал до HW
- read_committed дополнительно скрывает незавершённые транзакции (LSO)
А ещё Поэтому задержка видимости зависит от репликации
Подробно
Лидер принимает записи и продвигает свой log end offset, но consumer-ам отдаёт только сообщения до high watermark — границы, до которой данные подтверждены всеми репликами ISR. Это не даёт прочитать сообщение, которое может пропасть, если лидер упадёт до его репликации. Поэтому реплицированность напрямую влияет на задержку видимости: пока фолловеры не догнали, новое сообщение consumer не увидит.
Что хотят услышать
- Определение HW.
- Зачем скрывать сообщения выше HW.
- Связь с выбором лидера.
Частые ошибки
- Путать high watermark (граница видимости) с committed offset потребителя.
- Думать, что consumer видит всё, что записал лидер.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Offset, реплицированный во все реплики ISR; consumer читает только до него
- ✗Последний offset, закоммиченный consumer-ом; всё, что дальше, считается непрочитанным
- ✗Это максимальный размер партиции на диске
- ✗Это таймаут, после которого сообщение удаляется
Что спросят дальше
- Почему consumer не видит незареплицированные сообщения?
- Что такое log end offset?
Разбор темы
- Kafka replication и отказоустойчивость
Leader/followers, ISR и lag, связка acks/min.insync, high watermark и видимость для consumer, выборы лидера и unclean election, rack awareness.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.