Мы читаем входящие записи из нашего приложения и используем идентификатор пользователя (в виде строки) в качестве Ключа для записи производителя при создании записи производителя в Kafka.Существуют тысячи идентификаторов пользователей, которые приложение обрабатывает в день.
Мы заметили, что записи с одинаковым ключом (Z132384910042467345-0) отправлялись в один и тот же раздел (раздел 2) в большинстве случаев, но иногдаотправка в раздел 1 и 0. Возможно ли это в Kafka, если мы не используем CustomPartitioner?Я посмотрел на исходный код, и они делают хэширование ключа% подсчета разделов, чтобы добраться до раздела, но не могу понять, почему один и тот же ключ сопоставлен с различными разделами.
PS: Также просматривал исходные данные (содержащие идентификаторы пользователей) на предмет каких-либо аномалий, но ничего не смог найти.
if (partitionKey != null && partitionKey.length() > 0){
kafkaProps = kafkaConfigService.getProps(kafkaConfigService.getKafkaMode());
record = new ProducerRecord(topicName, partitionKey, data);
} else {
LOG.error("partitionKey is null. Choosing a random partition");
kafkaProps = kafkaConfigService.getProps(kafkaConfigService.getKafkaMode());
record = new ProducerRecord(topicName, data);
}