С Kafka производитель отвечает за присвоение раздела каждой записи.
Это настраивается с использованием параметра partitioner.class
.Если вы не изменили это, тогда секционер по умолчанию работает следующим образом:
- Если в записи указан раздел, используйте его
- Если нетраздел указан, но ключ присутствует, выберите раздел на основе хэша ключа
- Если раздел или ключ отсутствуют, выберите раздел в циклическом режиме
Такпохоже, у вас есть ключи, которые не распределены однородно.Либо у вас мало разных ключей, либо значительно больше записей с определенным ключом.Ключи обычно используются для обеспечения того, чтобы записи с одним и тем же ключом отправлялись в одни и те же разделы (и, следовательно, оставались в порядке).
Немного перекос в сторону раздела не обязательно плох, он в основном зависит от вашего варианта использования.Если вы считаете, что данные могут быть лучше разделены, вы можете реализовать свой собственный разделитель.