Apache kafka kafka支持数百万个分区吗?

Apache kafka kafka支持数百万个分区吗?,apache-kafka,kafka-topic,kafka-partition,Apache Kafka,Kafka Topic,Kafka Partition,如果一个主题有数百万个分区,我们会有问题吗? 由于我们的业务需求,我们正在考虑是否可以为kafka中的每个用户创建一个分区。 我们有数百万用户。 如有任何见解,将不胜感激 是的,我认为如果您有数百万个分区,那么您最终会遇到问题,原因如下: (最重要的!!)客户来来往往,因此您需要不断更改分区的数量或拥有大量未使用的分区(因为您无法减少主题中的分区数量) 更多的分区需要更多的开放文件句柄:更多的分区意味着磁盘上有更多的目录和段文件 更多的分区可能会增加不可用性:计划内的故障会一次从代理中移除

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

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

  • (最重要的!!)客户来来往往,因此您需要不断更改分区的数量或拥有大量未使用的分区(因为您无法减少主题中的分区数量)

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

  • 更多的分区可能会增加不可用性:计划内的故障会一次从代理中移除一个领导者,每个分区的停机时间最少。在一次严重的失败中,所有的领导者都会立即失去工作

  • 更多的分区可能会增加端到端延迟:为了让使用者看到消息,必须提交消息。代理使用单个线程复制来自leader的数据,从而导致每个分区的开销

  • 更多的分区可能需要客户机中更多的内存

更多细节在Confluent的博客中提供

此外,根据Confluent针对卡夫卡开发者的培训材料,建议:

“当前限制(2-4K分区/代理,每个群集100s K分区)是最大值。大多数环境都远低于这些值(通常每个代理的范围为1000-1500或更少)。”

这解释了“ApacheKafka支持每个集群20万个分区”


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

出于兴趣,为什么您希望每个用户都有一个分区?如果您在用户ID上键入消息,那么仍然可以保证每次每个用户的数据都在同一个分区中,而不管分区的数量如何。