【问题标题】:Does kafka support millions of partitions?kafka 支持百万分区吗?
【发布时间】:2021-02-23 06:12:48
【问题描述】:

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

【问题讨论】:

  • 出于兴趣,为什么要为每个用户分配一个分区?如果您在用户 ID 上键入消息,那么您仍然可以保证每个用户的数据每次都在同一个分区中结束,而不管分区的数量是多少。

标签: apache-kafka kafka-topic kafka-partition


【解决方案1】:

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

  • (最重要的是!!)客户来来去去,所以你会需要不断地改变分区的数量或者有很多未使用的分区(因为你不能减少一个主题内的分区数量)。

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

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

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

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

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

另外,根据 Confluent 的 Kafka 开发者培训材料推荐:

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

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

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

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2015-01-01
    相关资源
    最近更新 更多