ApacheKafka—当使用者从多个分区读取数据时,某些分区似乎优先

gzszwxb4  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(421)

我有一个使用librdkafka读取Kafka主题的服务。我注意到,如果消费者关闭一段时间,一些日志条目会在kafka中积累起来(这是完全可以预料的)
奇怪的是,有时当我启动消费者备份并按分区查看挂起的日志条目时,分配给同一消费者的分区似乎以不同的速率恢复。
例如,假设我有一个消费者x,它声明分区30到50。当消费者启动时,每个服务器上有10000个条目等待处理。
我看到的是,30-40岁的待处理条目呈下降趋势,而41-50岁的待处理条目呈增长趋势。当30-40最终达到零(或接近零)时,41-50开始下降。
为什么会这样?它是客户端功能还是服务器功能?

jckbn6z7

jckbn6z71#

Kafka的工作方式是,消费者会不断切换分区以获取数据,不过,kafka很聪明,它可以根据用户的容量来确保只切换和处理多个分区,也就是说,如果用户的功能更强大(服务器性能),它会占用更多的分区,但更不用说,在第一个分区完成后,它会在第二个分区中占用剩余的分区。总而言之:如果您创建x个分区,您希望它在重新访问第一个分区之前逐个检查所有分区,但这会降低切换的性能。在您的例子中,我知道由于其他分区也有业务数据,您不想严重延迟它们,所以我建议减少分区的数量。

相关问题