我打算写我自己的 Partitioner
对Kafka制作人来说,我看到了Kafka的defaultpartitioner的实现。
我看到它叫群集的 availablePartitionsForTopic
有时打电话 partitionsForTopic
用于计算分区。
我阅读了文档,也看到了源代码,但是我看不出两者之间的区别。
有没有人能给我指出正确的文档或者解释一下两者的区别?
我打算写我自己的 Partitioner
对Kafka制作人来说,我看到了Kafka的defaultpartitioner的实现。
我看到它叫群集的 availablePartitionsForTopic
有时打电话 partitionsForTopic
用于计算分区。
我阅读了文档,也看到了源代码,但是我看不出两者之间的区别。
有没有人能给我指出正确的文档或者解释一下两者的区别?
2条答案
按热度按时间ubof19bj1#
如果您为一个记录指定一个键,kafka可能认为您肯定希望这个记录被发送到某个确定的分区,即使它当时不可用。
但是,如果没有指定密钥,那么kafka可能会认为您不关心记录所指向的目标分区,因此它会从那些“活动”分区中随机选取一个。
jv4diomz2#
回答问题的区别
partitionsForTopic
以及availablePartitionsForTopic
(不是怎么说的)DefaultPartitioner
使用它们来分配分区),代码是唯一的文档看一看
org.apache.kafka.common.Cluster
,正如你所看到的,两者之间的区别在于领导者的可用性