八月初,北京入夏。
气温升到了三十五度,整座城市像一个巨大的蒸笼。行道树蔫蔫地垂著叶子,连蝉鸣都显得有气无力。
“颤动视频“的办公室里,空调开到了最大。
但每个人还是出了一身汗——不是因为热,是因为紧。
秦风制定了两周完成优化的deadline,整个团队都在连轴转。办公室的灯,连续七天亮到晚上十一点以后。
张浩负责伺服器端。
他重构了推荐算法的代码,把冷启动的权重从百分之二十提高到了百分之四十,同时优化了资料库的查询效率——原来一次推荐请求需要两百毫秒才返回结果,现在压缩到了五十毫秒以內。
“五十毫秒。“张浩盯著屏幕上的测试结果,自言自语,“用户基本感知不到延迟了。“
但他没停下来。伺服器端的优化是个无底洞——你永远能找到可以再快一点的方法。张浩把代码又过了一遍,改了几个细微的逻辑判断,又榨出了十毫秒。
李萌负责算法模型。
她重新训练了推荐算法,加入了一批新的用户行为数据——这二十天里新增的八万用户,他们的点击、停留、分享、关注,每一个动作都变成了模型里的一个参数。
模型训练跑了整整十四个小时。
李萌坐在计算机前,盯著进度条一点点往前挪。她没离开,也没刷手机,就那么安静地坐著,偶尔站起来活动一下发麻的腿。
王健负责前端界面。
他新增了“热门推荐“和“关注话题“两个频道,同时优化了视频播放的流畅度——原来在弱网环境下,视频加载会很慢,甚至出现卡顿。王健加入了一个自適应码率的功能,根据用户的网络状况自动调整视频清晰度,虽然画质会有所下降,但至少不会卡。
三个人,各司其职,又互相配合。
优化的过程中,他们遇到了一些技术难题——
高並发场景下的伺服器负载均衡,张浩折腾了两天才搞定。他试了三种方案,最终选了基於一致性哈希的负载均衡策略,把请求均匀地分散到每台伺服器上。
推荐算法的实时更新,李萌卡了一天。训练好的模型如果要重新加载,需要停掉服务,但这会导致用户无法正常使用。她想了一个办法——双缓衝机制,新模型加载到备用內存区,加载完成后瞬间切换,用户侧完全无感知。
视频存储的分布式架构,王健和张浩一起搞了三天。他们把视频文件分散存储到多台伺服器上,用cdn加速分发,使用户可以从离自己最近的伺服器获取视频数据,加载速度提升了一倍。
有些问题,他们自己解决不了。
秦风去找了凌玥。
凌玥是清华计算机系的博士生,研究方向是分布式系统和机器学习,技术水平比张浩和李萌加起来还高。她愿意提供技术支持——某种程度上,是因为秦风帮她走过一段低谷。
在计算机实验室里,凌玥盯著屏幕上的代码,手指在键盘上飞快地敲著。
她话不多,但每句话都切中要害——
“你这个负载均衡策略有问题,一致性哈希在节点变化时会引发大量数据迁移,改成带虚擬节点的。“
“推荐算法的特徵工程做得不够细,用户画像只有五维,至少加到二十维。“
“视频存储的元数据管理用关係型资料库是个错误,改用量级合適的nosql。“
秦风在旁边听著,偶尔插一句话,问一个技术细节。凌玥会停下来,转过头看著他,耐心地解释。
他们的合作很默契——不需要太多语言,一个眼神、一个手势,对方就能明白意思。
优化完成后,团队进行了三轮內部测试。
第一轮测试:功能是否正常。
张浩负责测试伺服器端的稳定性——他写了一个自动化脚本,模擬十万用户同时访问,跑了六个小时,伺服器没有崩溃,响应时间没有显著上升。
李萌负责测试推荐算法的准確性——她用一批標註好的测试数据验证了模型的效果,推荐准確率从原来的百分之六十二提升到了百分之七十八。
王健负责测试前端界面的兼容性——他在五种不同的手机型號上安装了应用,检查界面是否正常显示、视频是否正常播放、交互是否流畅。
第二轮测试:性能是否达標。
这一轮测试更严格——他们不仅测试了正常情况,还测试了各种边界情况和异常场景。网络断了怎么办?伺服器宕机了怎么办?用户数据丟失了怎么办?
每一个问题,他们都预演了一遍,並准备了应对方案。
第三轮测试:用户体验是否流畅。
这一轮测试,他们请了二十个清华的学生来试用优化后的版本。每个人发了一张反馈表,上面列著十几个问题——“首页加载速度快不快?““推荐的內容你喜欢吗?““关注话题功能好不好用?“
反馈的结果比预想的好。
十五个人给出了正面评价,三个人给出了中性评价,两个人给出了负面评价——主要意见是“视频加载偶尔还是有点慢“和“关注话题的话题分类不够细“。
李萌把负面评价记了下来,准备在下个版本里优化。
三轮测试全部通过。
秦风终於鬆了一口气。
他站在办公室的窗边,看著外面沉沉的夜色。远处的写字楼还亮著不少灯——在这个城市里,熬夜加班的不止他们一个团队。
“明天上线?“张浩走过来,站在他旁边。
“明天。“秦风点了点头。
走出孵化器大楼,夜晚的风带著一丝凉意。秦风抬头看了看天,星星很少,但月亮很亮。
他想起前世这个时候的自己——刚大二,每天在宿舍里打游戏,从来没想过有一天会坐在这里,想著一款產品的去留。
重生,给了他一个机会。
不是让她重新来过,而是让他有机会,做一次正確的选择。
他掏出手机,打开“颤动视频“的內测版本,刷了几个视频。
推荐的內容,果然比之前精准了很多。
他知道,明天上线后,数据会证明一切。
回到宿舍,已经是凌晨一点。秦风洗了把脸,看著镜子里自己的脸——眼睛里布满了血丝,但眼神很亮。他想起白天凌玥说的话:“你这个產品,会火的。“当时他没接话,但他心里知道,凌玥说得对。不是因为运气,是因为他们真的把產品做好了。