用佇列把生產者與消費者解耦:生產者只管丟,消費者按自己的步調拉。換來削峰、容錯與非同步。
🧠 Core Ideas
TIP
佇列把「同步呼叫」變成「非同步事件」。代價是最終一致 + 要處理重複與順序。
- 削峰:突發流量先進佇列,消費者平穩消化(搭配限流)。
- 解耦:生產者不需知道有幾個消費者。
⚖️ Tradeoffs
投遞語意 — at-least-once vs exactly-once
- at-most-once:可能掉訊息,簡單。
- at-least-once:不掉但可能重複 → 消費端要冪等。
- exactly-once:成本高(去重 + 交易),多用「at-least-once + 冪等」逼近。
順序與分區
- 全域順序難擴展;多用「同 key 進同分區」保證分區內有序。
- 消費者組內每分區只給一個消費者,避免並發亂序。
🔑 Takeaways
- 佇列的價值=解耦 + 削峰 + 容錯,代價是最終一致。
- 預設用 at-least-once + 消費端冪等,別輕易追求 exactly-once。
- 要順序就用「同 key 同分區」,別假設全域有序。
No notes yet — jot your takeaways or Q&A here.