Что такое Kafka

«Что такое Kafka» — вопрос из категории Брокеры сообщений, который задают на 34% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Kafka — это распределенный реплицированный журнал фиксации изменений (commit log) с высокой пропускной способностью и отказоустойчивостью. Работает по принципу publish-subscribe, храня сообщения в топиках (topics), разбитых на партиции (partitions) для параллельной обработки.
Журнал фиксации изменений, потому что сообщения хранятся в сегментированных, append-only журналах, которые называются топиками. Эта концепция журналирования является основным уникальным преимуществом Kafka’и.

Ключевые особенности:

  • Устойчивость: сообщения хранятся на диске и реплицируются.
  • Масштабируемость: горизонтальное масштабирование за счёт партиций.
  • Обработка в реальном времени: поддерживает потоковую обработку.

Пример на Go (с библиотекой sarama):

producer, err := sarama.NewSyncProducer([]string{"localhost:9092"}, nil)
if err != nil {
    log.Fatal(err)
}
defer producer.Close()

msg := &sarama.ProducerMessage{
    Topic: "test-topic",
    Value: sarama.StringEncoder("Hello Kafka!"),
}
partition, offset, err := producer.SendMessage(msg)

Используется для логов, событий, микросервисной коммуникации.