0

我知道kafka console producer命令,它非常方便。我想知道当我们也有密钥时,是否有办法确定哪个密钥将进入哪个分区?假设我们在 kafka 主题中有 10 个分区,生产者将如何决定 key 将去哪个分区?

我认为它可能会使用key.toString.hashCode() % (num_of_partitons),但我认为这不是 kafka 控制台制作人采用的方式。

我们可以检查将数据发送到哪个分区生产者吗?

4

1 回答 1

1

如果使用默认分区器,它不会对键字符串值进行哈希编码,而是使用Murmur2哈希算法,如org.apache.kafka.clients.producer.internals.DefaultPartitioner代码中所示:

Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;

该算法的实现可以在这里找到。

于 2020-02-15T20:56:50.187 回答