Kafka 消费者组
创始人
2024-05-31 05:20:39
0

Kafka 消费者组

  • Consumer数
  • 位移
  • 重平衡

消费者组 (Consumer Group) : 可扩展且容错性的消费者机制

  • 一个组内可能有多个消费者 (Consumer Instance) : 共享一个公共 ID (Group ID)
  • 组内的所有消费者协调消费订阅主题 (Subscribed Topics) 的所有分区 (Partition)
  • 每个分区只能由同个消费者组内的一个 Consumer 消费

Consumer Group 的特性:

  1. Consumer Group :有 n 个 Consumer。一个 Consumer 可能是进程或线程
  2. Group ID (字符串) : 标识唯一 Consumer Group
  3. Consumer Group 订阅的主题的单个分区,只能由组内的某个 Consumer 消费

两种消息引擎模型 :

  • 俩种的伸缩性 (scalability) 都差
  • 点对点模型 : 消费队列 : 消息一被消费,就从队列中删除,只能被一个 Consumer 消费
  • 发布/订阅模型 : 允许消息被多个 Consumer 消费

Consumer Group :

  • 解决伸缩性 (scalability) 差问题
  • 消息队列模型 :所有实例都属于同一个 Group
  • 发布 / 订阅模型 :所有实例分别属于不同的 Group

Consumer Group 伸缩性 :

  • Consumer Group 订阅了多个主题后,组内的每个实例不要求一定要订阅主题的所有分区,它只会消费部分分区中的消息
  • Consumer Group 之间彼此独立,互不影响,它们能够订阅相同的一组主题而互不干涉
  • Broker 端的消息留存机制,Kafka 的 Consumer Group 能规避伸缩性差的问题

Consumer数

Consumer Group 下理想 Consumer 数 :

  • Consumer 数 = 该 Group 订阅主题的分区总数

例子 :

  • 一个 Consumer Group 订阅了 3 个主题
  • A、B、C 的分区数分别是1 , 2 , 3 ,该 Group 的总分区数是 6
  • 为该 Group 设置 6 个 Consumer ,能最大限度实现高伸缩性

设置 > 或 < 6 :

  • 设 3 个 Consumer,每个 Consumer 平均消费 2 个分区 (6/3)
  • 设 8 个 Consumer,有 2 (8 – 6) 个 Consumer 无法被分配分区,处于空闲状态
  • 生产中,不推荐设 Consumer 数 > 总分区数,多余的 Consumer 会浪费资源

位移

Kafka 管理位移 :

  • 消费位置信息 : 位移 (Offset) : 消费者在消费时 ,记录消费条数
  • Offset 类似于一组 KV 对 :Key : 分区;V : Consumer 消费该分区的最新位移
  • 用 Java 类似结构 (Map) : TopicPartition : 一个分区,Long : 位移的类型

Kafka 有新旧 Consumer :

  • 新旧 Consumer 的管理位移方式不一样
  • 老 Consumer Group 把位移放在 ZK , 减少 Broker 开销
  • 新 Consumer Group 把位移放在 __consumer_offsets 主题

ZK 不适合频繁的写更新

  • Consumer Group 的位移更新是频繁操作
  • 大量写操作会拖慢 ZK 集群的性能

重平衡

Rebalance :

  • 协议规定 Group 下的所有 Consumer 怎么分配订阅 Topic 的每个分区
  • Rebalance 时,Group 下所有的 Consumer 都要一起参与

Rebalance 触发条件 :

  • 组内成员数变化 : 有新 Consumer 加入/离开组或 Consumer 异常被踢出组
  • 订阅主题数变化 : 新创的主题 , 被 Group 订阅了 , 该 Group 就会 Rebalance
  • 订阅主题的分区数变化 : 增加主题的分区数,订阅该主题的所有 Group 会 Rebalance

Rebalance 的 3 种分配策略 :

  • 都是为了公平分配 : 每个 Consumer 分配平均的分区数
  • 如 : 一个 Group 内有 10 个 Consumer,要消费 100 个分区,理想的分配策略 : 每个 Consumer 平均分配 10 个分区
  • 当有分配倾斜,就会忙死/闲死

Group 发生 Rebalance :

  • 设某个 Group 有两个 Consumer,如 : A/B
  • 当 C 加入时,会触发 Rebalance,并按照分配策略重新为 A、B 和 C 分配分区
  • Rebalance 后的公平分配 : 每个 Consumer 消费 2 个分区

在这里插入图片描述

Rebalance 对 Consumer Group 消费影响大

  • Rebalance 类似 JVM 的 STW
  • Rebalance 时,所有 Consumer 都会停止消费,等待 Rebalance 完成

相关内容

热门资讯

和评理 | 阿斯塔纳峰会将为构...   在哈萨克斯坦阿斯塔纳举行的第二届中国—中亚峰会将为中国和中亚五国关系注入新的动力。  在世界局势...
投资者走进诺诚健华 解码生物医... 上证报中国证券网讯(记者张雪)北京上市公司协会联合国泰海通证券17日共同举办《股东来了》——投资者走...
创业好项目,五个适合年轻人的小... 现如今很多做生意的人,无论是线上还是线下,很多人自己拥有好的项目自己有好的产品,但是有没有发现,很多...
江苏盱眙通报“某企业食品周转筐... 转自:上观新闻情况通报2025年6月16日晚,网民反映我县某企业食品周转筐发现蛆虫。我局第一时间现场...
又一家公司强制退市!证监会严惩... 21世纪经济报道记者崔文静 实习生张长荣 北京报道   证监会再出重拳!*ST九有(维权)被强制退市...
烧鸡店加盟 道口烧鸡小本创业好... 烧鸡店加盟道口烧鸡小本创业好项目2019-03-来源91创业网编辑:道口烧鸡加盟[摘要]如今在餐饮行...
奉贤一小区:车子撞向底楼人家外... 转自:上观新闻6月15日傍晚,奉贤区南桥镇环城南路1309弄阳光园二期,一名驾驶员驾车时疑因操作不当...
20个最适合宝妈的小本创业项目... 在国外,速记经历了手写速记—机械速记—电脑速记的过程,速记市场化已有几十年的历史。拿美国为例,美国以...
哪里有小本创业好项目 哪里有小... 小本创业好项目其实在哪里都有,只要是适合所在地区发展,结合当地的经济发展,得到更多人的认可,就是一个...
网约车司机猥亵女乘客,行拘! 转自:天津日报6月17日,黑龙江哈尔滨的赵女士在社交平台发帖称,6月12日早上8:30左右,乘坐T3...
伊朗:已准备好领导人遇刺情况下... 转自:扬子晚报央视新闻消息,当地时间6月17日,伊朗法尔斯通讯社援引当地消息人士的话称,伊朗已经准备...
夏季创业小本为你推荐两个夏季创... 夏季可以形容是一个色彩斑斓,风情万种的季节,女性可以展现完美的曲线,男性可以展现充满力量的肌肉,聪明...
特朗普被爆因阅兵式怒斥防长,白... 转自:京报网_北京日报官方网站 #特朗普被爆对阅兵式士兵...
磁器口职业吆喝师已成景点,这种... 磁器口职业吆喝师已成景点,这种职业的工作主要是什么?他们的主要工作就是吆喝。用这样的方法来宣传瓷器。...
他因《陈情令》走红,如今携《玉... 他因《陈情令》走红,如今携《玉骨遥》霸气来袭,他是谁?他就是肖战,这部剧也是引发了特别多人的讨论,如...
表演节目 表演节目要参加一个岗前培训班,要求准备节目,请各位大侠出谋划策,帮小女子想个节目,谢谢~~由于是岗前...
监禁的时间 监禁的时间你可能是在童年时期有过什么样的挫折或阴影,从而导致某些方面的灰暗,你可以培养一些高雅的兴趣...
历史上为女人引发的战争,那个女... 历史上为女人引发的战争,那个女的叫什么名字?特洛伊战争,参战双方为特洛伊城和斯巴达联军,原因:海伦周...
《仙剑奇侠传》帮我记剧情! 《仙剑奇侠传》帮我记剧情!哦!我来告诉你吧,3的剧情就是逍遥忘记灵儿是他老婆了灵儿无比伤心,但还是跟...
为学校提供食材的转运筐生蛆?江... 新京报记者 赵亚楠 制作 葛佳丹6月17日,有网友发视频反映江苏盱眙一家食品企业仓库内的食品转运筐生...