我阅读了 apache kafka 的文档,但找不到在任何情况下应该使用多少个分区的示例。
例如,假设我每分钟有 5000 条消息/条目,对于这种情况,我应该有多少个分区(或者您推荐多少个分区)?
或者有什么方法可以计算这个吗?也许有一个我可以参考的数值表?
答案1
没有很好的默认分区数,您应该提供更多信息。
这取决于消息的大小、您的平台和使用模式。服务器可以存储所有带有保留设置的消息吗?如果不能,您应该将数据拆分为多个分区。如果您需要更好的吞吐量,或者您需要按顺序处理消息,或者可以不受顺序限制地使用数据,情况也是如此。还有一个关于您预期的消息被使用的延迟的问题。如果您的消息很重要,您必须为每个分区添加副本并确认所有副本上的所有消息,因此这会降低吞吐量。
您还需要指定您给出的数字是关于生成的消息还是消费的消息。
考虑到 Kafka 构建时消息处理速度很快,每分钟 5000 条消息的速度非常低。我轻松实现了每台服务器每秒注入 10000 条消息,大小为 1kb。
每分钟 5000 条消息,即每秒 84 条消息,因此,如果您的消费者应用程序的一个实例可以处理这个数量,那就很好了,否则您可以考虑添加分区并并行运行多个消费者应用程序,每个应用程序将负责一个分区。
Confluent Inc 已发布一篇关于如何选择分区数量(以及副本数量)的博客文章。