串流處理 進階

串流處理的訊息語意:Exactly-Once vs At-Least-Once

AI 練習作答

請說明串流處理的三種訊息傳遞語意。

At-Most-Once(最多一次)

訊息可能丟失,但不會重複。適用於可接受丟失的場景(如即時指標監控)。

At-Least-Once(至少一次)

訊息不會丟失,但可能重複。是最常見的預設語意。需要下游系統具備冪等性來處理重複訊息。

Exactly-Once(剛好一次)

每條訊息只被精確處理一次,既不丟失也不重複。實作最複雜,效能成本最高。

Kafka 的 Exactly-Once

  • Producer 端:冪等 Producer(enable.idempotence=true)+ 事務 API,確保訊息原子性寫入。
  • End-to-End:搭配 Kafka Streams 或 Flink,利用兩階段提交(2PC)或 Checkpoint 機制實現端到端 Exactly-Once。

實務選擇

大多數場景用 At-Least-Once + 冪等下游即可滿足需求,效能更好。只有金融交易等高精確需求才值得承擔 Exactly-Once 的成本。

✦ AI 模擬面試

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

登入後即可使用 AI 評分