已采纳
回答正文
回复
讨论正文
该问题的正文、回答与讨论。
order-pay 32 分区,消费组 12 实例(K8s Deployment,maxSurge=1 / maxUnavailable=0),日均约 4500 万条,峰值 8200 msg/s。order_no + event_type)→ 手动提交 offset(enable.auto.commit=false,commitSync)。commitSync 放在业务落库之后。若「落库成功、commit 之前」进程被 OOMKilled,重启后 offset 回退到上次提交点,这批消息被重放 → 靠幂等表唯一键挡住,但每天仍出现 200~800 条重复消费日志,对账 job 里全是噪音,很难分辨"真重复投递"还是"业务重试"。enable.auto.commit=true + auto.commit.interval.ms=5s 时崩溃窗口更大(最多 5s 的量级),高峰期直接可能丢几百条,不敢用。想听听踩过这坑的同学给的可复现方案,而不是"用幂等表"这种一句话结论。