gpt4 book ai didi

apache-kafka - Kafka DefaultPartitioner 算法

转载 作者:行者123 更新时间:2023-12-04 17:07:49 25 4
gpt4 key购买 nike

Kafka中有一个很小但很强大的细节org.apache.kafka.clients.producer.internals.DefaultPartitioner让我很烦恼的实现。

这是这行代码:

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

更准确地说,最后一个 % numPartitions .我一直在问自己,通过使分区 ID 成为现有分区数量的函数来引入如此巨大的约束的原因是什么?只是为了方便与分区总数相比有少量(人类可读/可追踪?!)?这里有人对这个问题有更广泛的了解吗?

我问这个是因为在我们的实现中,我们用来在 kafka 中存储数据的 key 是域敏感的,我们使用它来基于它从 kafka 检索信息。例如,我们有消费者只需要订阅他们感兴趣的分区,我们这样做的方式就是使用这些键。

使用不进行模运算的自定义分区器是否安全?我们是否应该注意到任何性能下降。这对生产者和/或消费者方面有任何影响吗?

欢迎任何想法和意见。

最佳答案

Kafka 主题中的分区编号从 0...N .因此,如果一个键被散列来确定一个分区,那么结果散列值必须在区间 [0;N] 内。 -- 它必须是一个有效的分区号。

使用模运算是散列中的标准技术。

关于apache-kafka - Kafka DefaultPartitioner 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39791349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com