kafka主题中理想的分区数是多少?

时间:2019-11-11 17:45:26

标签: apache-kafka kafka-consumer-api kafka-producer-api kafka-topic

我正在学习Kafka,并尝试为我最近的搜索应用程序创建一个主题。假定推送到kafka主题的数据数量很多。

我的kafka集群有3个代理,并且已经为其他需求创建了主题。

现在应该为我最近的搜索主题选择多少个分区?如果我没有明确提供分区号怎么办?选择分区号时需要考虑什么?

2 个答案:

答案 0 :(得分:2)

这将取决于您的消费者的吞吐量。如果您每秒产生100条消息,并且您的使用者每秒可以处理10条消息,那么您将需要至少10个具有10个使用者实例的分区(生产/使用)。如果您希望本主题能够处理未来的增长,那么您将希望增加分区数,以便可以添加更多的消费者实例来处理新的卷。

另一条建议是使分区计数为高度可分割的数字,以便您可以扩大/缩小消费者,同时保持他们的负载平衡。例如,如果选择10个分区,则必须拥有1、2、5或10个使用者实例,以使它们的每次处理均来自相同数量的分区。如果您选择12个分区,则可以与1、2、3、4、6或12个使用者实例保持平衡。

答案 1 :(得分:0)

在确定分区号之前,我会考虑评估两个主要方面。

  1. 第一点是,消费者组的分区,消费者如何共同行动。简而言之,一个使用者可以使用多个分区中的消息,但是一个分区不能由一个以上的使用者使用。这就是说,在一个消费者组中有大于等于消费者数量的分区数量是有意义的。否则,最终将导致没有分配任何分区的使用者。

  2. 第二点是,从延迟到整个角度来看,您有什么要求? 简单来说 等待时间是执行某些操作或产生某些结果所需的时间。延迟以时间单位-小时,分钟,秒,纳秒或时钟周期来衡量。 吞吐量是每单位时间执行的此类操作或产生的结果的数量

现在,从kafka的角度出发再进行比较,通常来说,Kafka集群中的更多分区可以提高吞吐量。但是,如果您确实希望获得低延迟,则应谨慎使用此数字。

相关问题