Sobes.tech
Назад к вопросам
Senior
4

Как Kafka распределяет сообщения по партициям?

Компании, где спрашивали
Позитив Технолоджис

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

sobes.tech AI

Kafka распределяет сообщения по партициям темы с помощью партиционирования, чтобы обеспечить масштабируемость и упорядоченность.

Основные способы распределения:

  1. Ключ сообщения (message key): Если у сообщения есть ключ, Kafka использует хеш-функцию (обычно murmur2) от ключа, чтобы определить, в какую партицию отправить сообщение. Это гарантирует, что все сообщения с одинаковым ключом попадут в одну и ту же партицию, сохраняя порядок.

  2. Ручное указание партиции: Продюсер может явно указать номер партиции при отправке.

  3. Round-robin: Если ключа нет, и партиция не указана, продюсер распределяет сообщения по партициям циклически, чтобы равномерно нагрузить брокеры.

Таким образом, ключи обеспечивают логическую группировку и порядок, а отсутствие ключа — балансировку нагрузки.

Пример на Java:

ProducerRecord<String, String> record = new ProducerRecord<>("topic", key, value);
producer.send(record);

Kafka сама вычислит партицию по ключу.