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