Sobes.tech
Back to questions
Middle
3

Какие гарантии доставки есть в Kafka? Расскажи про At Most Once, At Least Once, Exactly Once.

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

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

  1. At Most Once (не более одного раза)

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

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

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

Пример использования:

// Пример конфигурации продюсера для идемпотентной отправки (Exactly Once)
producer, err := kafka.NewProducer(&kafka.ConfigMap{
    "bootstrap.servers": "localhost:9092",
    "enable.idempotence": true, // включает идемпотентность
    "acks": "all",
})

Таким образом, выбор гарантии доставки зависит от требований к надёжности и производительности системы.