第92章 「巴別塔」项目启动
七月十七日凌晨四点,深圳南山,浩宇基础研究院地下一层。这里是三个月前才完成改造的“隔离实验区”,没有窗户,空气靠独立的净化系统循环,带著一种无菌般的冰冷和乾燥。走廊灯光是惨白的led,照在浅灰色环氧树脂地坪上,反射出毫无温度的光泽。一扇厚重的防电磁屏蔽门紧闭,门禁系统闪烁著微弱的红光,门牌上只有一个简单的白色標籤:“b-7”。
门內是一个六十平米左右的实验室。正中央是一张巨大的白色工作檯,台上杂乱地摆著七八台设备:一台戴尔台式机、一台ibm笔记本、一台索尼vaio超薄本、一台诺基亚n95原型机、一台黑莓8700、一台索尼爱立信的p990智慧型手机、甚至还有一台厚重的东芝windows平板电脑。所有设备都用五顏六色的网线、数据线、转接头连在一起,像某种怪异的机械章鱼。
陈薇站在工作檯前,穿一件实验室白大褂,头髮扎成紧紧的髮髻,没化妆,脸色在屏幕冷光下白得发青。她已经连续工作了四十个小时,咖啡因在血液里像细小的针一样游走,让她太阳穴突突地跳,但精神异常清醒,清醒到能听见自己心臟每一次搏动、血液流过耳膜的细微声响。
她面前的三块屏幕上,运行著同一个测试程序。程序很简单:在戴尔台式机上播放一段视频,然后暂停;接著在诺基亚手机上点击“继续播放”;三秒后,手机屏幕亮起,视频从暂停点开始播放,音画同步,毫无卡顿。她再在平板上点击“切换”,视频瞬间跳到平板,进度条分毫不差。
完美。至少看起来完美。
但陈薇知道,这完美的表象下,是过去三个月她和团队解决的无数个“不可能”:不同作业系统(windows、symbian、blackberry os、windows mobile、linux)之间的进程状態同步;不同架构(x86、arm、mips)的数据格式转换;不同网络(wi-fi、2g、3g、蓝牙)下的传输协议適配;不同硬体(pc的高性能cpu、手机的低功耗晶片)的计算负载迁移。
这套系统,她內部称之为“seamless sync”(无缝同步),但林浩在立项会上给了它一个更宏大的名字:巴別塔。
“《圣经》里,人类想建一座通天的塔,上帝让人类语言不通,工程失败了。”林浩当时在白板上写下“babel”这个单词,“但我们要建的巴別塔,不是让人与天沟通,是让设备与设备、数据与数据、服务与服务之间,语言相通。在pc上没打完的游戏,在手机上继续;在平板上没听完的歌,在车上继续;在手机上没聊完的天,在电视上继续。我们要让用户感觉,他拥有的不是一堆孤立的设备,是一个无缝流动的数字自我。而这座塔的基石,就是一套跨平台的无缝流转协议。”
陈薇记得自己当时的反应是:荒谬。技术上不可能。每个作业系统都是封闭的王国,每个硬体架构都有自己的指令集,每个应用都有自己的数据格式。要打通它们,意味著要从最底层重新设计一套“元协议”,让所有设备、系统、应用,都臣服於这套协议。这不仅是技术挑战,是生態霸权——谁掌握了这套协议,谁就掌握了数字世界的水和电。
但她还是接了。因为林浩说:“这不是一个功能,是未来鸿蒙作业系统的前置技术验证。鸿蒙要做的,不是另一个windows或android,是一个能跑在手机、平板、电脑、电视、手錶、汽车……所有设备上的统一系统。而『巴別塔』,就是那个系统的血管网络。我们要先在现有设备的废墟上,证明这套血管能跑通。然后,再建新的身体。”
所以有了这个地下实验室,有了这堆来自不同时代、不同阵营、支离破碎的设备,有了过去三个月不眠不休的攻坚。而现在,她手里拿著测试报告,上面用红笔圈出了最后一个未解决的问题:延迟。
“从pc切换到手机,平均延迟3.2秒。从手机切换到平板,平均延迟2.8秒。用户可感知的延迟閾值是1秒以內。”她对著空气自言自语,声音在空旷的实验室里迴响,“问题出在状態序列化。pc的进程状態,包含內存映像、寄存器、打开文件句柄,数据量超过500mb。压缩后传输,在wi-fi下需要至少2秒。2秒,用户会觉得卡了。”
她走到白板前,拿起笔,写下“状態序列化”几个字,在下面画了一条分界线。左边写“完整状態”,右边写“最小状態”。然后开始列公式:完整状態 = 內存 + 寄存器 + 文件 + 网络连接 + gui状態 + … 最小状態 = 应用標识 + 用户位置 + 核心数据指针 + 差异增量。
“只同步用户位置和核心数据指针,”她喃喃道,“让目標设备从云端重新加载应用,但直接跳到指定位置。但这就要求,应用本身必须支持『状態快照』功能,而且云端必须有实时同步的应用数据……”
这是死循环。要么忍受大延迟传输完整状態,要么要求所有应用按照“巴別塔”的规范重构。前者体验差,后者生態做不到。
实验室的门禁发出“嘀”的一声轻响,门滑开了。林浩走进来,手里拎著一个塑胶袋,里面是几个还冒著热气的包子。“早饭。”他把袋子放在工作檯上,然后走到陈薇身边,看著白板上的公式。
“卡住了?”他问。
“延迟下不去。”陈薇没回头,继续盯著公式,“要么传得多,要么传得快。但用户要的是既多又快。”
林浩拿起一个包子,咬了一口,咀嚼著,眼睛盯著白板。过了一会儿,他说:“你听过『分形压缩』吗?”
陈薇转过头看他。
“一种图像压缩算法,”林浩说,“不存储完整的像素数据,存储生成图像的数学公式。需要显示时,实时计算渲染。虽然计算量大,但数据量极小。状態同步能不能用类似的思路?不传输完整的內存映像,传输生成这个状態的『种子』——用户的操作序列、应用的初始状態、时间的流逝。让目標设备根据『种子』,在本地实时重放,直到追上当前状態。”