Ответ
Партиции — это фундаментальный механизм горизонтального масштабирования и параллелизма в Kafka.
Ключевые причины:
- Масштабирование потребителей (Consumer Scaling): Сообщения в одной партиции потребляются только одним консюмером в рамках consumer group. Несколько партиций позволяют распределить нагрузку между несколькими консюмерами, увеличивая пропускную способность обработки.
- Группа из 3 консюмеров может параллельно читать из топика с 3 партициями.
- Параллелизм продюсеров (Producer Parallelism): Продюсеры могут писать в разные партиции одновременно, увеличивая throughput записи.
- Гарантия порядка (Ordering Guarantee): Kafka гарантирует порядок доставки сообщений только в пределах одной партиции. Это позволяет балансировать между параллелизмом и семантикой порядка.
- Распределение и отказоустойчивость: Партиции распределяются по брокерам кластера, а их реплики обеспечивают отказоустойчивость.
Пример создания топика:
# Создание топика 'user-events' с 6 партициями и фактором репликации 3
kafka-topics.sh --create
--topic user-events
--partitions 6
--replication-factor 3
--bootstrap-server kafka-broker-1:9092
На что влияет количество партиций:
- Максимальный параллелизм consumer group = количество партиций.
- Распределение данных по брокерам кластера.
- Увеличение партиций после создания топика возможно, но может нарушить семантику хеширования ключей.