Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 在kafka消费端使用assign代替subscribe_Apache Kafka - Fatal编程技术网

Apache kafka 在kafka消费端使用assign代替subscribe

Apache kafka 在kafka消费端使用assign代替subscribe,apache-kafka,Apache Kafka,当我有1000个web服务器并且所有人都对某个主题的消息感兴趣时。我正在考虑将特定数据写入主题的特定分区,1000多台服务器对该特定分区中的数据感兴趣。实现分配而不是订阅有多好。这种方法的可扩展性如何。我可以指定1000多个消费者从特定分区读取数据。在卡夫卡中,每个消费者都属于一个消费者组。当Kafka生产者向特定组发送消息时,分区的记录将被传递给单个使用者 如果分区的数量大于使用者的数量,则一些使用者将使用来自多个分区的数据。另一方面,如果使用者的数量大于分区的数量,则一些使用者将处于非活动状

当我有1000个web服务器并且所有人都对某个主题的消息感兴趣时。我正在考虑将特定数据写入主题的特定分区,1000多台服务器对该特定分区中的数据感兴趣。实现分配而不是订阅有多好。这种方法的可扩展性如何。我可以指定1000多个消费者从特定分区读取数据。

在卡夫卡中,每个消费者都属于一个消费者组。当Kafka生产者向特定组发送消息时,分区的记录将被传递给单个使用者

如果分区的数量大于使用者的数量,则一些使用者将使用来自多个分区的数据。另一方面,如果使用者的数量大于分区的数量,则一些使用者将处于非活动状态,因为它们将不会收到任何数据

不能有多个使用者(在同一使用者组中)使用来自单个分区的数据。因此,为了使用N个使用者使用来自同一分区的数据,您还需要创建N个不同的使用者组

注意,分区增强了Kafka集群内的并行性。如果您创建数千个使用者来只使用一个分区中的数据,我怀疑您将失去某种程度的并行性。


订阅与分配

订阅利用消费者群体;Kafka coordinator将分配发送给使用者,订阅主题的分区将分发给该组中的实例


将强制指定给主题列表

谢谢你的解释。假设我正在使用subscribe,我有一个用例,当kafka消费组实例重新启动时,其consumer group.id在每次重新启动时都会发生变化。有这种行为可以吗?还是会影响kafka的性能,因为每次服务器/实例重新启动时都会有一个新的group.id,它会从begging读取消息。这也可以,但我担心的是,未使用的group.id会对memry造成任何影响?在这里,我将有1000多个服务器实例,每个实例都有一个消费者组。基本上,将存储旧消费者组的偏移量。如果您不再需要旧的消费群体,您可以使用
kafka消费群体--zookeer localhost:2181--delete--group
丢弃旧的消费群体,尽管拥有大量消费群体不会产生任何重大影响。如果闲置消费群体长时间不使用,是否有时间可以存在于代理中。或者当空闲消费者组.id被删除时?我们可以为'log.retention.ms'配置提供的最小值是多少。