【问题标题】:Maximum subscription limit of Kafka Topics Per Consumer每个消费者的 Kafka 主题的最大订阅限制
【发布时间】:2017-09-20 13:40:39
【问题描述】:

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

如果消费者订阅500000或更多主题,性能是否会降级。

【问题讨论】:

    标签: apache-kafka kafka-consumer-api


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      另一个考虑因素是如何在 Group Coordinator Brokers 设置主题分配数据结构。他们可能会用完空间来记录主题分配,具体取决于他们如何做。

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:
          • 消费者是相对于 Kafka 集群相当独立的实体,除非您谈论的是 Kafka 附带的内置命令行消费者
          • 说订阅kafka主题的逻辑,订阅多少以及如何处理该数据取决于消费者。所以这里的可扩展性问题在于消费者逻辑
          • 最后但并非最不重要的一点是,我不确定在一个消费者中消费太多主题是否是个好主意。 Kafka 通过将消息分离到各种主题中提供的 pub sub 机制的不同目的是促进使用单独的消费者处理特定类别的消息。所以我认为如果你想使用一个消费者来消费很多主题,比如几千个主题,为什么要先使用 Kafka 将数据划分为单独的主题。

          【讨论】:

            猜你喜欢
            • 2017-05-16
            • 2017-07-31
            • 1970-01-01
            • 1970-01-01
            • 2018-01-19
            • 1970-01-01
            • 2017-01-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多