Sobes.tech
Назад к вопросам
Junior — Middle
55

Можете объяснить, что подразумевается под топиком в системе Kafka?

Компании, где спрашивали
ООО Клеркгрупп

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

sobes.tech AI

Что хотят услышать интервьюеры:

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

Определение:

Топик в Kafka — это именованная категория, в которую записываются сообщения одного типа или назначения.
Физически топик обычно разбит на партиции, и Kafka хранит сообщения в каждой партиции как последовательный лог. Сообщения не удаляются сразу после чтения, а остаются доступными в течение заданного времени хранения или пока не будет достигнут лимит по размеру.

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

Допустим, в системе интернет-магазина есть топик orders-created.
Когда пользователь оформляет заказ, сервис заказов публикует событие в этот топик.
Сервис доставки, аналитика и уведомления могут независимо читать эти события и выполнять свои задачи.

// Пример логики на уровне приложения: отправка события в топик Kafka
public class OrderCreatedEvent
{
    public Guid OrderId { get; set; }
    public DateTime CreatedAt { get; set; }
}

var message = new OrderCreatedEvent
{
    OrderId = Guid.NewGuid(),
    CreatedAt = DateTime.UtcNow
};

// Далее это событие сериализуется и отправляется в топик "orders-created"
// через Kafka producer (конкретная реализация зависит от библиотеки).

Пояснение кода:

Код показывает не сам Kafka-клиент, а смысл события, которое отправляется в топик.
Сначала создается объект OrderCreatedEvent — это полезная нагрузка сообщения.
Потом этот объект сериализуется и публикуется в топик orders-created.
После этого любое количество независимых потребителей может прочитать это сообщение и обработать его по-своему.

Ключевые моменты:

  • Топик — это логическое имя потока сообщений в Kafka.
  • Продюсеры пишут в топик, консюмеры читают из него.
  • Топик обычно делится на партиции для параллелизма и масштабирования.
  • Kafka хранит сообщения по принципу append-only, а не как классическую очередь с немедленным удалением.
  • Один и тот же топик могут читать несколько независимых приложений.
  • Важно различать топик и партицию: топик — это сущность верхнего уровня, партиция — способ физического распределения данных.