Sobes.tech
Назад к вопросам
Senior
8

Расскажи про виды гарантии доставки в Kafka, чем они отличаются, в каком случае лучше использовать какие

Компании, где спрашивали
Сбер Право

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

sobes.tech AI

В Kafka есть три основных уровня гарантии доставки сообщений:

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

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

    • Сообщение гарантированно доставляется, но может быть доставлено несколько раз (дублирование возможно).
    • Это стандартный режим работы Kafka с подтверждениями (acks=all) и повторными попытками.
    • Подходит для систем, где потеря данных недопустима, а дублирование можно обработать.
  3. Exactly once (ровно один раз)

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

Выбор зависит от требований к системе:

  • Если важна скорость и потеря сообщений допустима — at most once.
  • Если важна надежность и можно обработать дубли — at least once.
  • Если нужна строгая точность — exactly once, но с дополнительными накладными расходами.