Jal*_*Jal 5 apache-kafka kafka-consumer-api
我正在尝试调试一个问题,我试图证明如果集群没有重新平衡,每个不同的键只会转到 1 个分区。
所以我想知道对于给定的主题,有没有办法确定密钥发送到哪个分区?
您需要byte[] keyBytes假设它不为空,然后使用org.apache.kafka.common.utils.Utils,您可以运行以下命令。
Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
Run Code Online (Sandbox Code Playgroud)
对于字符串或 JSON,它是 UTF8 编码的,Utils 类有帮助函数来获取它。
对于 Avro,例如 Confluent 序列化值,它有点复杂(一个魔术字节,然后是架构 ID,然后是数据)。见电线格式
只转到 1 个分区
这不是保证。哈希可能会发生冲突。
说一个给定的键不在多个分区中更有意义。
如果集群没有重新平衡
重新平衡仍将保留分区值。
| 归档时间: |
|
| 查看次数: |
4877 次 |
| 最近记录: |