每个消费者的Kafka主题的最大订阅限制

时间:2017-09-18 17:00:28

标签: apache-kafka kafka-consumer-api

消费者在Kafka中订阅的主题的最大限制是多少。我无法在任何地方找到这个值。

如果消费者订阅了500000个或更多主题,那么性能会降级吗。

4 个答案:

答案 0 :(得分:2)

要技术化,您可以订阅的“最大”主题数量将受到使用者进程的可用内存空间的限制(如果您的主题已明确列出,那么Java String池的很大一部分将是您的话题)。这似乎不太可能是限制因素(列出许多主题明确禁止)。

另一个考虑因素是如何在Group Coordinator Brokers中设置主题分配数据结构。它们可能会用尽空间来记录主题分配,具体取决于它们的工作方式。

最后,最合理的是Apache Zookeeper节点上的可用内存。 ZK将所有数据保存在内存中以便快速检索。 ZK也没有分片,这意味着所有数据必须适合一个节点。这意味着您可以创建的主题数量有限制,这受到ZK节点上可用内存的限制。

答案 1 :(得分:1)

消费是由消费者发起的。订阅主题的行为并不意味着消费者将开始接收该主题的消息。因此,只要消费者可以轮询和处理这么多主题的数据,Kafka也应该没问题。

答案 2 :(得分:1)

从代理的角度来看,单个Kafka集群中的500,000个或更多主题将是一个糟糕的设计。您通常希望将主题分区的数量减少到数万个。

如果您发现自己认为在Kafka中需要许多主题,则可能需要考虑创建较少数量的主题并使用500,000或更多密钥。卡夫卡的钥匙数量是无限的。

答案 3 :(得分:0)

  • 消费者是一个相当独立的实体,而不是Kafka集群,除非你在谈论随Kafka一起提供的命令行消费者生成
  • 那说订阅kafka主题的逻辑,订阅了多少以及如何处理这些数据取决于消费者。因此,可扩展性问题在于消费者逻辑
  • 最后但并非最不重要,我不确定在单个消费者中消费太多主题是个好主意。 Kafka通过将消息分隔成各种主题而提供的pub子机制的不同目的是促进使用单独的消费者处理特定类别的消息。因此,我认为如果您想使用单个消费者消费许多主题,例如少数几个主题,为什么首先使用Kafka将数据划分为单独的主题。