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 完成

相关内容

热门资讯

全球城市科技传播能力指数202... 今天,上海交通大学文化创新与青年发展研究院首席专家徐剑教授团队在上海科技节·科技传播理论分会发布了《...
甘肃张掖:“宣讲+礼赞+关爱”... 来源:工人日报客户端 原标题:甘肃张掖:“宣讲+礼赞+关爱”开启劳模工匠风采宣传月工人日报-中工网记...
惊艳!老祖宗绣给你的绝美织锦壁... 老祖宗的审美高级感中国织物中对金线、金箔的运用,可追溯至战国时期。波光粼粼的织金锦缎,华美而不俗艳!...
尼山鲁源村景区将于5月31日盛... 官宣了!官宣了!尼山鲁源村景区将于5月31日盛大开园!尼山鲁源村位于山东曲阜是尼山圣境二期工程,以“...
云南举行国际护士节主题活动 来源:工人日报客户端 原标题:云南举行国际护士节主题活动工人日报-中工网记者 黄榆5月15日,云南省...
狂赚近百亿!光伏一季度,谁“翻... (转自:全球光伏)  2025年第一季度,光伏行业是喜忧参半!在行业周期下行期间,430和531两个...
【拔节生长看雄安】雄安未来之城... 转自:河北新闻网 冀时客户端报道 5月15日,雄安未来之...
内蒙古三位厅干拟“由政转企” 转自:上观新闻《内蒙古日报》消息,5月16日,内蒙古自治区党委组织部发布干部任前公示,其中三位厅干拟...
隆基、晶科、通威、晶澳、正泰、... (转自:全球光伏)  5月16日,《财富》中文网正式发布“2025年中国ESG影响力榜单”,隆基、阳...
【撸起袖子加油干 风雨无阻向前... 转自:河北新闻网 冀时客户端报道 以交通基础设施“硬联通...
山东移动发布四大云智宽带产品,... 转自:大众报业·齐鲁壹点5月17日,山东移动在济南举办“万兆智联 云启AI家”爱家计划暨云智宽带系列...
桂林三金:整体库存水平持续向好... 人民财讯5月17日电,桂林三金(002275)近日接受机构调研时表示,目前公司不仅实现自身库存的高效...
俄乌直接会谈 欧盟为何“唱反调... 转自:央视当地时间16日,俄乌在土耳其进行了直接会谈。同天,欧盟委员会主席冯德莱恩却表示,欧盟方面准...
6月1日起实施!吉林省执行10... 5月15日,吉林省医疗保障局发布通知,林下山参(生晒参)支付标准执行10元/克。林下山参费用可使用个...
百姓看联播丨氢能“大肺王” “... 转自:河北新闻网 这两年,路上的氢能卡车、公交车越来越多...
当地回应应县木塔持续倾斜:正评... #网友反映山西应县木塔持续倾斜#【#当地回应应县木塔持续倾斜#:正评估修护方案并1:1复原】近日,有...
小学生纠错,浙江文广旅厅长回信... 来源:人民网 近日 浙江省湖州市安吉县安城小学 五年级学生金陈乐收到了一封来自 浙江省文化广电和旅游...
探索“眼睛的奥秘” 青少年眼健... 为助力青少年科学护眼,普及眼健康知识,契合全国爱眼日来临之际,2025青少年眼健康知识挑战营将于5月...
黄莺:从特殊走向融合,从黑暗走... 编者按:5月16日,由国务院残疾人工作委员会办公室、中国残疾人联合会联合举办的第七次全国自强模范暨助...
中柬“金龙-2025”联演开幕 转自:北京日报客户端中柬“金龙-2025”联演开始仪式5月17日在柬埔寨磅清扬省王家军宪兵训练中心举...