Sobes.tech
Назад к вопросам
Middle — Middle+
70

Какие типы гарантий доставки сообщений реализованы в Kafka и как они работают на практике?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Kafka реализует три основных типа гарантий доставки сообщений:

  1. At most once (не более одного раза)

    • Сообщение может быть доставлено 0 или 1 раз.
    • Нет повторной отправки при сбоях, возможна потеря сообщений.
    • Используется, когда важна скорость, а потеря сообщений допустима.
  2. At least once (не менее одного раза)

    • Сообщение гарантированно будет доставлено, но может быть доставлено несколько раз (дубликаты).
    • Обычно достигается подтверждениями (acks) и повторной отправкой при ошибках.
    • Требует обработки дубликатов на стороне потребителя.
  3. Exactly once (ровно один раз)

    • Сообщение доставляется и обрабатывается ровно один раз.
    • Реализуется с помощью транзакций Kafka и идемпотентных продюсеров.
    • Позволяет избежать дубликатов и потерь, но требует дополнительной настройки и ресурсов.

На практике:

  • Для at least once обычно продюсер ждёт подтверждения записи (acks=all), а потребитель коммитит смещения после обработки.
  • Для exactly once включают идемпотентность продюсера (enable.idempotence=true) и используют транзакции.

Это позволяет балансировать между производительностью и надёжностью доставки сообщений.