全书目录

第二十篇:Kafka 完全指南 —— 城市事件广播总线宇宙

第十章:重平衡基础 —— 为什么 consumer 会突然换轨道

1 分钟 403 字 第 377 / 962 个阅读单元

重平衡(rebalance)可以理解成:

班组里的人数或订阅关系变了,城市调度中心要重新分配各条分区的值班员。

常见触发原因:

  • 有新 consumer 加入 group
  • 某个 consumer 挂了
  • 某个 consumer 长时间没心跳
  • topic 分区数变了
  • 订阅的 topic 变了

比如原来这样:

text
Group: inventory-service

C1 -> P0
C2 -> P1
C3 -> P2

如果 C2 挂了,重平衡后可能变成:

text
Group: inventory-service

C1 -> P0, P1
C3 -> P2
#为什么重平衡会带来重复消费风险

因为分区所有权在切换。

如果你还没来得及提交位点,分区就被收走了,新 consumer 接手后会从“上次已提交的位置”继续读,于是某些消息可能再处理一次。

所以重平衡的正确认知不是:

  • “Kafka 怎么老抽风”

而是:

  • “消费者组成员变化,本来就必须重新分区”

现代 Kafka 不断改进 rebalance 协议,减少停顿和全量迁移,但基础心智始终不变

重平衡 = 分区归属重算 = 位点管理必须严谨 = 消费逻辑必须幂等。