我正在学习 Kafka 并尝试为我最近的搜索应用程序创建一个主题。假设推送到 kafka 主题的数据数量很大。
我的 kafka 集群有 3 个代理,并且已经为其他需求创建了主题。
现在我应该为我最近的搜索主题选择多少分区?如果我没有明确提供分区号怎么办?选择分区号时需要考虑哪些事项?
我正在学习 Kafka 并尝试为我最近的搜索应用程序创建一个主题。假设推送到 kafka 主题的数据数量很大。
我的 kafka 集群有 3 个代理,并且已经为其他需求创建了主题。
现在我应该为我最近的搜索主题选择多少分区?如果我没有明确提供分区号怎么办?选择分区号时需要考虑哪些事项?
这将取决于您的消费者的吞吐量。如果您每秒产生 100 条消息,而您的消费者每秒可以处理 10 条消息,那么您将需要至少 10 个分区(生产/消费)和 10 个消费者实例。如果您希望该主题能够处理未来的增长,那么您将希望将分区计数增加得更高,以便您可以添加更多消费者实例来处理新卷。
另一个建议是让您的分区计数一个高度可整除的数字,以便您可以在保持负载平衡的同时扩大/缩小消费者。例如,如果您选择 10 个分区,那么您必须拥有 1、2、5 或 10 个消费者实例,以使它们每次处理都来自相同数量的分区。如果您选择 12 个分区,那么您可以使用 1、2、3、4、6 或 12 个消费者实例来平衡。
在决定分区数量之前,我会考虑评估两件主要事情。
第一点是,消费者组的分区,消费者如何一起行动。简单来说,一个消费者可以消费来自多个分区的消息,但一个分区不能被多个消费者消费。这意味着,消费者组中的分区数 >= 消费者数是有意义的。否则,您最终将获得没有分配任何分区的消费者。
第二点是,从延迟与整个角度来看,您的要求是什么。简单来说, 延迟是执行某些操作或产生某些结果所需的时间。延迟以时间单位测量——小时、分钟、秒、纳秒或时钟周期。 吞吐量是每单位时间执行的此类操作或产生的结果的数量
现在,回到从 kafka 的角度进行比较,一般来说,Kafka 集群中的更多分区会导致更高的吞吐量。但是,如果你真的在寻找低延迟,你应该小心这个数字。