首頁> 現代都市> 目錄頁> 第242章 QQ遠程評審!五千封每秒!架構師沉默!

第242章 QQ遠程評審!五千封每秒!架構師沉默!

2026-08-21 04:01:51 作者: 冷焰天

  周末三天,林遠全泡在西廂房。

  小艾三個分身同時運轉。工作站主體全力備戰。消息隊列壓測調到六千封每秒,延遲壓到八點三毫秒。貝葉斯過濾器準確率停在九十一。七,到頂了,再往上需要真實用戶數據。

  夠了。

  六月九日,周一。

  下午一點十五分,林遠換了件乾淨T恤。遠程看不到人,但儀式感不能少。

  他坐在工作站前,打開QQ。一點五十八分,張智勇邀請加入多人語音通話。

  林遠點擊接受。

  耳機里先是一陣電流雜音,然後幾個人低聲說話。2003年的QQ語音採樣率低、帶寬窄,人聲像蒙了層薄紗。

  上次去騰迅是一月份,親自飛到深圳,馬化騰在寶安機場舉著"SW"的牌子接機。那回只有幾個人知道他到了深圳。這次更省事——SARS困在北京,連飛機都不用坐。

  "守望,在嗎?"

  "在。"

  "我這邊四位。產品總監李峻,架構師方河、陳思遠。評審流程:你先講方案二十分鐘,然後現場演示,最後技術質詢。全程不超過一個半小時。"

  "沒問題。"

  "QQ郵箱的核心痛點,三個。"林遠語速平穩。

  "第一,垃圾郵件泛濫。現有規則基於關鍵詞黑名單,誤判率高漏判更高,占比超過百分之四十。第二,高峰投遞延遲嚴重。去年除夕消息隊列堆積超兩百萬封,延遲最長達四十分鐘。第三,架構擴展性差,單線程處理,加機器沒用。"

  "方案分三個模塊。分布式消息隊列引擎解決延遲和擴展性,貝葉斯過濾器解決垃圾郵件識別,動態負載均衡讓系統自動擴縮容。"

  他通過QQ遠程協助把屏幕共享過去,點開消息隊列引擎的架構圖。

  

  "核心設計是分區順序寫入。消息按收件人ID做哈希分區,同一分區順序寫盤,跨分區並行。持久化用寫前日誌加分區快照——先寫WAL再入內存隊列,異步刷盤。進程崩潰從WAL恢復,零丟失。"

  代碼界面切出來,C++實現,無鎖環形緩衝區。

  "單隊列吞吐每秒十萬條。"

  "第二個模塊,貝葉斯過濾器。"

  命令行窗口打開,日誌刷出。

  "十二萬封標註郵件,十折交叉驗證。準確率九十一。七,召回率八十八。二,精確率九十四。五。現有規則過濾系統準確率七十三。六,提升超過十個百分點。"

  "更關鍵的是誤判率——正常郵件被誤判的概率低於千分之三。用戶最恨這個。"

  "下面現場壓測。"

  壓測終端打開。

  "雙路至強三點零六吉赫茲,四個G內存,三塊SCSI磁碟RAID 5。模擬十萬並發用戶,每人每秒一封,持續六十秒。"

  回車。

  終端數據滾動——投遞速率、平均延遲、隊列深度、磁碟IO。

  "當前三千二百封每秒,延遲六毫秒。"

  數字跳動。三千五,四千,四千五——逼近五千。

  五千封每秒。穩住。圍繞五千波動,延遲始終低於十毫秒。

  六十秒結束。平均速率五千零二十三封每秒,延遲八點三毫秒,零丟失。

  截圖,QQ文件傳輸發過去。

  耳機里沉默五秒。

  "壓測數據可以復現嗎?"陳思遠問。

  "隨時。腳本和配置都可以給。"

  質詢環節。

  方河先開口:"消息隊列的持久化用WAL,刷盤策略是什麼?同步還是批量?"

  "批量。五十毫秒或一百條觸發一次。崩潰最多丟五十毫秒的消息,但發送端超三秒無回執自動重發,最終不丟。"


  "重試風暴呢?"

  "指數退避,首次一秒,之後翻倍,最大五分鐘。峰值不超正常流量百分之十五。"

  方河沒再追問。

  陳思遠接上:"貝葉斯過濾器的訓練數據從哪來?"

  "Enron語料庫和SpamAssassin公開樣本。"

  "問題就在這。"陳思遠語氣銳利起來,"Enron是企業內部郵件,SpamAssassin是英文樣本。QQ郵箱用戶是中文環境,分布差異大。泛化能力怎麼保證?"

  "三個策略。字符n-gram加詞性標註混合,中英文通用。部署後收集用戶標記數據每周重訓練。再加遷移學習——公開數據預訓練,真實數據微調。"

  "n-gram的n取多少?"

  "二元三元混合。實測比單一n值提升兩個百分點。"

  第三個問題還是方河:"這套方案能撐多大用戶規模?"

  "設計目標兩億用戶,日均投遞五億封。消息隊列通過增加分區水平擴展,理論上節點數不受限。"

  "兩億?QQ郵箱現在不到一億。"

  "為未來三年留餘量。等漲到兩億再改架構,代價是現在的十倍。"

  李峻一直沒說話。

  直到這時他才開口:"守望,我問一個。"

  "請說。"

  "你的貝葉斯過濾器沒有集成到消息隊列的投遞鏈路。郵件先入隊再異步過濾,不是過濾後再入隊。用戶會先看到垃圾郵件進收件箱,然後才被標記移走——收件箱先髒一下再乾淨。這個問題考慮過嗎?"

  這個問題刁鑽。

  當前架構確實是異步過濾。好處是不影響投遞延遲,壞處是用戶短暫看到垃圾。

  "考慮過,有意為之。"林遠說,"同步過濾的代價是延遲增加。單封分類耗時零點三毫秒,乘日均五億封,額外需要大量並行節點。而且過濾器故障會直接斷掉整條投遞鏈路。"

  "但可以優化。加一層輕量前置過濾——入隊前用規則引擎粗篩,攔截純數字發件人、已知黑名單域名。耗時不到零點零一毫秒,同步做。剩下走異步精篩。兩級結合,擋住六成垃圾不進入隊列,不增加核心鏈路延遲。"

  李峻笑了一聲:"有點意思。"

  評審進行一小時二十分鐘。

  張智勇做總結:"方案本身沒有異議。技術深度夠,工程可行性高,壓測數據紮實。我這邊基本認可。評審報告這周提交管理層,快的話下周出結果。"

  "好。"

  "其他幾位先退,你留一下。"

  方河、陳思遠和李峻依次退出。只剩張智勇和林遠。

  沉默三秒。

  "守望,直說了。"張智勇聲音壓低,"今天你的表現超出預期。不只是方案——你對架構的理解、對邊界情況的處理、對數字的敏感度,不像普通技術人員。"

  林遠沒接話。

  "我問一個問題,可以不答。"

  "你說。"

  "你到底是一個人,還是一個團隊?"

  如果"守望"是一個人,價值無限。如果是團隊,騰迅談的就不是合作而是收購。

  林遠沉默兩秒。

  "一個人。"

  "好。夠了。"張智勇說,"還有件事通氣——QQ郵箱接下來可能做大改版。不是技術升級,是產品方向調整。具體不能說。但如果有興趣,這次合作可能只是開始。"


  "多大的方向調整?"

  "做完之後,QQ郵箱可能不再只是一個郵箱。"

  林遠手指在桌面輕敲一下。

  QQ郵箱不到一億用戶,這個節點做方向調整——他腦子裡浮出幾種可能。

  "好,我等著。"

  "保持聯繫。"

  語音通話結束。

  林遠摘下耳機,靠在椅背上。

  "全程錄音了,要整理紀要嗎?"小艾問。

  "不用。"

  他推開西廂房的門。院子陽光正好,老槐樹影子斑駁。

  "小遠!"王淑芳的聲音從廚房飄來,"你剛才跟誰打電話呢?說一個多小時。"

  "同學,討論問題。"

  "哦——"尾音拖得老長,"那你同學聲音怎麼聽著像個大人似的?"

  林遠嘴角抽了一下。"電話信號問題。"

  走回屋裡,目光落在桌上的筆記本上。

  翻開,在"騰迅"下面加了一行——

  "評審通過。QQ郵箱要做方向調整,不再只是郵箱。"

  下面又加一行——

  "第二步的棋盤,可能要提前落了。"

  合上本子。窗外蟬聲密集起來。


關閉
Δ