在同一组ID上添加消费者时,Kafka消费者阅读率似乎下降

时间:2019-08-14 12:15:29

标签: apache-kafka kafka-consumer-api

我创建了一个Kafka主题,并在该主题上产生了数据(5gb的csv记录)。我将分区数设置为等于我要使用的使用者数。我的Apache Kafka设置由3个代理组成。我不对数据使用复制。

从一个节点使用主题时(只有一个使用者和一个分区的情况),使用者以每秒65K记录的速度获取数据。

从两个节点(拥有两个使用者和两个分区的情况)消耗主题时,每个使用者以总速率120K记录/秒(每个使用者60K)的速度获取数据。

添加更多的使用者和分区(例如再增加10个),每个使用者的吞吐量将降低,并且总吞吐量似乎稳定在一个值上(达到420K)。

这是Apache Kafka的预期行为吗?我一直在等待,通过增加越来越多的消费者,总体吞吐量将线性增加。

2 个答案:

答案 0 :(得分:1)

如果使用者组中的使用者多于分区数,则它们将保持空闲状态。权威指南到卡夫卡书中的图片会很有帮助

enter image description here 就消费者吞吐量而言,除了分区/消费者的数量外,还取决于消费者的处理方式。消息使用可能存在瓶颈,这可能会限制吞吐量。 here在Confluent的一篇文章中也证实了这一事实

  

使用者的吞吐量通常取决于应用程序,因为它   对应于使用者逻辑可以处理每个消息的速度。   因此,您确实需要进行测量。

答案 1 :(得分:0)

Kafka群集中的更多分区会导致更高的吞吐量,但是,您需要意识到分区的数量会影响可用性和延迟。

通常会有更多分区

  • 实现更高的吞吐量
  • 需要更多打开的文件句柄
  • 可能会增加不可用
  • 可能会增加端到端延迟
  • 可能在客户端需要更多的内存

您需要研究取舍,并确保已选择满足吞吐量,延迟和所需资源要求的分区数量。

有关更多详细信息,请参见this blog post from Confluent.