Этот вопрос проверяет знание о ключевом понятии в Kafka для логической группировки и маршрутизации сообщений.
Топик — это именованный логический канал для сообщений в Kafka. Продюсеры отправляют данные в определённый топик, а консюмеры подписываются на топики, чтобы получать сообщения. Топики разбиваются на партиции для масштабирования и упорядоченного хранения.
Определение и назначение:
- Топик — именованный поток событий (например, user-signups).
- Помогает разделять сообщения по темам и логике приложения.
Партиции:
- Каждый топик делится на несколько партиций.
- Партиции обеспечивают параллелизм чтения и записи.
- Сообщения внутри партиции упорядочены по смещению (offset).
Продюсеры и консюмеры:
- Продюсер отправляет запись в топик:
producer.send("my-topic", key=b"user1", value=b"event-data")- Консюмер подписывается и читает:
consumer.subscribe(["my-topic"])
for msg in consumer:
process(msg.value)
Распределение нагрузки:
- Консюмер-группа читает партиции параллельно.
- Каждая партиция обрабатывается одним консюмером в группе.
Когда использовать:
- Для организации событийных потоков по категориям.
- При необходимости горизонтального масштабирования.