当前位置:  开发笔记 > 大数据 > 正文

Kafka如何向许多消费者群体广播

如何解决《Kafka如何向许多消费者群体广播》经验,为你挑选了2个好方法。

我是卡夫卡的新手,我将非常感谢下一个案例的澄清.

Kafka文档在"消费者职位"一节中说:

"我们的主题分为一组完全有序的分区,每个分区在任何给定时间由一个消费者使用."

根据上述声明,如果少数消费者组订阅了一个主题,并且生产者将在此主题中将消息发布到特定分区,则只有一个消费者可以提取该消息.

问题是,如果只有一个消费者能够提取特定信息,那么许多消费者群体的广播可能会如何?



1> java_geek..:

如果一个主题有10个分区,并且3个消费者实例(C1,C2,C3按顺序启动)都属于同一个消费者组,我们可以使用不同的消费模型,允许读取并行度,如下所示

每个消费者使用单个流. 在此模型中,当C1启动时,主题的所有10个分区都映射到同一个流,并且C1开始从该流中消耗.当C2启动时,Kafka重新平衡两个流之间的分区.因此,每个流将分配到5个分区(取决于重新平衡算法,它可能也是4对6)并且每个消费者从其流消耗.类似地,当C3启动时,分区再次在3个流之间重新平衡.请注意,在此模型中,当从分配给多个分区的流中进行消费时,消息的顺序将在分区之间混乱.

每个消费者使用多个流(比如C1使用3,C2使用3,C3使用4). 在此模型中,当C1启动时,所有10个分区都分配给3个流,C1可以使用多个线程同时从3个流中消耗.当C2启动时,分区在6个流之间重新平衡,类似地,当C3启动时,分区在10个流之间重新平衡.每个消费者可以同时从多个流中消费.请注意,此处的流和分区数相等.如果流的数量超过分区,则某些流将不会获得任何消息,因为它们不会被分配任何分区.

如果存在另一个使用者组,则将相同的过程应用于该使用者组中的使用者


我不知道为什么这个答案没有被接受.这描述了理解Kafka中分区/消费者关系的一个非常重要的方面.

2> gaganbm..:

只有一个消费者consumer group可以提取消息.但所有人都 consumer groups得到了消息.

因此,如果您希望所有消费者都能获得消息,请将它们分配不同consumer groups.每条消息都发送给每个消费者组,但在一个组内,它只发送给一个消费者.

阅读此处的Consumer部分.


您的陈述"只有一个消费者群体中的一个消费者可以提取消息"并不完全正确.每个分区只能由一个消费者使用.因此,如果消费者组中有多个消费者,他们仍然可以使用不同的分区.这就是卡夫卡并行消费的重点
推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有