0

我有一项使用 librdkafka 从 Kafka 主题读取的服务。我注意到,如果消费者关闭一段时间,一些日志条目会在 kafka 中建立(这完全没问题,也是意料之中的)

奇怪的是,有时当我启动消费者备份并按分区查看挂起的日志条目时,分配给同一消费者的分区似乎以不同的速度恢复。

例如,假设我有一个消费者 X,它声称分区 30 到 50。当消费者启动时,每个有 10,000 个待处理条目。

我看到的是 30-40 的未决条目呈下降趋势,而 41-50 的未决条目增长。当 30-40 最终达到零(或足够接近零)时,41-50 开始呈下降趋势。

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

4

1 回答 1

1

kafka 的工作方式是消费者将不断切换分区以获取数据,但是 Kafka 很聪明地确保切换并仅处理它可以根据消费者的能力处理的那些分区,即如果你的消费者更强大(服务器性能)它需要更多的分区,但没关系,在完成第一个分区后,第二个分区会占用剩余的分区。总而言之:如果您创建 X 个分区,您希望它在重新访问第一个分区之前一个接一个地完成,但这会通过更多的切换工作来消耗性能。在您的情况下,我了解由于其他分区也有业务数据,您不想严重延迟它们,我建议减少分区数量。

于 2019-04-06T07:59:10.030 回答