Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kafka: replication, offset

За счет каких механизмов Kafka может обеспечивать надёжность доставки сообщений?

Вопрос проверяет знание внутренних механизмов Kafka и понимание, как достигается надежность в распределенной системе.

Короткий ответ

Kafka обеспечивает надежность за счет репликации, подтверждений записи и управления offset’ами. Сообщения записываются на диск и дублируются между брокерами. Producer может ждать подтверждения от нескольких реплик. Consumer сам управляет моментом подтверждения обработки. В совокупности это позволяет избежать потерь данных.

Длинный ответ

Надежность Kafka строится не на одном механизме, а на их комбинации.

Репликация партиций

Каждая партиция может иметь несколько реплик:

  • одна leader

  • несколько follower

Сообщение считается надежно записанным, когда оно:

  • сохранено на leader

  • подтверждено follower’ами (в зависимости от настроек)

Подтверждения producer’а

Producer может управлять уровнем надежности через параметр acks:

  • acks=0 — без подтверждений

  • acks=1 — только leader

  • acks=all — leader + все in-sync реплики

Чем выше acks, тем выше надежность и задержки.

Хранение на диске

Kafka:

  • пишет данные последовательно

  • использует файловую систему

  • не хранит сообщения только в памяти

Это позволяет переживать перезапуски брокеров без потери данных.

Управление offset’ами

Consumer:

  • сам решает, когда зафиксировать offset

  • может коммитить offset после успешной обработки

Пример:

// обработка сообщения
process(record);
// фиксация offset после обработки
consumer.commitSync();

Это позволяет реализовать at least once доставку.

Idempotent producer и транзакции

Kafka поддерживает:

  • idempotent producer

  • транзакционные записи

Это снижает вероятность дубликатов и позволяет приблизиться к exactly once семантике.

Вывод: Kafka обеспечивает надежность за счет репликации, подтверждений, дискового хранения и контроля обработки на стороне consumer’а.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Kafka

    Kafka

Ключевые слова

#replication

#offset

Подпишись на Java Developer в телеграм