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

Как работает Kafka? Расскажите про гарантии доставки и идемпотентность

Компании, где спрашивали
А7

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

sobes.tech AI

Kafka работает как распределённый журнал событий, где данные записываются в топики, разбитые на партиции. Производители (producers) публикуют сообщения, а потребители (consumers) читают их, сохраняя смещение (offset).

Гарантии доставки:

  • At most once — сообщение может быть потеряно, если не подтверждено.
  • At least once — сообщение гарантированно доставлено, но может быть продублировано.
  • Exactly once — при использовании идемпотентных продюсеров и транзакций Kafka обеспечивает ровно одну доставку.

Идемпотентность: Идемпотентный продюсер в Kafka — это такой, который при повторной отправке одного и того же сообщения не создаёт дубликатов. Это достигается за счёт уникальных идентификаторов сообщений и контроля последовательности.

Пример настройки идемпотентного продюсера на Go с использованием библиотеки sarama:

config := sarama.NewConfig()
config.Producer.Idempotent = true
producer, err := sarama.NewSyncProducer(brokers, config)
if err != nil {
    panic(err)
}
// Теперь продюсер гарантирует ровно одну доставку сообщений

Таким образом, Kafka обеспечивает высокую надёжность и масштабируемость при работе с потоками данных.