Skip to content

事件驅動 vs 流式處理:交易系統架構設計

來源: @0xLogicLog

日期: Sat Nov 15 00:30:00 +0000 2025

標籤: 架構設計 流式處理 狀態管理


事件驅動的問題

在交易系統中實作「當交易所 A 的 BTC 報價和交易所 B 的 BTC 報價都更新了,計算它們的價差。如果價差大於 100,並且距離我上一次下單超過 5 秒,就執行套利」這個需求時,如果使用事件驅動來做會很彆扭。

每次 A 或 B 的數據到達就會觸發 checkSpread,裡面充滿了狀態,需要手動維護 lastPriceAlastPriceBlastTradeTime。當需求變複雜,例如新加入交易所 C,再要求價格更新時間在 100ms 以內,代碼就會寫崩了。

流式處理的優勢

最終作者也回到了總線 bus 的模式,確實這樣做好用。使用流式處理 (streamer) 來實作會更合適。

在 TypeScript 環境下,如果性能可以接受的情況下,RxJS 是一個很好的選擇來處理行情數據流。


補充說明:此討論來自 Twitter 交流,@vilicvane 建議雖然他是從 TypeScript 轉 Rust 的開發者,但如果要用 TypeScript 處理行情的話,在性能可以接受的情況下,RxJS 很好用。

Curation Desk

這篇文章要放去哪一層?

AI Priority64
待審 預設狀態:待審 · 已寫入文章 metadata

在交易系統中實作「當交易所 A 的 BTC 報價和交易所 B 的 BTC 報價都更新了,計算它們的價差。如果價差大於 100,並且距離我上一次下單超過 5 秒,就執行套利」這個需求時,如果使用事件驅動來做會很彆扭。

先快速掃摘要與重點段落,再決定要精選或封存。