一月十二日,深夜十一点四十七分。深圳创新大厦五楼的灯光已经熄灭了大半,只有最西侧角落里,用磨砂玻璃隔出的一个小会议室还亮著灯。玻璃上贴了防窥膜,从外面只能看到模糊的人影轮廓,和屏幕上快速滚动的代码蓝光。
会议室里没有窗,空调开得很低,但空气里有种黏稠的、电子设备长时间运转后特有的焦热感。五个人,五台电脑,屏幕上清一色是黑色的终端窗口,绿色的字符流像瀑布一样向下倾泻。桌面上堆满了空的红牛罐、揉成一团的零食包装袋、和写满了数学公式的草稿纸。
林浩站在白板前,白板上画著一个复杂的系统架构图,线条交错,模块林立。最上方用红笔写著两个大字:“o?”,下面是一行小字:“氧气——让沟通自由呼吸”。
“进度。”林浩开口,声音在安静的会议室里格外清晰。
坐在最前面的年轻人抬起头,瘦得像竹竿,黑眼圈深得嚇人,但眼睛亮得灼人。他叫周航,二十四岁,北邮硕士,是张一鸣从清华bbs上挖来的网络协议专家,三天前刚入职,就被塞进了这个秘密项目。
“网络层基本搞定。”周航调出一个终端窗口,上面是密密麻麻的抓包数据,“基於udp的自研传输协议,比tcp快40%,抗丟包率强三倍。但nat穿透还是有问题,特別是对称型nat,打洞成功率只有30%。”
“用stun turn ice组合拳。”林浩走到他身后,看著屏幕上的数据流,“stun负责探测nat类型,turn做中转兜底,ice做最优路径选择。2005年这个方案还太新,但我们可以提前做。代码我写了个demo,你拿去优化。”
他从u盘里拷出一个文件夹,里面是完整的stun/turn/ice协议栈实现,注释详尽,代码优雅。周航点开快速瀏览,眼睛越睁越大。
“这……这是rfc標准草案里的內容,还没正式发布……你怎么会有完整实现?”
“提前研究。”林浩含糊带过,“重点不是协议,是性能。我们要做到在90%的网络环境下,打洞成功,延迟低於100毫秒。语音聊天室对实时性要求极高,卡顿超过200毫秒,体验就崩了。”
“明白。”周航点头,手指已经在键盘上飞舞起来。
林浩走向第二个人,李薇,二十六岁,前网易高级工程师,主攻文件传输。她面前的屏幕上是一个文件传输的测试界面,进度条卡在63%不动了。
“离线文件传输,大文件(超过1gb)传输失败率80%。”李薇声音有些沙哑,“我们用的是分块传输,但网络波动一大,就断,重传机制也有问题,经常卡死。”
“换p2p。”林浩在白板上画图,“文件分块,每个块生成独立哈希。传输时,客户端之间直连,互相交换拥有的块。用dht(分布式哈希表)做资源索引,用bt协议做传输。这样不仅减轻伺服器压力,还能利用用户閒置带宽,速度更快。”
“但p2p需要 tracker伺服器,而且……有法律风险。”李薇皱眉,“很多运营商封p2p流量。”
“所以我们自己做私有协议。”林浩从背包里拿出一份手稿,“这是『氧气传输协议』草案,基於kademlia dht改进,加了加密和流量偽装。tracker伺服器用我们自己的,部署在海外vps上,绕过监管。法律风险……等我们做大了再说。”
李薇接过手稿,快速翻阅。稿纸上的公式和流程图,严谨得像学术论文。她抬头看林浩,眼神复杂——这个十八岁的创始人,脑子里到底装了多少东西?
第三个人,赵雷,二十八岁,前腾讯qq空间工程师,负责群组系统。他面前的屏幕上是一个简陋的群聊界面,右侧成员列表显示著“500/500”。
“500人超级群,压力测试过了。”赵雷调出监控数据,“消息分发延迟平均85毫秒,但並发发言时,cpu占用飆升。我们现在的架构是星型广播,每个人发言,伺服器要向其他499个人转发。500人同时在线,伺服器就炸了。”
“用多播树。”林浩在白板上画树状图,“把500人分成多个子树,每棵树一个中继节点。发言先到中继,中继再向下分发。中继节点可以动態选举,负载高的子树自动分裂。这样,消息分发的复杂度从o(n)降到o(log n)。”
“但中继节点掛了怎么办?树的结构怎么维护?”
“用gossip协议做成员管理和故障检测。每个节点隨机和其他节点交换状態信息,最终达成一致。中继节点掛了,邻居节点自动补位。树结构可以动態调整,保持平衡。”林浩说得很快,像在背诵,“具体算法我写在这了,你实现。”
他又递出一份手稿。赵雷接过去,看著上面复杂的图论算法,沉默了。
第四个人,陈小雨,二十三岁,华南理工应届生,团队里唯一的女生,负责语音聊天室。她面前的屏幕上是一个简单的语音波形图,但波形断断续续,像心电图濒死时的颤动。
“语音编码用的speex,但实时性不行。”小雨声音带著哭腔,“网络一波动,就卡,就断。我们已经把缓衝降到最低了,但还是……”
“换opus。”林浩说,“虽然opus標准2012年才出,但核心算法已经公开。我简化了一个版本,適合实时语音。另外,加前向纠错和丟包隱藏。网络波动时,用冗余数据包补丟失的部分,实在补不上,用算法模擬声音,不让用户察觉中断。”
“可opus算法复杂度高,cpu扛不住……”
“所以我们只用在语音聊天室,不用於单聊。而且,我们的目標用户是游戏玩家,他们的电脑配置不会太差。”林浩调出另一份文档,“这是优化版的opus编码器,我魔改过了,性能提升30%。你集成进去测试。”
最后一个人,刘峰,二十五岁,负责帐號系统。他面前的屏幕上是一个登录界面,上面有两个选项:“浩宇游戏通行证登录”和“手机號註册”。
“帐號打通没问题。”刘峰说,“用oauth 2.0协议,浩宇游戏通行证可以无缝登录o?。但手机號註册……需要简讯网关,需要实名制,政策风险大。”
“先不做手机號註册,只做游戏通行证打通。”林浩说,“我们的第一批用户,就是浩宇游戏平台的玩家。他们已经有通行证,有好友关係,有游戏数据。用o?,可以直接和游戏好友聊天,接收游戏通知,分享游戏截图。这是我们的起点。”
他走到白板前,在架构图最下方画了一条线,连接“浩宇游戏通行证”和“o?帐號系统”。
“o?不是另一个qq,是浩宇生態的通讯层。它从游戏场景长出来,服务游戏玩家,再慢慢扩展到其他场景。我们的优势不是技术多牛,是场景多深。玩家在游戏里需要沟通,需要协作,需要炫耀——这些需求,o?满足得比qq好,因为我们懂游戏。”
他放下笔,看著会议室里的五个人。五张年轻的脸,在屏幕蓝光的映照下,有疲惫,有压力,但更多的是亢奋——那种参与创造歷史的亢奋。
“我知道你们很累,压力很大。这个项目是绝密,全公司只有我们六个人知道。如果泄露,腾讯会不惜一切代价掐死我们。如果失败,浩宇可能就此止步。”林浩顿了顿,声音沉下来,“但我们没有选择。qq在变重,在收费,在流失年轻用户。这是时代给我们的窗口。错过了,就不会再有。”
他走到会议室中央,手撑在桌子上,身体前倾。
“o?的核心,不是技术,是理念。我们要做一款『轻、快、纯粹』的通讯工具。没有gg,没有会员,没有花里胡哨的功能。就是聊天,就是传文件,就是语音,就是群组。但每个功能,都要做到极致。快,稳,简洁。让用户用了就回不去。”
“时间表。”周航问。
“三个月。”林浩说,“四月一日,愚人节,上线內测。只对浩宇游戏平台的核心玩家开放,限量一万个邀请码。六月一日,儿童节,正式公测。目標:年底前,日活破百万。”
会议室里一片倒吸凉气的声音。三个月,从零到百万日活。这几乎是天方夜谭。
“做得到吗?”李薇轻声问。
“做不到也要做。”林浩看著她,眼神坚定,“因为如果我们不做,就永远没有机会了。腾讯已经在注意我们,浩聊的增长让他们警觉。等他们反应过来,调集资源做游戏垂直im,我们就没机会了。我们必须快,必须在他们睡醒前,长到足够大,大到他们掐不死。”
他直起身,环视五人。
“从今天起,你们搬出创新大厦,去旁边我租的民房办公。所有代码不上外网,用內网git。对外,你们是『浩宇游戏平台优化组』,实际在做o?。工资翻倍,期权加倍。但条件是:三个月,除了睡觉吃饭,其他时间全给这个项目。能接受的,留下。不能的,现在退出,不怪你们。”
没人动。五双眼睛,盯著他,盯著白板上那个“o?”。
“干了。”周航第一个说。
“算我一个。”李薇点头。
“拼了。”赵雷笑。
“我不退。”小雨咬牙。
刘峰最后一个开口:“帐號系统交给我,绝对打通。”
“好。”林浩点头,从背包里拿出五个信封,每个里面是一张银行卡,“这是预付的三个月工资和奖金。密码是你们入职日期。家人的事,公司会安排照顾。这三个月,你们只需要想一件事:把o?做出来,做到最好。”
五人接过信封,没人看,直接塞进口袋。
“现在,”林浩看了眼手錶,凌晨零点零八分,“开工。周航,攻nat穿透。李薇,文件传输p2p化。赵雷,群组多播树实现。小雨,语音编码优化。刘峰,帐號系统打通。我负责整体架构和协议栈。每天凌晨四点,同步进度。有问题隨时找我。”
键盘声瞬间响起。密集,急促,像暴雨敲打铁皮屋顶。
林浩坐回自己的位置,打开电脑,调出o?的整体架构图。屏幕上,模块之间的连线错综复杂,像神经网络,像未来世界的血管。
他想起上辈子,2011年,微信诞生,从qq手中抢走了移动网际网路的船票。而此刻,2005年初,移动网际网路还没影,pc网际网路的格局看似稳固。但暗流已经在涌动。qq的臃肿,收费,流失年轻用户——这一切,和上辈子微信崛起前的qq,何其相似。
o?,就是浩宇的“微信”。但比微信更早,从游戏场景切入,更垂直,更纯粹。
如果成功,浩宇就不再是游戏公司,是通讯公司,是社交公司,是平台公司。
如果失败……
林浩摇摇头,把这个念头甩出脑海。
没有如果。必须成功。
他手指在键盘上敲击,开始写o?的核心路由算法。代码在屏幕上流淌,像血液,流向他亲手构建的那个未来。
窗外的深圳,夜深如墨。
而在这间密室里,一颗种子,正在拼命发芽。
它的名字,叫氧气。
要在这片看似已经被巨树遮天蔽日的森林里,撕开一道口子,让光透进来。
让后来者,能呼吸。