首页 > 解决方案 > Kafka如何为key选择分区?

问题描述

假设某个主题的分区数是固定的。假设我在发布消息时提供了一个键——一个字节数组。Kafka 会将密钥映射到主题分区 0,1,2,3,...N-1。

我想做一个做同样事情的函数:给定 N,键返回与 Kafka 相同的分区号。

这只是(在伪代码中)murmur3(key) % N 吗?

TIA

标签: apache-kafka

解决方案


DefaultPartitioner使用murmur3函数计算非空键的消息的分区。

您可以提取算法并添加到您的代码中:

import org.apache.kafka.common.utils.Utils;
Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;

第二种选择是只使用DefaultPartitioner

DefaultPartitioner partitioner = new DefaultPartitioner();
int partition = partitioner.partition(???, ???, ???, ???, ???, ???);

推荐阅读