【背景】 最近踩坑 Kafka 消费端的重复消息问题,发现团队里存在严重分歧:
- 一方坚持「at-least-once + 幂等表」的组合,认为能覆盖 90% 场景
- 另一方认为必须用 Outbox / 事务消息才能保证强一致性
【常见分歧】
-
为什么有人觉得「at-least-once + 幂等」就足够?
- 优势:实现简单、性能开销小
- 争议:如何处理消息堆积期间的重复消费?
-
为什么有人非要用 Outbox / 事务消息?
- 优势:保证最终一致性
- 争议:性能损耗大、复杂度高
【我的倾向】 目前我们采用「at-least-once + 幂等表 + 消息去重窗口」的折中方案,但遇到以下问题:
- 幂等表 TTL 设置过短会导致重复消息
- 设置过长又可能引发数据不一致
【想听你的观点】 你在什么场景下选择哪种方案?
- 有没有遇到过「at-least-once + 幂等」翻车的案例?
- 事务消息 / Outbox 在实际落地时有哪些隐藏成本?
- 如何平衡一致性与系统性能?
0赞
0收藏
0楼层