韩路一看了看自己那篇博客的阅读量,一万八。
窗外的天空灰得像没校色的显示器,雨还没下出来,空气闷得发黏。
还没人意识到真正的问题有多大。
到了晚上十一点半。
韩路一睡前又刷了一眼微博。
挂了两天的话题#鼎盛推荐系统崩了#,热度已经下去了。
一个新的话题,#鼎盛崩了#,冲到了热搜第一。
他点进去,二十分钟前,鼎盛系三款核心APP集体闪退,用户打开就白屏。
推荐系统的崩溃没有触发熔断。坏掉的模块像传染病一样顺着调用链往上爬,拖垮了依赖它的内容分发、搜索、首页加载,最后整条链路全死了。
十一点十五分鼎盛发了紧急公告,十一点四十分,APP陆续恢复上线,他们手动把推荐系统整个切掉了。
微博上有人贴了恢复后的截图,首页干干净净,没有“猜你喜欢”,没有个性化推荐,没有千人千面,就一个光秃秃的货架。
“这是2015年的APP吧?”
“鼎盛的推荐系统呢?去哪了?”
“切了,不切整个APP都用不了,你选哪个?”
韩路一打开视界。
【事件性质:系统级故障(无熔断→全链路雪崩)】
【根因:画像格式不适配→解析异常堆积→内存泄漏触发OOM→数据管道断裂→ 23%用户画像错乱→推荐模块崩溃未熔断→级联击穿全链路】
【影响范围:宕机期间全量用户(峰值约1200万在线),当前降级运行中】
【当前状态:手动切断推荐模块,APP降级运行】
【预测恢复周期:版本回退至原架构,约14天】
跟他的判断一模一样。
三月中旬他扫那个外包需求时看到的极差评级,一百四十个漏洞,就指向这个结局。
从周一上午全量上线到周二晚上全线崩溃,还不到四十八小时。
比原本预估的还快了一天。
……
天亮之后的事,像多米诺骨牌。
有人翻出了韩路一一个月前那篇《推荐系统架构改造的七个经典陷阱》,发了一条帖子
“兄弟们!NullPointer是预言家!一个月前精准描述了鼎盛今天的崩溃路径,七个陷阱全踩了!”
“什么预言家,是重生者!”
“不是全踩。我数了数,至少五个。”
“你数错了。第二个和第六个也中了,只是症状还没完全暴露。”
“所以是七个全踩?”
“七杀。”
帖子被版主置顶。博客阅读量开始飙升,中午两万九,下午四万二,晚上破六万。技术媒体引用,大厂群截图传播,连几个头部科技公众号都转了。
404寝室群里也在讨论。
马小飞丢了条链接进来:“你们看了吗这个NullPointer?一个月前写的文章,七个陷阱鼎盛全踩了,这人也太牛了吧。”
张浩然:“技术圈都在转。”
马小飞:“你们说这人会不会就是鼎盛内部的?不然怎么写得这么准?”
没人接话。
过了几秒,韩路一打了一句:“是我写的。”
马小飞:“???”
张浩然:“NullPointer是你?”
“嗯,别往外说。”
马小飞发了条语音,韩路一没点开都知道他在喊什么。
张浩然:“知道了。”
下午,讨论从“鼎盛系统崩了”升级到了“谁的锅”。有自媒体把时间线整理出来,鼎盛年初裁员,核心算法团队换血,新团队全面改造系统架构,两个月后全量上线,两天崩溃,配了一句:“教科书级别的管理灾难。”
评论区有人说了一句:“被裁的那个核心开发叫什么来着?”
没人接话,帖子的浏览量继续在涨。
苏念念在微信上转了这条给他:“你之前做的不就是推荐系统吗?这是不是你们组的?”
韩路一回了个“嗯”。
他关掉论坛,切回代码编辑器。内测组反馈积了一堆,最集中的问题是误报率,v0.2降到了7.8%,苏念念标的目标是5%以下,二十三个内测用户里四个人提了同一条:误报太多,影响工作流。
该干嘛干嘛。
晚饭是冰箱里的速冻水饺,煮了十个,吃了八个,剩两个烂了倒掉。
洗完碗坐回电脑前,九点半。
微信弹了一条,是赵启明。
“韩哥,睡了吗?”
韩路一回:“没,怎么了小明”
“今天加班到现在刚回来,跟你说个事。
“下午开了复盘会,陈博文全程在甩锅。
“说系统崩溃的根因是「前任核心开发者遗留的架构缺陷」。
“PPT上你的名字出现了四次,什么「过度耦合的动态权重设计导致系统脆弱性」,什么「缺乏文档交接」,二十三页PPT,有四页在说你。
“放屁啊,那套动态权重是你写的,跑了三年多没出过事,他一上来全改崩了。
“文档我也写了啊,他看都没看。”
韩路一看着这行字,没动。
过了几秒,赵启明又发了一条。
“我在会上差点当场怼他,忍住了,简历还没投出去呢。”
“现在这环境,就当日结工资了,先把自己的事安排好。”
“我有数,就是太他妈恶心了,跟你说一声。”
“嗯,知道了,谢谢【抱拳】”
赵启明发了个叹气的表情包。
“行了韩哥,你早点睡,我也扛不住了”
韩路一放下手机,屏幕暗了几秒又亮了,是顾司。
“鼎盛的事你看到了吧,小心被牵连,有情况随时找我。”
第二十章 装弹
早上七点闹钟响了,韩路一拿起手机。赵启明凌晨三点发来消息,十二张照片,手机拍的,陈博文的复盘PPT,二十三页:“韩哥,偷拍的,你留着。”
核心论点就三句话。
一、原架构设计者留下了严重的技术债务,包括过度耦合的动态权重系统和缺乏冗余设计的数据管道。
二、团队在继承和优化过程中,遭遇不可预见的系统性风险。
三、建议对前员工遗留代码进行全面审计,明确责任归属。
他翻完十二张截图,把这事在404群里说了一下。
马小飞:“这他妈是把锅焊在老韩头上啊。”
张浩然:“这手段很恶毒啊。如果不了解真实情况,可能真有人会信。”
“第三条最毒。”张浩然说,“明确责任归属,先定性,后面想怎么追都行。”
马小飞:“还有个更恶心的,今天凌晨,某科技自媒体发了篇文章,”
他截了图丢群里。
标题:《被裁员工的代码炸了老东家?一场推荐系统崩溃背后的人事博弈》
马小飞:“我问了渠道,这篇不是编辑部自发的,走投放,有人买单。”
张浩然:“PPT对内,文章对外,内外夹击,标准公关打法。”
韩路一打字:“里面提我名字了吗?”
马小飞:“没直接点名,写的是「一位在鼎盛工作五年、负责核心推荐系统的算法工程师」,稍微查一下就能对上。”
“而且,”马小飞又发了一条。“这篇文章故意把NullPointer的博客拎出来一起讲了,原话:「一个月前精准预测崩溃路径的匿名博主NullPointer是否就是这位前员工?」”
群里没人说话。
韩路一把手机扣在床上,去卫生间洗了把脸。水龙头开了很久,凉水从指缝往下淌。
回来拿起手机,马小飞问:“老韩,什么打算?”
“下午去见律师。”
马小飞:“我先帮你怼回去?咱不能吃这个哑巴亏。”
“别。”韩路一打字,“你一出手,人家顺着你查到我,正中下怀。”
马小飞:“……行吧。”
下午两点,博衡律师事务所。
前台已经认识他了:“韩先生这边请。”
顾司在办公室等他。
窗台上那盆绿萝比上次好了一点,新抽了两片小叶子,土是湿的。
桌上摊着三份文件,按顺序排好。她面前摆了两杯咖啡,推了一杯到对面。
“坐,咖啡。”
韩路一坐下,端起咖啡。
顾司把一张纸推过来,上面画了三个圆,分别标着,竞业、归责、职务作品,前两个用红线连着,第三个单独在下面,画了个大大的感叹号。
“你看到那篇自媒体文章了?”