Kafka多个分区未在多个使用者之间拆分

xmd2e60i  于 2022-12-11  发布在  Apache
关注(0)|答案(1)|浏览(135)

我有一个在Linux上运行的Kafka安装程序,我已经将www.example.com中的分区数设置server.properties为5,我还将我正在使用的主题(我们称之为topic 1)的分区数设置为5。
现在,我有5个消费者(用Java实现)订阅了上面的主题。我希望所有5个分区应该在所有5个消费者之间平均分配流量。
我尝试了以下方法:
1.确保在主题级别和server.properties中将分区数设置为5。
1.我运行以确保此主题有5个分区:
kafka-topics.sh --zookeeper localhost:2181 --describe --topic topic1 Topic: topic1 TopicId: 4kX9oP3ARA2uHQ1_nVGY-Q PartitionCount: 5 ReplicationFactor: 1 Configs: Topic: topic1 Partition: 0 Leader: 0 Replicas: 0 Isr: 0 Topic: topic1 Partition: 1 Leader: none Replicas: 1 Isr: 1 Topic: topic1 Partition: 2 Leader: none Replicas: 2 Isr: 2 Topic: topic1 Partition: 3 Leader: none Replicas: 3 Isr: 3 Topic: topic1 Partition: 4 Leader: none Replicas: 4 Isr: 4
1.我也在另一个Windows设置中运行了一个类似的配置,其中有5个分区和5个消费者。但在那里,我可以看到所有5个消费者都平等地获得了数据。
1.但是在我上面提到的Linux设置中,它总是只针对1个消费者。
关于如何调试此问题的任何输入?从Kafka主题描述的输出中,可以清楚地看到此主题有5个分区。但这5个分区仍然没有在5个可用的使用者之间拆分。
有没有办法通过命令行或Kafka日志来检查测试运行期间实际使用了多少分区?如果Kafka主题描述为5个分区,这是否意味着在运行测试时也使用了5个分区?
请注意,我正在这台机器上运行负载测试--有100多个用户触发数据。

htzpubme

htzpubme1#

期望所有5个分区应该在所有5个使用者之间平均划分流量
分区不是这样工作的。
你的制作人(不清楚你在用什么; Kafka包含自己的producer-perf-test CLI工具)指定记录到达的位置。如果您为每个记录指定非空键,则分区将基于这些值的哈希值进行计算,并且可能存在重叠,从而导致分区无法获得任何记录。只有当您的生成器使用空键时,数据才会在同一请求中循环使用,而不是“在多个运行中平均分配”
使用GetOffsetShell检查哪些分区有数据。

相关问题