Kafka:相同的Key(字符串)是否可以解析为Kafka中的多个分区?

时间:2018-05-26 14:17:34

标签: apache-kafka kafka-producer-api

我们从应用程序中读取传入的记录,并在Kafka中创建生产者记录时使用用户ID(作为字符串)作为生产者记录的密钥。应用程序每天处理数千个用户ID。

我们注意到,具有相同密钥(Z132384910042467345-0)的记录大多数时间被发送到同一分区(分区2),但有时会被发送到分区1和0.鉴于我们在Kafka这是可能的吗?不要使用CustomPartitioner?我查看了源代码,他们对密钥%分区计数进行哈希处理以到达分区,但无法弄清楚为什么相同的密钥映射到不同的分区。

P.S:还查看了任何异常的源数据(包含用户ID)但找不到任何内容。

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);
    }

0 个答案:

没有答案