nuc*_*tus 5 apache-kafka kafka-producer-api
Kafka org.apache.kafka.clients.producer.internals.DefaultPartitioner
实现中有一个非常小但非常强大的细节,这让我很烦恼.
正是这行代码:
return DefaultPartitioner.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
Run Code Online (Sandbox Code Playgroud)
更确切地说,是最后一个% numPartitions
.我一直在问自己,通过使分区ID成为现有分区数量的函数,引入如此巨大约束的原因是什么?只是为了方便小数字(人类可读/可追踪?!)与分区总数相比?这里有没有人对这个问题有更广泛的了解?
我问这个是因为在我们的实现中,我们用来在kafka中存储数据的密钥是域敏感的,我们使用它来基于kafka从kafka中检索信息.例如,我们的消费者只需要订阅那些对他们感兴趣的分区,而我们进行链接的方式就是使用这些密钥.
使用不进行模数操作的自定义分区程序会安全吗?我们是否应该注意到性能下降 这对生产者和/或消费者方面有什么影响吗?
欢迎任何想法和意见.
归档时间: |
|
查看次数: |
7224 次 |
最近记录: |