Sobes.tech
Back to questions
Middle+
3

Как обеспечивается гарантия доставки в Kafka? Опиши всю цепочку от подготовки до обработки получателем.

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Гарантия доставки сообщений в Kafka обеспечивается несколькими механизмами на разных этапах:

  1. Подготовка сообщения (продюсер):

    • Продюсер отправляет сообщение в определённый топик и партицию.
    • Можно настроить уровень подтверждений (acks):
      • acks=0 — не ждёт подтверждения (нет гарантии доставки).
      • acks=1 — ждёт подтверждения от лидера партиции.
      • acks=all (или -1) — ждёт подтверждения от всех реплик, что обеспечивает максимальную надёжность.
    • Продюсер может повторять отправку при ошибках (retries).
  2. Хранение в брокере:

    • Сообщение записывается в журнал (log) партиции.
    • Репликация между брокерами обеспечивает отказоустойчивость.
    • Сообщение считается подтверждённым, когда достигнуто необходимое число реплик.
  3. Обработка получателем (консюмер):

    • Консюмер читает сообщения из партиции по смещению (offset).
    • Для гарантии доставки консюмеры могут использовать ручное подтверждение обработки (commit offset) после успешной обработки.
    • Если консюмер упадёт до подтверждения, сообщение будет прочитано повторно.

Таким образом, цепочка гарантии доставки строится на:

  • настройке продюсера (acks, retries),
  • репликации и подтверждении записи в брокерах,
  • контроле обработки и подтверждения консюмерами.

Это позволяет достичь "at least once" доставки, а при дополнительной логике обработки — "exactly once".