第十九章 我是预言家
鼎盛数字推荐系统全量上线了。
韩路一刷到微博热搜的时候是下午三点。#鼎盛推荐系统抽风#,排第十七。
点进去,画风很统一。
“给我推婴儿车。我二十三,单身,养了条狗。”
“我的健身帐號刷出来全是保健品和助听器。”
“我看了一上午美食视频,首页给我推了个殯葬服务优惠。鼎盛大概觉得我吃太多了,提前帮我安排后事。”
评论区充满了快活的空气。
有人总结:“鼎盛的“猜你喜欢”应该改名“猜你是谁”,连我是谁都没搞清楚就开始猜了。”
韩路一没笑。
態规则引擎本身不至於这么离谱,推得不准是正常的,但推得这么驴唇不对马嘴,说明数据管道出了问题。他一行一行写出来的特徵提取模块被砍掉之后,旧的用户画像格式和新引擎之间没人做適配,输入全是乱的。垃圾进,垃圾出。
推婴儿车不算什么。等数据管道的缓衝区吃满,后面的事就不好笑了。
第二天上午,微博上的吐槽变了味,热搜也衝到了第三。
最高赞:“打开鼎盛买菜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,有四页在说你。
“放屁啊,那套动態权重是你写的,跑了三年多没出过事,他一上来全改崩了。
“文档我也写了啊,他看都没看。”
韩路一看著这行字,没动。
过了几秒。赵启明又发了一条。
“我在会上差点当场懟他。忍住了,简歷还没投出去呢。”
“现在这环境,就当日结工资了。先把自己的事安排好。”
“我有数。就是太他妈噁心了,跟你说一声。”
“嗯,知道了。谢谢【抱拳】”
赵启明发了个嘆气的表情包。
“行了韩哥,你早点睡。我也扛不住了”
韩路一放下手机。屏幕暗了几秒又亮了。是顾司玥。
“鼎盛的事你看到了吧。小心被牵连,有情况隨时找我。”
韩路一刷到微博热搜的时候是下午三点。#鼎盛推荐系统抽风#,排第十七。
点进去,画风很统一。
“给我推婴儿车。我二十三,单身,养了条狗。”
“我的健身帐號刷出来全是保健品和助听器。”
“我看了一上午美食视频,首页给我推了个殯葬服务优惠。鼎盛大概觉得我吃太多了,提前帮我安排后事。”
评论区充满了快活的空气。
有人总结:“鼎盛的“猜你喜欢”应该改名“猜你是谁”,连我是谁都没搞清楚就开始猜了。”
韩路一没笑。
態规则引擎本身不至於这么离谱,推得不准是正常的,但推得这么驴唇不对马嘴,说明数据管道出了问题。他一行一行写出来的特徵提取模块被砍掉之后,旧的用户画像格式和新引擎之间没人做適配,输入全是乱的。垃圾进,垃圾出。
推婴儿车不算什么。等数据管道的缓衝区吃满,后面的事就不好笑了。
第二天上午,微博上的吐槽变了味,热搜也衝到了第三。
最高赞:“打开鼎盛买菜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,有四页在说你。
“放屁啊,那套动態权重是你写的,跑了三年多没出过事,他一上来全改崩了。
“文档我也写了啊,他看都没看。”
韩路一看著这行字,没动。
过了几秒。赵启明又发了一条。
“我在会上差点当场懟他。忍住了,简歷还没投出去呢。”
“现在这环境,就当日结工资了。先把自己的事安排好。”
“我有数。就是太他妈噁心了,跟你说一声。”
“嗯,知道了。谢谢【抱拳】”
赵启明发了个嘆气的表情包。
“行了韩哥,你早点睡。我也扛不住了”
韩路一放下手机。屏幕暗了几秒又亮了。是顾司玥。
“鼎盛的事你看到了吧。小心被牵连,有情况隨时找我。”