事件驅動 vs 流式處理:交易系統架構設計
來源: @0xLogicLog
日期: Sat Nov 15 00:30:00 +0000 2025
標籤:
架構設計流式處理狀態管理
事件驅動的問題
在交易系統中實作「當交易所 A 的 BTC 報價和交易所 B 的 BTC 報價都更新了,計算它們的價差。如果價差大於 100,並且距離我上一次下單超過 5 秒,就執行套利」這個需求時,如果使用事件驅動來做會很彆扭。
每次 A 或 B 的數據到達就會觸發 checkSpread,裡面充滿了狀態,需要手動維護 lastPriceA、lastPriceB、lastTradeTime。當需求變複雜,例如新加入交易所 C,再要求價格更新時間在 100ms 以內,代碼就會寫崩了。
流式處理的優勢
最終作者也回到了總線 bus 的模式,確實這樣做好用。使用流式處理 (streamer) 來實作會更合適。
在 TypeScript 環境下,如果性能可以接受的情況下,RxJS 是一個很好的選擇來處理行情數據流。
補充說明:此討論來自 Twitter 交流,@vilicvane 建議雖然他是從 TypeScript 轉 Rust 的開發者,但如果要用 TypeScript 處理行情的話,在性能可以接受的情況下,RxJS 很好用。