首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时在ConsumerGroup中创建新的消费者

何时在ConsumerGroup中创建新的消费者
EN

Stack Overflow用户
提问于 2018-11-21 07:26:50
回答 3查看 257关注 0票数 0

我是卡夫卡世界的新手,我读过关于消费者和消费者群体的文章,我理解了他们之间的区别,理解了为什么我们需要卡夫卡的ConsumerGroup。

但在这里,我的问题是,什么时候我们应该决定什么时候在同一个集团内创造新的消费者。当我们有大量数据的时候?

有人能帮我理解任何真实的用例吗。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-21 12:32:58

我想已经提到了一些非常好的观点,这是我的几分钱。因为您的主要问题似乎是"When“来在一个组中添加一个消费者.

我可以想到两种情况:

  1. 如果使用者组中的一个或多个使用者被来自多个分区的消耗超载,而您打算分发该负载并增加并行性。在这种情况下,您可以添加使用者并触发再平衡。
  2. 如果主题中的分区正在增加。这是一个相当棘手的场景,可能会在某种程度上扰乱现有的消费者。以下是可能发生这种情况的几个例子: ( a)如果数据的语义正在更改为对主题进行分区,则基于语义的主题是非常常见的用例 ( b)如果数据量在增加,语义也在变化 ( c)如果只有卷在增加,就会导致场景1

但是,正如您在问题中所指出的--如果只是数量在增加,并且组中的消费者在1比1的基础上很好地映射到分区,那么您最好还是保持原样。否则,您可能会在场景2b中结束。

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2018-11-21 07:46:25

在Apache中,并行性的级别由分区的数量来定义。分区数量越多,所能达到的并行级别就越高。根据数据量的不同,应该将分区数设置为所需的值。请注意,您不能拥有比分区数目更多的活动使用者。

例如,假设您有一个具有5个分区的主题test和一个使用者组test-group。在任何给定的时间,只有5个消费者可以使用test-group进行活动。假设我们在主题test中有1000条消息,那么5个活动消费者中的每个人将消耗(大约) 200条消息。如果您运行了5个以上的分区,则剩下的分区将处于非活动状态,这意味着它们根本不会使用任何消息。类似地,如果您的使用者少于分区,那么您的一些活动使用者将使用来自多个分区的使用者消息。

另一个直接向前的-less示例是以下(以从…为例):

在这个场景中,我们有两个主题(AB),每个主题都有3个分区。属于同一使用者组的两个使用者正在使用来自两个主题的消息。

票数 0
EN

Stack Overflow用户

发布于 2018-11-21 09:05:10

如上所述,Kafka通过在消费者组中分配分区来扩展主题消费。使用者组不是什么,而是一组共享公共标识符的使用者。

使用者对来自一个或多个分区的使用者消息负责。如果使用者组中有一个使用者正在运行,它将使用来自所有分区的数据。如果同一个组中有多个使用者在运行,他们会将负载分配到来自不同分区的消耗中。

使用者的最大数目等于分区的最大数目。如果使用者数量超过分区数,则过多的使用者将处于空闲状态。

假设有一个有4个分区的主题。有两个消费者群体A和B。A组有两个消费者C1,C2。这两个使用者都将使用大约2和2个分区。

而在Consumer中,有4个消费者,每个消费者将从一个分区消费。

何时使用单个使用者或多个使用者:这取决于用例。如果您想要来自基于主题中的整个数据的处理的合并输出,则应该使用单个使用者,除非您有一个后处理逻辑来合并来自每个使用者的输出。

如果您只是读取数据并希望通过分发负载来并行处理,请使用多个使用者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53407112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档