kafka支持百万分区吗?

Does kafka support millions of partitions?

如果一个主题有数百万个分区,我们会有什么问题吗? 由于我们的业务需求,我们在考虑是否可以为kafka中的每个用户做一个分区。 我们有数百万用户。 任何见解将不胜感激!

是的,我认为如果您有数百万个分区,您最终会遇到问题,原因如下:

  • (最重要!!) 客户来来去去,所以你会有不断改变分区数量的需求,或者有大量未使用的分区(因为你无法减少分区数量在主题内)。

  • 更多分区需要更多打开文件句柄:更多分区意味着磁盘上有更多目录和段文件。

  • 更多的分区可能会增加不可用性:计划中的故障一次将一个领导者从代理中移出,每个分区的停机时间最短。在硬故障中,所有领导者立即不可用。

  • 更多分区可能会增加端到端延迟:要让消费者看到消息,必须提交消息。 Broker 使用单个线程从领导者复制数据,导致每个分区的开销。

  • 更多分区可能需要更多客户端内存

Confluent 在 How to choose the number of topics/partitions in a Kafka cluster? 上的博客中提供了更多详细信息。

此外,根据 Confluent 对 Kafka 开发人员的培训material,建议:

"The current limits (2-4K Partitions/Broker, 100s K Partitions per cluster) are maximums. Most environments are well below these values (typically in the 1000-1500 range or less per Broker)."

blog 解释了“Apache Kafka 支持每个集群 200K 个分区”。

这可能会随着 Zookeeper 的更换而改变 KIP-500 但是,再一次,看看上面的第一个要点仍然是一个不健康的软件设计。