鼎盛數字推薦系統全量上線了。
韓路一刷到微博熱搜的時候是下午三點。#鼎盛推薦系統抽風#,排第十七。
點進去,畫風很統一。
“給我推嬰兒車。我二十三,單身,養了條狗。”
“我的健身賬號刷出來全是保健品和助聽器。”
“我看了一上午美食視頻,首頁給我推了個殯葬服務優惠。鼎盛大概覺得我吃太多了,提前幫我安排后事。”
評論區充滿了快活的空氣。
有人總結:“鼎盛的「猜你喜歡」應該改名「猜你是誰」,連我是誰都沒搞清楚就開始猜了。”
韓路一沒笑。
態規則引擎本身不至于這么離譜,推得不準是正常的,但推得這么驢唇不對馬嘴,說明數據管道出了問題。他一行一行寫出來的特征提取模塊被砍掉之后,舊的用戶畫像格式和新引擎之間沒人做適配,輸入全是亂的。垃圾進,垃圾出。
推嬰兒車不算什么。等數據管道的緩沖區吃滿,后面的事就不好笑了。
第二天上午,微博上的吐槽變了味,熱搜也沖到了第三。
最高贊:“打開鼎盛買菜APP,給我推了一屏幕情趣用品,我媽就站在旁邊。我現在怎么跟她解釋啊?”
有人發:“我在深圳,「猜你喜歡」給我推了一整頁哈爾濱本地火鍋店。問了個哈爾濱的哥們,他那邊全是深圳奶茶店。我倆換號了?”
有人跟:“不止你們。我和我同事的推薦頁一模一樣。連順序都一樣。”
技術論壇這邊也炸了。
一個ID叫“架構老狗”的資深開發者發了長帖:
“說句不好聽的,這個推薦系統的改造路線非常眼熟。特征提取從動態權重退回靜態規則,多模態融合模塊砍得只剩文本維度,NullPointer上個月那篇《七個經典陷阱》,第三、第五、第七個,鼎盛全踩了。建議寫個續集:《七個陷阱實戰教程,由某大廠傾情演繹》。”
兩小時一百三十多贊。
韓路一看了看自己那篇博客的閱讀量。一萬八。
窗外的天空灰得像沒校色的顯示器。雨還沒下出來,空氣悶得發黏。
還沒人意識到真正的問題有多大。
到了晚上十一點半。
韓路一睡前又刷了一眼微博。
掛了兩天的話題#鼎盛推薦系統崩了#,熱度已經下去了。
一個新的話題,#鼎盛崩了#,沖到了熱搜第一。
他點進去。二十分鐘前,鼎盛系三款核心APP集體閃退,用戶打開就白屏。
推薦系統的崩潰沒有觸發熔斷。壞掉的模塊像傳染病一樣順著調用鏈往上爬,拖垮了依賴它的內容分發、搜索、首頁加載,最后整條鏈路全死了。
十一點十五分鼎盛發了緊急公告。十一點四十分,APP陸續恢復上線,他們手動把推薦系統整個切掉了。
微博上有人貼了恢復后的截圖。首頁干干凈凈,沒有“猜你喜歡”,沒有個性化推薦,沒有千人千面。就一個光禿禿的貨架。
“這是2015年的APP吧?”
“鼎盛的推薦系統呢?去哪了?”
“切了。不切整個APP都用不了,你選哪個?”
韓路一打開視界。
【事件性質:系統級故障(無熔斷→全鏈路雪崩)】
【根因:畫像格式不適配→解析異常堆積→內存泄漏觸發OOM→數據管道斷裂→ 23%用戶畫像錯亂→推薦模塊崩潰未熔斷→級聯擊穿全鏈路】
【影響范圍:宕機期間全量用戶(峰值約1200萬在線),當前降級運行中】
【當前狀態:手動切斷推薦模塊,APP降級運行】
【預測恢復周期:版本回退至原架構,約14天】
跟他的判斷一模一樣。
三月中旬他掃那個外包需求時看到的D-評級,一百四十個Bug,就指向這個結局。當時看到的是七十二小時。
從周一上午全量上線到周二晚上全線崩潰,還不到四十八小時。
比原本預估的還快了一天。
……
天亮之后的事,像多米諾骨牌。
有人翻出了韓路一一個月前那篇《推薦系統架構改造的七個經典陷阱》,發了一條帖子——
“兄弟們!NullPointer是預言家!一個月前精準描述了鼎盛今天的崩潰路徑,七個陷阱全踩了!”
“什么預言家,是重生者!”
“不是全踩。我數了數,至少五個。”
“你數錯了。第二個和第六個也中了,只是癥狀還沒完全暴露。”
“所以是七個全踩?”
“七殺。”
帖子被版主置頂。博客閱讀量開始飆。中午兩萬九。下午四萬二。晚上破六萬。技術媒體引用,大廠群截圖傳播,連幾個頭部科技公眾號都轉了。
404寢室群里也在討論。
馬小飛丟了條鏈接進來:“你們看了嗎這個NullPointer?一個月前寫的文章,七個陷阱鼎盛全踩了。這人也太牛了吧。”
張浩然:“技術圈都在轉。”
馬小飛:“你們說這人會不會就是鼎盛內部的?不然怎么寫得這么準?”
沒人接話。
過了幾秒,韓路一打了一句:“是我寫的。”
馬小飛:“???”
張浩然:“NullPointer是你?”
“嗯。別往外說。”
馬小飛發了條語音,韓路一沒點開都知道他在喊什么。
張浩然:“知道了。”
下午,討論從“鼎盛系統崩了”升級到了“誰的鍋”。有自媒體把時間線整理出來,鼎盛年初裁員,核心算法團隊換血,新團隊全面改造系統架構,兩個月后全量上線,兩天崩潰。配了一句:“教科書級別的管理災難。”
評論區有人說了一句:“被裁的那個核心開發叫什么來著?”
沒人接話。帖子的瀏覽量繼續在漲。
蘇念念在微信上轉了這條給他:“你之前做的不就是推薦系統嗎?這是不是你們組的?”
韓路一回了個“嗯”。
他關掉論壇,切回代碼編輯器。內測組反饋積了一堆,最集中的問題是誤報率,v0.2降到了7.8%,蘇念念標的目標是5%以下。二十三個內測用戶里四個人提了同一條:誤報太多,影響工作流。
該干嘛干嘛。
晚飯是冰箱里的速凍水餃,煮了十個,吃了八個,剩兩個爛了倒掉。
洗完碗坐回電腦前,九點半。
微信彈了一條。趙啟明。
“韓哥,睡了嗎?”
韓路一回:“沒,怎么了小明”
“今天加班到現在剛回來,跟你說個事。
“下午開了復盤會,陳博文全程在甩鍋。
“說系統崩潰的根因是「前任核心開發者遺留的架構缺陷」。
“PPT上你的名字出現了四次。什么「過度耦合的動態權重設計導致系統脆弱性」,什么「缺乏文檔交接」。二十三頁PPT,有四頁在說你。
“放屁啊,那套動態權重是你寫的,跑了三年多沒出過事,他一上來全改崩了。
“文檔我也寫了啊,他看都沒看。”
韓路一看著這行字,沒動。
過了幾秒。趙啟明又發了一條。
“我在會上差點當場懟他。忍住了,簡歷還沒投出去呢。”
“現在這環境,就當日結工資了。先把自己的事安排好。”
“我有數。就是太他媽惡心了,跟你說一聲。”
“嗯,知道了。謝謝【抱拳】”
趙啟明發了個嘆氣的表情包。
“行了韓哥,你早點睡。我也扛不住了”
韓路一放下手機。屏幕暗了幾秒又亮了。是顧司玥。
“鼎盛的事你看到了吧。小心被牽連,有情況隨時找我。”