Назад к вопросам
СБЕР
Middle
4
Какие гарантии доставки есть в Kafka? Расскажи про At Most Once, At Least Once, Exactly Once.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Kafka есть три основных модели гарантии доставки сообщений:
-
At Most Once (не более одного раза)
- Сообщение может быть доставлено 0 или 1 раз.
- Нет повторной отправки при ошибках, поэтому возможна потеря сообщений.
- Используется, когда важна скорость и потеря сообщений допустима.
-
At Least Once (минимум один раз)
- Сообщение гарантированно будет доставлено хотя бы один раз.
- Возможны дубликаты, если при подтверждении доставки произошёл сбой и сообщение отправлено повторно.
- Это стандартный режим работы Kafka при использовании подтверждений (acks) и повторных попыток.
-
Exactly Once (ровно один раз)
- Гарантирует, что каждое сообщение будет обработано ровно один раз.
- В Kafka достигается с помощью идемпотентного продюсера и транзакций.
- Позволяет избежать дубликатов и потерь, но требует дополнительной настройки и ресурсов.
Пример использования:
// Пример конфигурации продюсера для идемпотентной отправки (Exactly Once)
producer, err := kafka.NewProducer(&kafka.ConfigMap{
"bootstrap.servers": "localhost:9092",
"enable.idempotence": true, // включает идемпотентность
"acks": "all",
})
Таким образом, выбор гарантии доставки зависит от требований к надёжности и производительности системы.