我正在学习Kafka,并试图为我最近的搜索应用程序创建一个主题。被推送到Kafka主题的数据被认为是一个很高的数字。我的kafka集群有3个代理,并且已经为其他需求创建了一些主题。现在我应该为最近的搜索主题选择多少个分区?如果我没有明确提供分区号呢?在选择分区号时需要考虑什么?
hlswsv351#
在决定分区数量之前,我会考虑评估两个主要方面。第一点是,一个消费群体的分区、消费者如何共同行动。简单地说,一个使用者可以使用来自多个分区的消息,但是一个分区不能被多个使用者使用。这意味着,在一个消费者组中,分区数>=消费者数是有意义的。否则,您将拥有没有分配任何分区的使用者。第二点是,从延迟和吞吐量的Angular 来看,您的需求是什么。简单地说,延迟是执行某些操作或产生某些结果所需的时间。延迟是以时间为单位的——小时、分钟、秒、纳秒或时钟周期。吞吐量是每单位时间内执行的此类操作或生成的结果的数量现在,从kafka的观点来看,一般来说,kafka集群中的分区越多,吞吐量就越高。但是,如果你真的在寻找低延迟,你应该小心这个数字。
aiqt4smr2#
这将取决于您的消费者的吞吐量。如果您每秒生成100条消息,并且您的使用者每秒可以处理10条消息,那么您至少需要10个分区(生成/使用)和10个使用者示例。如果您希望本主题能够处理未来的增长,那么您需要将分区计数增加得更高,以便可以添加更多的使用者示例来处理新卷。另一条建议是使分区计数为一个高度可除的数字,这样您就可以在保持负载平衡的同时放大/缩小使用者。例如,如果您选择10个分区,那么您必须有1个、2个、5个或10个使用者示例,以使每个处理来自相同数量的分区。如果您选择12个分区,那么您可以使用1、2、3、4、6或12个使用者示例进行平衡。
2条答案
按热度按时间hlswsv351#
在决定分区数量之前,我会考虑评估两个主要方面。
第一点是,一个消费群体的分区、消费者如何共同行动。简单地说,一个使用者可以使用来自多个分区的消息,但是一个分区不能被多个使用者使用。这意味着,在一个消费者组中,分区数>=消费者数是有意义的。否则,您将拥有没有分配任何分区的使用者。
第二点是,从延迟和吞吐量的Angular 来看,您的需求是什么。简单地说,延迟是执行某些操作或产生某些结果所需的时间。延迟是以时间为单位的——小时、分钟、秒、纳秒或时钟周期。吞吐量是每单位时间内执行的此类操作或生成的结果的数量
现在,从kafka的观点来看,一般来说,kafka集群中的分区越多,吞吐量就越高。但是,如果你真的在寻找低延迟,你应该小心这个数字。
aiqt4smr2#
这将取决于您的消费者的吞吐量。如果您每秒生成100条消息,并且您的使用者每秒可以处理10条消息,那么您至少需要10个分区(生成/使用)和10个使用者示例。如果您希望本主题能够处理未来的增长,那么您需要将分区计数增加得更高,以便可以添加更多的使用者示例来处理新卷。
另一条建议是使分区计数为一个高度可除的数字,这样您就可以在保持负载平衡的同时放大/缩小使用者。例如,如果您选择10个分区,那么您必须有1个、2个、5个或10个使用者示例,以使每个处理来自相同数量的分区。如果您选择12个分区,那么您可以使用1、2、3、4、6或12个使用者示例进行平衡。