为什么在未指定分区键时数据在分区之间不均匀分布?

时间:2017-05-03 20:15:40

标签: apache-kafka

这个解释在Kafka 10中仍然有效吗?

在Kafka生产者中,可以指定分区键以指示消息的目标分区。默认情况下,基于散列的分区程序用于确定给定密钥的分区ID,人们也可以使用自定义分区程序。 要减少打开套接字的数量,在0.8.0(https://issues.apache.org/jira/browse/KAFKA-1017)中,当未指定分区键或为null时,生产者将选择一个随机分区并坚持一段时间(默认为10分钟)切换到另一个。因此,如果生成器少于分区,则在给定时间点,某些分区可能不会接收任何数据。为了缓解此问题,可以减少元数据刷新间隔或指定消息密钥和自定义随机分区程序。有关更多详细信息,请参阅此主题http://mail-archives.apache.org/mod_mbox/kafka-dev/201310.mbox/%3CCAFbh0Q0aVh%2Bvqxfy7H-%2BMnRFBt6BnyoZk1LWBoMspwSmTqUKMg%40mail.gmail.com%3E

从这里https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-Whyisdatanotevenlydistributedamongpartitionswhenapartitioningkeyisnotspecified

1 个答案:

答案 0 :(得分:0)

新制作人已更改为使用循环策略。也就是说,如果没有指定密钥,消息将被均匀地传递到所有分区。