Wed Apr 01 2026
...
FastComments 自動路由傳輸系統
簡介
FastComments 自動路由傳輸系統(FARTS)是我們的傳輸和服務層。FARTs 旨在緩解擁堵,根據用戶位置和未來潛在的負載進行流量路由。它由幾個不同的系統組成,包括地理感知的 DNS 層、DB 代理、DB 複製、SSL 證書管理、反向代理以及使用磁碟 LRU 快取在邊緣快取資產的 CDN。該系統支持靜默和響亮的故障轉移模式。在生產環境中,靜默模式是首選。
主動-主動
最新版本的 FART 包含一個內置的代理和我們數據庫的複製層。這使得 FastComments 能夠實現主動-主動的全球寫入可用性,使我們的 FARTS 最終保持一致性。更多詳情請見這裡。
我們早期實際採取的一個方法是查看是否能創建 MongoDB 的分叉。 我們的一位工程師(Sloperators)實際上在 Opus 4.6 中實現了這一點,但我們決定這樣做的風險高於構建自己隔離系統的風險。
對於像 FART 這樣的系統,您最不想遇到的情況就是知道它已經到達,但您無法追蹤源頭。我們已經添加了監控和診斷,以在細粒度級別監控主動-主動複製。
大規模 Rust
創建 FART 的部分動機是取代一些用 Java 編寫的現有服務。在考慮了一段時間後,我們決定將這些服務整合為一個 Rust 服務,以降低運行時開銷。這是一個可接受的權衡,因為我們不經常部署 FART。FART 使用 LTO 編譯,因此我們真的可以讓它發揮最大效能。
我們花了很多時間嘗試調整舊版 Java 系統,使用不同的垃圾回收器等,最終決定使用 async Rust + Mimalloc 在相同硬體上表現得更好,並且所需記憶體大幅降低,因此轉換是明智之選。
FART 主控
每個部署包含自己的 FART 主控。主控負責協調定時任務、網路鈴聲等等。
客戶影響
FART 系統已經在生產中運行約一年。最近我們進行了主動-主動部署的遷移。新的系統讓我們能夠增強對整體延遲的可見性,同時降低了維護負擔,因此我們可以將更多時間花在功能上。
FART 在背景中靜默運行,但它的存在總是能感受到。我們希望您發現我們的系統在您的用例下運行更快(大多數用戶行為導致數據變更的情況在某些地區會更快)。
部署
部署使用我們用於部署服務本身的同一全球協調系統。FARTS 文檔建議 sloperators 永遠不要信任一次部署,釋出前始終核實負載。
部署後的 FART 警報遵循升級政策:首先是房間,其次是樓層,然後是整棟大樓。
總結
與所有主要版本一樣,我們很高興能夠花時間優化、測試並妥善釋放這一變更。我們對即將到來的更新感到興奮。經過這項工作,FastComments 應該在長期內實現更好的擴展性和更高的正常運行時間。正如 FART 运行手冊所說:“如果你聞到什麼,請說出來”。如果您發現任何問題,請在下面告訴我們。
