【发布时间】:2018-11-10 21:08:09
【问题描述】:
我们有大约 40 个主题的 Kafka 实现,每个主题有 40 个分区和 3 个复制。我们在 Kafka 设置中有 7 个代理和 40 个消费者。所有节点(对于代理和消费者)都具有合理的配置、托管和 AWS,我们几乎看不到任何机器出现任何峰值。但不知何故,我们发现消费者滞后非常高,尽管增加了 40 个消费者来满足上述设置的阅读需求。尽管我们每秒只有大约 215 条消息(每条消息的大小约为 2KB),但对于上述主题。已尽一切可能,但我们无法解决延迟问题。
我们还看到消费者大部分时间都处于空闲状态,偶尔会消费消息。 40 个消费者是否足以处理上述场景(40 个主题和 40 个分区,每个主题每秒有大约 215 条消息 (430 K) 摄取?请帮助。
【问题讨论】:
-
所以你的意思是每个消费者从 40 个不同主题的 1 个分区中消费,(总共 1 个消费者 = 40 个分区,对于 1 个消费者来说是巨大的)
-
尝试为消费者使用消费者组,并保持消费者数量等于该主题上的分区数量。我会将一组主题的消费者分成不同的组。前任。 40 个消费者专门听 10 个主题,4 个这样的组(总共运行 160 个消费者)。这需要反复试验才能找出最适合您的 SLA 的组合。
-
@Deadpool,感谢您的评论。我想,你在这个场景中。是的,每个消费者都在阅读 40 个不同主题的 1 个分区,我同意这可能是巨大的。那个时候也是这样,我以为消费者应该是一直在看,但是我看到消费者是闲着很长时间,偶尔消费,很混乱。
-
@segFaulter,感谢您的评论。每个消费者实例使用大约 1 GB 的 RAM 来运行,因此添加 160 个消费者将在设置环境方面产生大量成本。
-
消费者一次可以从一个分区进行轮询,(因此假设每次轮询需要 1 秒,因此它应该从 1 轮询到 40 次,因此完成分配给它的所有分区的 40 次轮询需要 40 秒) ,当没有足够的数据在分区中轮询时,消费者可以坐在理想的位置,导致这种情况的消费者因素有很多
标签: apache-kafka kafka-consumer-api