apache-kafka - Kafka如何为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(???, ???, ???, ???, ???, ???);
推荐阅读
- google-analytics - 如何在 GA4 中设置跨域跟踪?
- javascript - 尽管条件为真,但 Array.filter() 返回空数组
- excel - 前一个连续调用的子程序出错时停止处理
- python - python和R之间的差异结果,均值和协方差
- nginx - nginx X-Accel-Redirect 重定向到后端而不是指定的链接
- c# - 检查打印是否成功
- javascript - 是否可以在 IIS 中为 chakra.dll JavaScript 引擎添加处理程序?
- c++ - 不熟悉的“模板”使用
- javascript - Node js在无限循环中调用有限数量的函数以寻找新任务
- javascript - 如何找到没有类的元素