为什么通知系统需要消息队列(Notification Queue)?它如何支持 at-least-once 和 exactly-once 投递语义?
Why does a notification system need a Notification Queue, and how can it support at-least-once and exactly-once delivery semantics?
题目类型: 技术面试题
这是一道技术面试题,常见于澳洲IT公司面试中。
难度: hard
分类: system-design, messaging
标签: queue, kafka, rabbitmq, decoupling, buffering, delivery-semantics, at-least-once, exactly-once
参考答案摘要
TL;DR 队列用于 解耦 请求提交与实际发送、削峰填谷并提高系统可扩展性。队列可配置不同投递语义: 至少一次 保证不丢消息但可能重复; 仅一次 避免重复但需要更复杂的幂等与去重机制配合。 为什么需要队列 解耦:Notification Service 不直接做发送,降低耦合。 削峰:高峰期(如秒杀)将突发流量缓冲到队列。 可扩展:Channel Processors 可独立扩容。 可靠性:队列可...
本题提供 STAR 原则详细解答和技术解析,登录匠人学院学习中心即可查看完整答案。