假设某个主题的分区数量是固定的。假设我在发布消息时提供了一个 key ——一个字节数组。 Kafka 会将键映射到主题分区 0,1,2,3,...N-1。
我想创建一个执行相同操作的函数:给定 N,并且键返回与 Kafka 相同的分区号。
这只是(伪代码) murmur3(key) % N 吗?
TIA
最佳答案
DefaultPartitioner
使用 murmur3
函数计算非空键消息的分区。
您可以提取算法并将其添加到您的代码中:
import org.apache.kafka.common.utils.Utils;
Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
第二个选项是仅使用DefaultPartitioner
:
DefaultPartitioner partitioner = new DefaultPartitioner();
int partition = partitioner.partition(???, ???, ???, ???, ???, ???);
关于apache-kafka - Kafka如何为key选择分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55841398/