Этот вопрос проверяет базовое понимание структуры хранения данных в Kafka.
Topic — это логический канал для сообщений одного типа. Partition — это часть topic’а, в которой сообщения хранятся последовательно. Topic всегда состоит из одного или нескольких partition’ов. Порядок сообщений гарантируется только внутри одного partition’а. Partition’ы позволяют Kafka масштабироваться и обрабатывать данные параллельно.
Topic — логическое хранилище сообщений, объединенных по смыслу.
Partition — физически и логически независимая часть topic’а с упорядоченным журналом сообщений.
Topic используется для:
логического разделения данных,
подписки consumer’ов,
настройки политик хранения.
Producer всегда пишет сообщения именно в topic.
Partition решает несколько задач:
Масштабирование записи и чтения
Параллельная обработка данных
Гарантия порядка сообщений
Важно понимать ограничение Kafka:
порядок сообщений сохраняется только внутри одного partition’а,
между partition’ами порядок не гарантирован.
Если topic имеет 3 partition’а:
сообщения могут распределяться между ними,
три consumer’а могут читать данные параллельно,
каждый consumer будет читать только свои partition’ы.
Topic orders
├─ Partition 0
├─ Partition 1
└─ Partition 2
Topic отвечает за логическую группировку сообщений, а partition — за масштабируемость, параллелизм и порядок внутри Kafka.