02 消费组与 offset

消费组与 offset

消费位置由消费者拉取推进,已提交位置由组协调器保存;先处理再提交可减少漏处理,却仍可能在崩溃后重复。
版本:Apache Kafka 4.4.0(KRaft);核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。
specification { element actor { style { shape person; color amber } } element system { style { color muted } } element component { style { color primary } } element storage { style { shape storage; color green } } } model { c = actor '消费者' g = component 'Group coordinator' l = system '业务分区 leader' biz = component '业务处理' o = storage '__consumer_offsets' } views { dynamic view index { title '核心链路' variant sequence c -> g '加入组 / 心跳并获取分配' c -> l '按本地 position 发 Fetch' l -> c '返回记录并推进 position' c -> biz '处理记录' biz -> c '处理成功' c -> g '提交下一条待消费 offset' g -> o '写入提交位置' g -> c '返回提交结果' } }

关键判断

  • 同一普通消费组中,一个分区在稳定分配时交给一个成员;不同组可独立读取相同分区。
  • position 是当前客户端读取进度,committed offset 是重启或重新分配时的恢复点,提交数值通常是下一条待处理位置。
  • 新 consumer group 协议的分配由服务端协调,classic 协议的成员协作方式不同;本图只抽象共同职责,不混用具体报文。

边界

范围是普通消费组,不含 Share Group;业务副作用与 offset 不在同一事务时,崩溃恢复仍可能重复或遗漏,需幂等或事务设计。

官方出处与源码

回到首页 · 上一篇 · 下一篇