六月十號,晚上九點。
林遠洗完澡回到書房,筆記本屏幕還亮著。
右下角QQ圖標在閃。張智勇。
一個文件——《QQ郵箱後端優化需求說明》,47KB。
後面跟一行字:"郵箱部分先看著,規模和建議工期發我。IM的事單獨發。"
林遠雙擊打開。Word文檔加載了五秒。
三頁。信息密度極高。每一個字都是錢。
看完之後靠在椅背上,盯著天花板。
"小艾,核心數據整理一下。"
"三個模塊。"筆記本上的小艾分身回答,"第一,消息隊列引擎重構——當前單線程架構,去年除夕堆積超兩百萬封,延遲四十分鐘。目標:日均五億封投遞,峰值延遲不超十毫秒。第二,垃圾郵件過濾系統——當前關鍵詞規則,準確率七成四。目標:九成以上,誤判率低於千分之五。第三,動態負載均衡——當前加機器沒用,單點瓶頸嚴重。目標:水平擴展,節點故障自動切換,用戶無感知。"
跟評審會上的方案完全對上。張智勇是按評審會的框架反推出來的。
但林遠注意到文檔最後一行——
"本項目為階段性優化。後續可能涉及QQ郵箱產品方向重大調整,屆時需預留擴展空間。"
"張智勇評審會上說過——QQ郵箱不再只是一個郵箱。"林遠說,"這份需求表面是修補丁,實際是打地基。"
"工期?"小艾問。
"郵箱部分,四周夠了。"
"宿主,"小艾語氣微變,"有個細節。需求文檔技術聯繫人寫的方河,不是張智勇。評審會後張智勇單獨留你,說後續他主導對接。但文件上寫的是方河。"
林遠翻回去確認。還真是。
"兩種可能。方河是實際技術負責人,張智勇只是項目管理層。或者——騰迅內部有人不想讓張智勇全權管這個項目。"
他沒在QQ上追問。先幹活,觀察。
兩個項目,兩條身份線。百都那邊他叫林遠,騰迅這邊他是守望。蘇明遠只負責WatchGuard,這兩層秘密碰都不能碰。
十點半。
關掉QQ,切到工作站遠程桌面。西廂房嗡嗡響著,小艾高級分身跑了一下午百都分布式架構模擬。
"混合策略跑出來了。"小艾把圖表推上屏幕。
"說數據。"
"純主動冗餘——故障恢復八秒,資源開銷增百分之四十。純被動恢復——資源省了,恢復時間四十秒以上。混合策略——關鍵節點雙備份,普通節點單備份加快恢。恢復九秒,開銷只增百分之十五。"
"混合策略。"林遠盯著曲線,"這個思路比我的方案好。我原來打算全部做主動冗餘,沒考慮分級別。"
"不是所有節點都平等。"小艾說,"核心索引節點掛了,查詢鏈路斷掉,必須秒級切換。日誌節點、緩存節點掛了,用戶感知不到,晚幾秒恢復沒關係。資源花在刀刃上。"
"代碼框架呢?"
"生成了一半。混合冗餘調度器核心模塊,你審一下。"
林遠開始逐行審。代碼質量很高,結構清晰,注釋完整。但有十七處需要改——雙至強環境下內存管理要更精細,鎖的粒度可以再優化。
改完,小艾實時調整後續生成策略。
"繼續寫。明天下午之前完整版本出來。"
"預計一千二百行,六小時內完成。"
六月十一號,早上。
林遠坐在書桌前吃早飯。小米粥配鹹菜雞蛋。
手機震了。張智勇QQ消息。
"郵箱需求看了?"
"看了。工期四周,含聯調。"
"可以。架構必須支持後續擴展,文檔最後一段看到了?"
"看到了。"
"那句話不是隨便加的。"
張智勇在暗示:產品調整已經定了,不是"可能",是"已經"。
"有數。"林遠回了兩個字。
"合同流程我這邊推,周五簽。SARS期間走線上,掃描件互換。"
"好。"
"IM需求今天整理完,明天發你。規模比郵箱大很多,做好心理準備。"
停了幾秒,又來一條。
"評審會上那幾個技術問題,方河回去寫了技術備忘錄。他原話——'這個人不像是做方案的,像是已經把這些東西實現過一遍。'"
林遠嘴角微動。
方河說得沒錯。他確實"實現過"——在前世,在2026年。分布式架構領先二十三年,拿過來用當然像"已經做過一遍"。
"替我謝謝方河。"
"他想認識你。"
"不方便。"
"我知道。但以後合作深了,完全不見面也不現實。"
"到時候再說。"
林遠翻開筆記本,在"騰迅"下面加了幾行——
"郵箱四周,周五簽合同。IM明天出需求。方河想見面,暫擋回。張智勇說遲早要面對。技術聯繫人方河,不是張智勇。騰迅內部權力結構待觀察。"
上午九點,西廂房。
空調開著,室溫恆定。工作站指示燈規律閃爍。
小艾高級分身代碼生成進度百分之七十八。混合冗餘調度器各模塊逐步成型——調度核心、節點監控、故障檢測、自動切換、健康檢查。每個模塊帶著完整注釋和單元測試。
他在旁邊開另一個終端,寫百都索引優化的核心代碼。
第一周分析階段的產出全在腦子裡。百都現有索引結構的問題:倒排索引的更新策略。全量更新太慢,增量更新有數據一致性問題。
解決方案:分段增量合併。索引切多段,各自獨立更新,後台定期合併小段為大段。既保證更新速度,又避免索引碎片化。
小艾輕活分身在筆記本上彈提示:"宿主,百都索引模塊建議用策略模式。更新策略、合併策略、查詢策略分別封裝,後續替換方便。"
"行。按你說的來。"
"還有一個建議——合併策略觸發條件別用固定時間間隔,改成基於段大小的自適應觸發。小段超閾值自動合併,避免頻繁讀寫。"
"這個好。寫進去。"
鍵盤聲在安靜的西廂房裡響起來。
小艾高級分身在旁邊偶爾彈出建議——某個函數可以用位運算替代除法,性能提升三倍;某個數據結構的內存對齊方式可以優化,減少緩存未命中。每一條都有道理。
兩個項目,兩條線,同時推進。底層共享同一套分布式基礎設施——消息隊列、負載均衡、容錯機制,寫一次兩邊部署。
複利的力量。
下午三點。
調度器代碼審完。一千一百八十六行,改了二十三處。編譯通過,單元測試全綠。
百都索引優化框架代碼寫完,核心邏輯過半。
按這個速度,六周計劃可能五周搞定。但他不會說出來。留一周餘量當安全墊。做項目最重要的不是跑多快,是留出犯錯的餘地。
他站起來活動了一下脖子。空調吹得後頸發涼。西廂房的白板上畫滿了架構圖,紅色藍色黑色三種筆跡交錯——紅色是百都,藍色是騰迅,黑色是小艾提出的優化方案。
兩面牆,三個項目。十七歲的少年,坐在一間嗡嗡作響的房間裡,同時推進兩家網際網路巨頭的技術升級。
手機響了。百都技術部陳建國。
"林遠同學,宏彥總讓我聯繫你。搜索日誌和索引結構文檔今天下午發你郵箱。"
"好。"他報了那個專門對接百都的隔離郵箱。跟騰迅用的完全分開,兩個項目之間的信息防火牆,一道都不能少。
"另外,宏彥總讓我轉告一句話。"
"請說。"
"'地基打得越快,上面能蓋的樓就越高。別急著封頂。'"
林遠安靜了兩秒。
"替我謝謝宏彥老師。"
掛了。
宏彥這句話意思很清楚——別只盯六周交付,百都的架構改造是長期工程。這個人的眼光比預想的還遠。
晚上八點。
張智勇發來消息。
"IM需求寫完了。明天一早發你。規模——"
後面跟了一個數字。
林遠看清那個數字,瞳孔微縮。
一億兩千萬行。
QQ即時通訊系統後端代碼總量——一億兩千萬行。
郵箱是一盤菜。即時通訊是一頭牛。
他深吸一口氣,靠在椅背上。
窗外老槐樹的影子在暮色里輕輕搖晃。工作站的嗡鳴從西廂房隱隱傳來,像一顆不知疲倦的心臟。
百都、騰迅、三分身、兩條線。
盤子比他想像的還要大。