You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka副本数调整后出现分区重复消费问题排查求助

问题描述

初始所有Topic副本数为1(无法实现高可用),调整为2后,某一时刻其中一个Partition的lag突然变大,最终出现该Partition数据重复消费的情况。

Kafka集群信息

  • 版本:2.4.1
  • 节点数:5
  • 分区数:32

事故现场信息

  • 消费组Offset详情
  • 监控详情

已执行的排查步骤

  1. 检查消费者与Kafka Broker日志,未发现可疑日志
  2. 检查Broker状态,未发现异常变化
  3. 确认Offset存储时长(2.x版本默认7天,无异常)
  4. 验证已消费Offset已正常提交至Broker

请问该问题由何导致?是否与副本数调整有关?


问题分析与结论

该问题与副本数调整直接相关,核心诱因是副本扩容过程中触发的Partition Leader切换、副本同步异常,结合Kafka消费机制引发重复消费与lag陡增,具体拆解如下:

  1. 副本扩容引发的Leader切换与同步延迟
    将副本数从1调整为2时,Kafka会为每个Partition新增Follower副本。在Follower完成初始同步前,若原Leader出现临时不可用,或集群触发负载均衡式Leader切换,新晋升的Leader可能存在数据同步不完整的情况。此时消费者从新Leader拉取数据,旧Leader恢复后集群重新同步时会导致部分数据重复写入,最终引发重复消费。

  2. 消费Offset与副本数据的不一致性
    副本扩容过程中,消费者提交的Offset基于原Leader的位移,但新Leader的实际数据位移与原Leader存在偏差(比如Follower同步滞后时晋升Leader)。消费者重启或重新拉取时,会从已提交的Offset位置开始消费,但新Leader中该位置之前的数据可能已被重新写入,进而导致重复消费,同时因需要重消费历史数据,lag短时间内陡增。

  3. 补充排查方向
    当前排查未覆盖关键项,建议补充:

  • 执行命令kafka-topics.sh --describe --topic [目标Topic名] --zookeeper [ZK地址],查看目标Partition的副本同步状态(ISR集合是否稳定)
  • 在Broker日志中搜索Leader change for partition关键字,确认该Partition的Leader切换历史
  • 对比该Partition的HW(高水位)与LEO(日志末端位移)数据,排查是否存在长期同步滞后情况

总结:副本数调整是触发问题的直接原因,本质是扩容过程中副本同步异常或Leader切换导致的数据位移不一致,进而引发重复消费与lag升高。

内容的提问来源于stack exchange,提问作者sunhome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:17:09