在Kafka,消费者最多可以订阅多少个主题。我在任何地方都找不到这个值。如果消费者订阅了500000个或更多的主题,性能是否会下降。
utugiqy61#
从技术上讲,您可以订阅的主题的“最大”数量将受到用户进程可用内存空间的限制(如果您的主题被显式列出,那么java字符串池中很大一部分将是您的主题)。这似乎是不太可能的限制因素(列出许多明确禁止的主题)。另一个需要考虑的问题是如何在组协调器代理上设置主题分配数据结构。他们可能会用尽空间来记录主题分配,这取决于他们是如何做的。最后,最合理的是apachezookeeper节点上的可用内存。zk将所有数据保存在内存中以便快速检索。zk也不是分片的,这意味着所有数据必须适合一个节点。这意味着您可以创建的主题数量有限,这受zk节点上可用内存的限制。
xkftehaa2#
消费是由消费者发起的。订阅主题的行为并不意味着消费者将开始接收该主题的消息。因此,只要消费者能够对那么多主题进行民意调查和数据处理,Kafka也应该可以。
jv4diomz3#
从代理的Angular 来看,单个kafka集群中的500000个或更多主题将是一个糟糕的设计。您通常希望将主题分区的数量控制在几万个以下。如果你发现自己认为你需要Kafka中的许多主题,你可以考虑创建一个较少的主题,而不是500000或更多的键。Kafka的钥匙数量是无限的。
syqv5f0l4#
使用者是比kafka集群更独立的实体,除非您讨论的是kafka附带的内置命令行使用者也就是说,订阅Kafka主题的逻辑、订阅多少以及如何处理这些数据都取决于消费者。所以这里的可伸缩性问题在于消费者逻辑最后但并非最不重要的一点,我不确定这是一个好主意,消费者太多的主题在一个单一的消费者。kafka通过将消息分为不同的主题而提供的pub-sub机制的不同目的是方便使用不同的使用者处理特定类别的消息。所以我想如果你想用一个消费者来消费很多主题,比如说1000个主题,为什么要先用kafka把数据分成不同的主题呢。
4条答案
按热度按时间utugiqy61#
从技术上讲,您可以订阅的主题的“最大”数量将受到用户进程可用内存空间的限制(如果您的主题被显式列出,那么java字符串池中很大一部分将是您的主题)。这似乎是不太可能的限制因素(列出许多明确禁止的主题)。
另一个需要考虑的问题是如何在组协调器代理上设置主题分配数据结构。他们可能会用尽空间来记录主题分配,这取决于他们是如何做的。
最后,最合理的是apachezookeeper节点上的可用内存。zk将所有数据保存在内存中以便快速检索。zk也不是分片的,这意味着所有数据必须适合一个节点。这意味着您可以创建的主题数量有限,这受zk节点上可用内存的限制。
xkftehaa2#
消费是由消费者发起的。订阅主题的行为并不意味着消费者将开始接收该主题的消息。因此,只要消费者能够对那么多主题进行民意调查和数据处理,Kafka也应该可以。
jv4diomz3#
从代理的Angular 来看,单个kafka集群中的500000个或更多主题将是一个糟糕的设计。您通常希望将主题分区的数量控制在几万个以下。
如果你发现自己认为你需要Kafka中的许多主题,你可以考虑创建一个较少的主题,而不是500000或更多的键。Kafka的钥匙数量是无限的。
syqv5f0l4#
使用者是比kafka集群更独立的实体,除非您讨论的是kafka附带的内置命令行使用者
也就是说,订阅Kafka主题的逻辑、订阅多少以及如何处理这些数据都取决于消费者。所以这里的可伸缩性问题在于消费者逻辑
最后但并非最不重要的一点,我不确定这是一个好主意,消费者太多的主题在一个单一的消费者。kafka通过将消息分为不同的主题而提供的pub-sub机制的不同目的是方便使用不同的使用者处理特定类别的消息。所以我想如果你想用一个消费者来消费很多主题,比如说1000个主题,为什么要先用kafka把数据分成不同的主题呢。