我是卡夫卡的新手,我将非常感谢下一个案例的澄清.
Kafka文档在"消费者职位"一节中说:
"我们的主题分为一组完全有序的分区,每个分区在任何给定时间由一个消费者使用."
根据上述声明,如果少数消费者组订阅了一个主题,并且生产者将在此主题中将消息发布到特定分区,则只有一个消费者可以提取该消息.
问题是,如果只有一个消费者能够提取特定信息,那么许多消费者群体的广播可能会如何?
jav*_*eek 23
如果一个主题有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个流之间重新平衡.每个消费者可以同时从多个流中消费.请注意,此处的流和分区数相等.如果流的数量超过分区,则某些流将不会获得任何消息,因为它们不会被分配任何分区.
如果存在另一个使用者组,则将相同的过程应用于该使用者组中的使用者
小智 8
通常有两种消息模式:
Kafka通过消费者组的概念同时支持两者。同一组中的消费者遵循共享队列模式。一组中只有一个消费者可以获得消息。
不同的消费者群体遵循发布订阅模式。对于每条消息,订阅该主题的所有消费者组都将获得该消息的副本。
一个有用的参考:https : //dzone.com/articles/dont-use-apache-kafka-consumer-groups-the-wrong-wa
归档时间: |
|
查看次数: |
15382 次 |
最近记录: |