系統設計 中階

訊息佇列的應用場景與技術選型(Kafka vs RabbitMQ)

AI 練習作答

訊息佇列(Message Queue)

為何需要 MQ?

  • 解耦:生產者不需等待消費者處理完成
  • 削峰填谷:流量高峰時緩衝請求,避免下游服務崩潰
  • 異步處理:耗時操作(發 Email、產報告)放入佇列,不阻塞主流程
  • 可靠傳遞:消費失敗可重試

Kafka vs RabbitMQ

特性 Kafka RabbitMQ
架構 分散式 Log 傳統 MQ Broker
吞吐量 極高(百萬/秒) 高(萬~十萬/秒)
訊息保留 持久化 Log,可重複消費 消費後刪除(預設)
順序性 Partition 內保證順序 單一佇列保證
使用場景 資料流、Log 收集、事件溯源 任務佇列、RPC 回呼

常見模式

  • Point-to-Point:單一消費者處理訊息(競爭消費)
  • Pub/Sub:多個消費者訂閱相同主題,各自消費
  • Dead Letter Queue(DLQ):處理失敗的訊息移入 DLQ,人工介入

面試加分:解釋「At-least-once」vs「Exactly-once」語意,及為何真正的 exactly-once 在分散式系統中很難實現(Kafka Transactions 是一個解法)。

✦ AI 模擬面試

輸入你的答案,AI 即時分析精準度與改進空間

登入後即可使用 AI 評分