Kafka消费者重启后重复处理了80万条消息,库存直接扣成负数
凌晨一点,库存服务报警:有 30 个商品库存变成了负数。扣成了 -500、-1200,离谱的是这些商品白天就卖完了。 查了半小时,线索指向凌晨零点的一次容器滚动发布。新 Pod 启动后重新消费,从上次提交的 offset 开始读。但问题出在——上次提交的 offset 是 3 小时前的。 日志里拉出一条关键记录: 2026-06-21 00:16:23.456 WARN o.a.k.c.c.i.ConsumerCoordinator - Auto offset commit failed for group inventory-consumer: Connection to node -1 (broker/192.168.1.10:9092) failed due to network error 凌晨那次提交因为网络抖动失败了。Kafka 消费者没报错继续消费,下一个 commit 周期也没重试。直到滚动重启时,消费者重新从上一个成功提交的 offset 开始读——等于把这中间的 80 万条消息重新处理了一遍。 库存又扣了一次。 一、自动提交的陷阱 绝大多数 Kafka 消费者是....