为什么“消息队列实现 exactly-once”在计数器场景很难?会带来什么后果?
Why is exactly-once delivery hard with message queues for counters, and what are the consequences?
题目类型: 技术面试题
这是一道技术面试题,常见于澳洲IT公司面试中。
难度: hard
分类: System Design
标签: exactly-once, idempotency, deduplication
参考答案摘要
答案 exactly-once 需要端到端语义:生产、传输、消费、落库都必须去重且可恢复。现实中会遇到网络重试、消费者崩溃重启、offset 提交时序、幂等写入能力不足等问题。计数器更新如果被重复消费,就会 重复累加 导致偏大;如果丢消息则偏小。为了提升可用性系统通常选择 at-least-once,这意味着必须在应用层做幂等/去重,而计数更新天然不易幂等,因此风险更明显。
本题提供 STAR 原则详细解答和技术解析,登录匠人学院学习中心即可查看完整答案。