FastComments.com Blog

Wed Apr 01 2026
...

FastComments 自動路由傳輸系統

介紹

FastComments 自動路由傳輸系統 (FARTS) 是我們的傳輸和服務層。FARTS 有助於解決擁堵,根據用戶位置和未來可能的負載來路由流量。它由幾個不同的系統組成,包括地理感知 DNS 層、DB 代理、DB 複製、SSL 證書管理、反向代理,以及使用硬碟 LRU 快取在邊緣快取資源的 CDN。

主動-主動

最新版本的 FART 包含一個針對我們數據庫的內建代理和複製層。這使 FastComments 能夠實現主動-主動,並具備全球寫入可用性,確保我們的 FARTS 最終一致性。更多詳情請參見這裡

我們早期實際採取的一種方法是看看是否能創建一個 MongoDB 的主動-主動分支。我們的一位工程師(Sloperators)實際上在 Opus 4.6 中完成了這一點,然而,我們決定這樣做的風險高於建立我們自己的孤立系統。

大規模 Rust

創建 FART 的部分動機是替換一些用 Java 編寫的現有服務。在考量了一段時間後,我們決定將這些服務整合為一個 Rust 服務,以降低運行時開銷。這樣的權衡是可以接受的,因為我們並不經常部署 FART。FART 使用 LTO 編譯,因此我們可以充分發揮其性能。

我們花了很多時間嘗試對舊的 Java 系統進行調優,使用不同的 GC 等,最終決定 async Rust + Mimalloc 在相同硬體上表現得更好,並且內存需求大幅降低,因此轉換非常明智。

Rust 對於使用共享堆和鎖的網絡相關代碼非常出色。然而,它並不是對運行時問題完全免疫的。可能值得一提的是,由 LLMs 用 Rust 編寫的代碼容易死鎖,而解決這個問題的一種方法是設計易於理解的狀態機系統,而不僅僅是堆積的 async/await。

FART 主控

每個部署都包含自己的 FART 主控。主控負責協調定時任務、網路鉤子等。

客戶影響

FART 系統已在生產環境中運行約一年。最近我們才進行了主動-主動部署的遷移。這對於跨區域讀取自己的寫入操作有一些影響,具體內容可參見上述鏈接的博客文章和 文檔

FART 靜靜地在背景運行,雖然它的存在總是被感受到。我們希望您發現我們的系統在您的使用案例中更快(大多數導致數據變更的用戶行為在某些區域會更快)。

部署

部署使用我們用於部署服務本身的相同全球協調系統。FART 文檔建議 Sloperators 永遠不要完全信任一個部署,請在釋放前始終驗證有效負載。

部署後的 FART 警報遵循升級政策:首先是房間,然後是樓層,最後是整棟大樓。

總結

他們說互聯網是一系列管道,但實際上是一系列發聲。

與所有主要版本一樣,我們很高興能夠花時間來優化、測試並正確釋放這一變更。我們對未來的內容感到興奮。FastComments 在長期看來應該能更好地擴展並擁有更好的正常運行時間。正如 FART 操作手冊所說:“如果你聞到什麼,說出來。”如果您發現任何問題,請在下方告訴我們。