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 对消费者和消费群体有限制吗?_Apache Kafka - Fatal编程技术网

Apache kafka 对消费者和消费群体有限制吗?

Apache kafka 对消费者和消费群体有限制吗?,apache-kafka,Apache Kafka,卡夫卡对消费者或消费者群体的数量有限制吗 我计划每10分钟将200 MB的数据推送到一个主题,并让200多个不同的消费者收听和消费这个主题。有没有其他推荐的方法可以做到这一点?在卡夫卡,对特定主题的消费群体数量没有限制。然而,消费群体的增加提高了网络利用率 最新版本的卡夫卡将偏移量存储在内部卡夫卡主题中,称为\uu consumer\u offset一文不值,正如Rohit answer所说,没有这样的限制 关于你的问题,你似乎想实现某种消费的平行化。如果您发送200个消费者和200个不同的消费

卡夫卡对消费者或消费者群体的数量有限制吗


我计划每10分钟将200 MB的数据推送到一个主题,并让200多个不同的消费者收听和消费这个主题。有没有其他推荐的方法可以做到这一点?

在卡夫卡,对特定主题的消费群体数量没有限制。然而,消费群体的增加提高了网络利用率


最新版本的卡夫卡将偏移量存储在内部卡夫卡主题中,称为
\uu consumer\u offset

一文不值,正如Rohit answer所说,没有这样的限制

关于你的问题,你似乎想实现某种消费的平行化。如果您发送200个消费者和200个不同的消费者组,每个消费者将独立读取所有数据,因此200个线程每10分钟读取相同的200MB(200x200 MB=40GB每10分钟接收一次)。我猜你想让每个消费者用你的方法每10分钟读取1MB,但这不是它的工作原理

如果每个使用者实现的逻辑相同,则不应声明多个使用者组。如果您声明两个消费者组,每个消费者组将读取相同的数据,您只需重复完成的工作,复制输出。如果要对主题的记录执行的作业不同,请设置不同的消费者组:例如,一个消费者组必须将记录存储到DDBB中。另一个消费者群体必须将数据可视化到Grafana中。这是两种不同的处理机制,因此每种机制都必须自己读取所有数据。这不是申报不同消费群体的唯一原因,而是其中的一个例子。为一个主题声明多个消费者群体有多种理由

想象一个场景,其中唯一要做的工作是将消息存储到DDBB中。如果声明两个消费者组并启动消费者,您将得到存储在数据库中的重复值,因为第一个消费者组所做的工作与第二个消费者组相同。你不仅在重读卡夫卡的作品,而且还在ddbb中存储同样的信息

为了实现启动多个使用者高效共享工作(例如,启动4个使用者,每个使用者读取50MB),您必须对主题进行分区

同一使用者组中只有一个使用者线程可以从特定分区读取。如果在该主题中有4个分区,并且4个用户线程共享同一个用户组,那么启动它们将导致每个线程从一个分区读取数据。如果您启动两个使用者,则两个使用者都将被分配2个分区。工作原理如下:

在这个场景中,如果消费者共享同一消费者组,那么并发读取的消费者数量是有限制的,即该主题的分区数量。如果启动第五个使用者线程,其中一个将阻塞/等待,因为它没有分配任何分区。在该示例中,使用者5等待分区对他可用(因此可能永远等待)


我的建议是:决定需要多少消费线程来消费数据,并在此基础上划分主题。例如,如果您将主题划分为8个不同的分区,您将能够从同一消费者组启动8个消费者。然后,每个用户将或多或少地读取(取决于生产者分区器)25MB(200/8)的传入数据,有效地分担工作负载:每个用户将从自己的分区读取数据

  • 如果你推出了200个不同消费群体的200个消费者, 您只需将要完成的工作量乘以
    x200
    ,因为每个消费者都会从头到尾读取数据

  • 如果您使用相同的使用者组启动了200个使用者,并且主题只有一个分区, 您将有一个线程完成所有工作,并有199个过时的消费者


这是一个很好的解释。晶莹剔透。阿兰,非常感谢你。在我的例子中,所有200多个不同的远程服务器(或者你可以说是合作伙伴)都应该使用相同的数据,因为它们彼此独立。所以我认为“没有限制,关注网络利用率”。很高兴帮助@ArunKolhapur!除了您的特定上下文xD之外,我假设了所有内容。希望至少这个答案对未来的案例有所帮助。衷心感谢你的话,祝你有一个美好的一天伴侣!