我创建了一个Kafka主题,并在该主题上产生了数据(5gb的csv记录)。我将分区数设置为等于我要使用的使用者数。我的Apache Kafka设置由3个代理组成。我不对数据使用复制。
从一个节点使用主题时(只有一个使用者和一个分区的情况),使用者以每秒65K记录的速度获取数据。
从两个节点(拥有两个使用者和两个分区的情况)消耗主题时,每个使用者以总速率120K记录/秒(每个使用者60K)的速度获取数据。
添加更多的使用者和分区(例如再增加10个),每个使用者的吞吐量将降低,并且总吞吐量似乎稳定在一个值上(达到420K)。
这是Apache Kafka的预期行为吗?我一直在等待,通过增加越来越多的消费者,总体吞吐量将线性增加。
答案 0 :(得分:1)
如果使用者组中的使用者多于分区数,则它们将保持空闲状态。权威指南到卡夫卡书中的图片会很有帮助
就消费者吞吐量而言,除了分区/消费者的数量外,还取决于消费者的处理方式。消息使用可能存在瓶颈,这可能会限制吞吐量。 here在Confluent的一篇文章中也证实了这一事实
使用者的吞吐量通常取决于应用程序,因为它 对应于使用者逻辑可以处理每个消息的速度。 因此,您确实需要进行测量。
答案 1 :(得分:0)
Kafka群集中的更多分区会导致更高的吞吐量,但是,您需要意识到分区的数量会影响可用性和延迟。
通常会有更多分区
您需要研究取舍,并确保已选择满足吞吐量,延迟和所需资源要求的分区数量。
有关更多详细信息,请参见this blog post from Confluent.