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

时间:2019-04-05 22:05:24

标签: apache-kafka librdkafka

我有一个使用librdkafka从Kafka主题读取的服务。我注意到,如果使用者关闭一会儿,就会在kafka中建立一些日志条目(这完全可以,并且可以预期)

奇怪的是,有时当我备份使用者时,按分区查看待处理的日志条目时,分配给同一使用者的分区似乎以不同的速率恢复。

例如,假设我有一个使用者X,它声明了30到50的分区。当使用者启动时,每个条目上有10,000个待处理条目。

我看到的是30-40的待定条目下降,而41-50的待定条目增长。当30-40最终达到零(或接近零)时,41-50开始下降。

为什么会这样?是客户端功能还是服务器功能?

1 个答案:

答案 0 :(得分:1)

kafka的工作方式是消费者将继续在分区之间切换以获取数据,但是Kafka聪明地确保根据用户的容量(即,如果您的消费者是一位消费者)切换和处理它可以处理的许多分区。如果功能更强大(服务器性能),它将需要更多的分区,但是没关系,在完成第一个分区之后,第二步将剩下的分区。 总结:如果您创建X分区,您希望它在重新访问第一个分区之前会先经过所有分区,但是这样做会因切换时付出更多的努力而降低性能。 对于您而言,我知道由于其他分区也具有业务数据,因此您不想大量延迟它们,因此我建议减少分区的数量。