串流處理 進階
串流處理的訊息語意:Exactly-Once vs At-Least-Once
請說明串流處理的三種訊息傳遞語意。
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 評分
