Partition в Kafka — это логически независимая упорядоченная лог-структура внутри топика, в которую последовательно записываются сообщения. Топик разбивается на несколько partition-ов, чтобы масштабировать пропускную способность и обрабатывать сообщения параллельно разными потребителями. Порядок сообщений гарантируется только внутри одной partition, а не между разными partition-ами.
В Kafka топик физически состоит из одной или нескольких partition (разделов). Каждый partition — это неизменяемый лог: новые сообщения только дописываются в конец, каждое сообщение получает смещeние offset, по которому его можно однозначно идентифицировать и прочитать.
Partition-ы распределяются по брокерам кластера, что позволяет горизонтально масштабировать систему: чем больше partition-ов у топика, тем на большее количество брокеров и потребителей можно разложить нагрузку. Производитель (producer) при отправке сообщения выбирает partition: либо по ключу сообщения (один и тот же ключ всегда попадёт в один и тот же partition, что сохраняет локальный порядок), либо по схеме по умолчанию (например, round-robin между partition-ами).
Каждый consumer в составе consumer group читает один или несколько выделенных ему partition-ов, и один partition в группе всегда обслуживается не более чем одним consumer-ом. Благодаря этому обеспечиваются: параллельная обработка (partition-ы распределяются между consumer-ами группы), сохранение порядка внутри partition и независимое масштабирование числа потребителей без потери семантики обработки.
Таким образом, partition в Kafka — это базовая единица масштабирования, параллелизма и отказоустойчивости. Правильный выбор их количества и схемы распределения сообщений по partition-ам критичен для производительности и стабильности системы.
Отметьте свой прогресс