Kafka 的消费者组
消费者组是什么
消费者组(Consumer Group)是 Kafka 的重要特性之一,简而言之,消费者组就是让若干个消费者实例(Consumer Instance)形成一个消费者组,共同消费共同消费同一个或者多个 Topic 的不同 Partition 中的消息,注意,每一个 Partition 只能由消费者组中的一个 Consumer 来消费。
多个消费者组之间是相互独立的,它们可以订阅同样的主题进行消费。
消费者组如何工作
当一个消费者组订阅了一个或者多个 Topic 的时候,这些 Topic 中所有的 Partition 会被「分配」给消费者组中的消费者实例,这些消费者实例各自处理自己分配到的分区的消息。
前面介绍过,一个分区只能分配给一个消费者实例,不能被多个实例同时消费,同时,一个实例可能被分配多个分区。
举一个具体的例子。假设一个消费者组订阅了 T1、T2、T3 三个 Topic,他们中分别有3个、5个、10个分区,加起来一共18个分区。此时:
- 如果消费者组中正好有18个实例,那么,每个实例负责消费一个分区的消息。
- 如果消费者组中的实例数超过了总的分区数,比如有20个实例,那么将会有2个实例是空闲的,什么都不做,除非有其他实例挂掉触发 Rebalance。
- 如果消费者组中有 6 个实例,那么每个实例会被分配3个分区。
因此,推荐消费者组中的实例数与订阅的 Topic 的总分区数相同。
Rebalance
上一部分提到了 Rebalance 机制,它是 Kafka 中将消息分区分配给消费者组中的消费者实例的机制。上面的例子中,将 18 个分区分配给 6 个消费者实例的过程,就是 Rebalance。除了在消费者组订阅 Topic 后需要进行这样的分配,还有一些情况会触发 Relalance:
- 消费者组中的实例发生变化的时候,包括但不限于个别消费者实例宕机、有新的实例加入、有实例被踢出等等情况。此时,因为有些分区对应的消费者实例不在组中了,或者有新的实例可以「分担」其他实例的工作,那么,此时会触发 Rebalance。
- 订阅的主题发生变更的时候。因为消费者组可以通过匹配表达式来订阅主题,比如,订阅所有以
abc
开头的主题。当有新的主题被创建,如果这个主题的名称是以abc
开头的,那么,消费者组会自动消费这个主题,此时,就需要重新分配分区和消费者实例的关系。 - 主题的分区发生变化的时候,无论分区数增多还是减少,都需要重新分配消费者实例,以达到均衡。
当以上因素出现的时候,Rebalance 机制能都实现自动并且尽可能均衡的分配,但是,目前它还有一些问题。
第一,当执行 Relalance 的时候,消费者组中所有消费者实例都会停止对消息的消费,知道 Rebalance 工作完成。这类似于垃圾回收器中经常会提到了 stop-the-world
,因此,要尽可能避免频繁地 Rebalance。
第二,目前的 Rebalance 操作十分「不智能」,每次 Rebalance 操作都会将所有的分区进行重新分配,而不是采取尽量减少变动的方式,这一问题导致在分区数和消费者实例数比较多的情况下, Rebalance 操作是一个耗时的操作,因此,再次建议,要尽可能避免频繁地 Rebalance。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhffcejk
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01