Кафка: Возможно ли, чтобы один и тот же ключ (строка) разрешался в несколько разделов в Кафке? - PullRequest
0 голосов
/ 26 мая 2018

Мы читаем входящие записи из нашего приложения и используем идентификатор пользователя (в виде строки) в качестве Ключа для записи производителя при создании записи производителя в 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);
    }
...