已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
【背景】
我们用 Kafka 3.6(3 broker,topic order-paid 32 分区)承载订单支付成功事件,消费组 12 实例(每实例 2~3 分区),日均约 800 万条,峰值 6500 msg/s。消费逻辑如下:
GET dedup:{msg_id} → 命中则跳过(幂等)REQUIRES_NEW,独立本地事务,含状态 CAS 更新)SET dedup:{msg_id} 1 EX 604800(Redis 7.x,去重窗口 7 天)幂等去重走 Redis 是为了性能(日均 800 万 × 7 天 ≈ 5600 万条,放 MySQL 去重表担心锁竞争),但步骤 2 和 3 天然不在同一个事务里。
【现象 / 卡点】
WHERE status='CREATED'),第二次 affected rows=0,业务上"静默吞掉"了,不报错但数据不一致。【已尝试的排查与结果】
【期望得到的答案形态】