六月一號,晚上七點五十。
楠書房西廂房。
空屋子裡只有一張摺疊桌,桌面還有點晃,林遠墊了兩塊磚頭才穩住。桌上擺著筆記本,旁邊一副耳機。
正房方向傳來電視聲——央視一套,六一兒童節特別節目。小孩子們唱歌的聲音隔著院子飄過來,模模糊糊的。
林遠戴上耳機。
屏幕左下角,小艾彈出一行小字:"方案要點已排列。建議順序:反垃圾→安全加固→性能優化。由淺入深。"
他點了點頭。
寫了一個多星期。從解封那天開始整理思路,到昨晚凌晨三點才最終定稿。每一個點都反覆推演過。
七點五十九分。QQ聯繫人列表里,"ZhangZY"的頭像亮了。
八點整。林遠發起QQ語音。
嘟——嘟——嘟——
三聲長響。2003年的QQ語音走UDP打洞,連接建立慢是常態,跨城還得走中繼。
"咔。"接通了。
"餵?聽得到嗎?"張智勇的聲音帶著壓縮後的沙啞和一點回音。
"聽得到。我是守望。"
"守望,你好!深圳今天特別熱,你那邊怎麼樣?"
"北京還行。連續三天零新增了,不過還沒摘帽,出京落地還得隔離十四天。不然我就直接去深圳當面聊了。"
"沒事,QQ語音也方便。開始?"
"好。三個部分——反垃圾郵件、安全加固、性能優化。我一個一個說。"
"你說。"椅子吱呀響了一聲——靠著椅背聽的。
"第一個,反垃圾郵件。2003年QQ郵箱最大的痛點不是功能少,是垃圾郵件太多。用戶收件箱裡一半以上是GG和詐騙。這個問題不解決,用戶留存就是空話。"
"嗯,確實……"
"方案是三層過濾。第一層,貝葉斯概率分類。根據郵件正文詞頻特徵計算垃圾概率,不需要人工規則,機器自己學。用戶標記一次垃圾郵件,模型就更新一次。"
對面安靜了。椅子不響了。
"第二層,RBL實時黑名單。對接國際反垃圾組織資料庫,發件IP在黑名單上的直接攔截。第三層,發信頻率限制。同一帳戶短時間大量發信,觸發限流。"
張智勇沉默了幾秒。
"貝葉斯分類……你郵件里提過思路,我以為只是概念層面。算法框架寫出來了?"
"方案附件第三到第七頁,完整的模型設計和訓練數據方案。"
翻紙聲。
"……你這個特徵提取考慮了中文分詞的特殊性?"他的聲音變了,少了客套,多了認真。
"對。英文空格天然分詞,中文不行。我用bigram統計切分,不依賴外部詞典。"
"繼續。"兩個字,語氣完全不一樣了。
"第二個模塊,安全加固。"小艾在屏幕角落閃了一下提示——重點展開。
"你們QQ郵箱現在密碼存儲用的是簡單MD5。現在破解MD5的工具滿大街都是,資料庫一旦泄露,所有用戶密碼等於裸奔。建議改加鹽哈希——每個用戶生成隨機鹽值,拼接後再哈希。同樣密碼,不同用戶存儲值完全不同。撞庫攻擊直接廢掉。"
"郵件傳輸層面,現在全鏈路明文。建議部署SSL/TLS加密。2003年了,各大服務商都在走這個方向。"
"再加防釣魚——郵件正文中的連結做域名校驗,命中已知釣魚域名庫的直接攔截。"
張智勇深吸了一口氣。
"守望,這些方向……你們之前在安全評估報告裡提過思路。但那次只是點到為止,這次——"
"評估是診斷病情。這次是開藥方。"
"……好。"聲音裡帶上了一點笑,不是客套,是"行你說服我了"的笑,"第三個呢?"
"性能優化。最硬的骨頭。"
"發信延遲高的根本原因——同步處理架構。用戶點發送,殺毒、審核、校驗、投遞全在一個流程里排隊,高峰一個環節卡住,後面全堵。"
"你的意思是?"
"消息隊列。請求扔進隊列,立刻返回成功。後台異步處理——殺毒一個Worker、審核一個Worker、投遞一個Worker,各干各的,互不阻塞。延遲從秒級降到毫秒級。"
"還有存儲。所有用戶數據擠在同一組資料庫里,用戶量一旦過千萬——"
"你覺得會過?"
"一定會。QQ用戶基數擺在那裡。到時候必須分庫分表,按用戶ID哈希分散到多個節點,讀寫性能線性擴展。"
安靜。
很長的安靜。
張智勇翻紙的聲音持續了十幾秒。
然後——
"守望。"他的聲音沉了下來,每個字都帶著分量,"你這個方案不只是安全方案。這是整體架構重構。你知道這意味著什麼嗎?"
林遠沒接話。
"意味著整個技術組要動。架構組、安全組、運維組,全要拉進來。"
"我知道。所以才把方案寫完整。零散補丁解決不了根本問題。"
窗外有蟲子叫。遠處正房電視換了頻道,新聞聯播的片頭曲隱隱傳來。
"守望,我問你個問題。"張智勇的語氣已經不是四十分鐘前的客氣了,"這個方案落地……你們期望什麼合作方式?"
小艾的提示幾乎同時彈出:"商務試探。誰先出價誰被動。穩住。"
"方案先給你們。"林遠語氣很平,"怎麼落地、誰來落地,你們內部先評估。評估完了再談。"
"……你這個人。"張智勇嘆了口氣,像笑又像琢磨,"技術上是真狠,嘴上也是真緊。"
"不是緊。是方案值這個價。"
沉默。
"行。我內部推一下,等我消息。"
"好。"
"還有——下次別QQ語音了。等你方便來深圳,我請你吃飯。當面聊。"
"等北京摘帽就過去。"
"回頭見。"
語音斷開的提示音響了一下。
林遠摘下耳機,長出了一口氣。
小艾的分析已經彈出來:"通話34分27秒。對方態度變化節點:第8分鐘、第18分鐘、第29分鐘。最終判斷:方案已被完全認可。內部評估周期預計7-10個工作日。"
他點了點頭。合上筆記本,推開西廂房的門。
院子裡月光很好。六月初的夜風帶著暖意,老槐樹的影子歪歪斜斜鋪在地上。正房燈還亮著,電視聲變成了GG。
林遠站在院子裡伸了個懶腰。方案交了,但硬體還沒到位。現在這台筆記本跑分析勉強湊合,真要部署那套架構——消息隊列、分庫分表、實時過濾——需要一台真正的伺服器。
得去中關村看看了。
正想著——西廂房裡筆記本屏幕亮了。
小艾彈出一條新提示:"郵件。百都域名。"
林遠走回去,坐下,點開。
張志遠發的。
"林遠先生:李總下周二方便,想約您當面交流上次排序算法方案的後續合作。具體事宜面談。如方便請回復確認時間地點。"
林遠盯著屏幕,嘴角微揚。
騰迅的郵箱方案,百都的技術入股。兩條線,在同一個夜晚交匯了。
他把手機揣回口袋,抬頭看了看月亮。
六月一號。好日子。