公司注册的手续办了两个月。办公场地选在离家不远的一个创意园区里,一栋两层的小楼,门口有一棵桂花树。程司白签租房合同的时候站在那棵树下看了很久,裴衍之问她看什么,她说这棵树秋天会开花,很香。他没有问她怎么知道的,因为他知道——她来看场地的时候就已经在想了。想秋天坐在树下写程式码的时候,风吹过来,桂花落在键盘上,她会停下来把花瓣捡走,然后继续写。她在想这些事情的时候,嘴角会有一点点上扬的弧度。很小,小到如果不是他在认真看,根本不会注意到。但他注意到了。他一直都能注意到。
装修的时候何悦来帮忙。她现在是公司的第三个员工,职位写的是“测试工程师”,但实际上她什么都做——跑测试、写文档、订办公用品、给所有人泡咖啡。陆维安是第四个员工,职位写的是“后端工程师”,但他大部分时间在帮何悦搬东西、装桌椅、调整显示器的高度。何悦说你一个后端工程师整天干体力活像话吗,陆维安说你一个测试工程师整天指挥别人干体力活像话吗。两个人吵了一整个下午,把所有的桌椅都装好了。程司白站在二楼的窗户前面,看著楼下那棵桂花树,听著身后何悦和陆维安的争吵声,觉得这家公司可能撑不过第一年。她笑了。不是嘴角动一下的那种,是真的笑。从眼睛里出来的笑,从那个不再需要压制任何东西的地方出来的笑。
公司成立那天是个晴天。秋天的阳光很好,照在门口那棵桂花树上,照在二楼窗户上,照在新装好的招牌上。招牌是白色的底,黑色的字,很简单,简单得像一段没有多余代码的程式——“共识实验室”。下面有一行小字:“Distributed Systems Lab”。没有口号,没有标语,没有“让世界更美好”之类的话。就是一个名字。一个她想了很久的名字。
何悦在门口挂了一串气球,说是庆祝用的。陆维安说你挂气球干什么,又不是开派对。何悦说公司成立当然要开派对,你懂不懂。陆维安说我不懂,你去问程姐。何悦转头看程司白,程司白说气球挺好的,留著吧。何悦得意地看了陆维安一眼。陆维安说行吧,然后去买了更多的气球。门口挂满了,走廊上也挂满了,连二楼的栏杆上都系了一串。程司白站在一楼大厅里,抬头看著那些气球——红的,黄的,蓝的,绿的,飘在白色的天花板下面,像一群没有固定地址的数据包,在网络里漫游,等待被路由到正确的目的地。她不知道自己的目的地是哪里。她只知道她到了。
何悦拍了一张照片发在群组里,配文是“共识实验室今天正式开张”。唐嘉树在下面回了一句:“恭喜。需要顾问的话找我,收费不高。”何悦说唐总你来我们请你吃饭,唐嘉树说吃饭就不用了,把你们的程式码给我看看就行。何悦说那还是吃饭吧。唐嘉树发了一个笑哭的表情。
下午的时候所有人都走了。何悦和陆维安去采购办公用品,装修师傅来收了尾,快递员送来了最后一批显示器。一楼大厅里只剩两个人。程司白站在窗前,看著门口那棵桂花树。阳光从树叶的缝隙里照下来,在地面上投出一片一片的光斑,像一张被分割了的网。她站在网的边缘,没有走进去。裴衍之从后面走过来,站在她旁边。两个人并排站著,肩膀轻轻挨在一起。隔著两层布料,她能感觉到他的体温。不是那种烫的、灼人的热,是那种温的、恒定的、让人想一直靠著的那种暖。
“裴衍之。”
“嗯。”
“我们从分布式系统,变成分布式人生了。”
她说这句话的时候没有转头,声音很轻,轻到像是在自言自语。但裴衍之听到了。他一直都能听到。他听到了她声音里那个东西——不是感叹,不是庆祝,是一种确认。像一个节点在确认另一个节点的状态——我们从独立运行变成协同工作了。我们的日志会合并,我们的时钟会同步,我们的故障会一起处理。我们不再是一个人的系统了。
“那我们的共识算法,还有效吗?”他问。声音也很轻,轻到像是在问一个他已经知道答案的问题。但他还是想听她说出来。就像一个已经收到ACK的节点,还是会定期发送心跳——不是因为不信任,是因为确认本身就是一种信任。
程司白转头看著他。阳光照在她脸上,把她眼睛里那种稳定的、持续的、不间断的光照得很清楚。那种光从两年前开始,从她说“我留下”的时候开始,从她说“谢谢你”的时候开始,从她在巷子里差一点把那句话说完的时候开始。它一直在。现在它在一家叫“共识实验室”的公司里,在一棵桂花树下,在一个秋天的午后。
“有效。”她说。声音比刚才重了一些,重到像一个被确认了的状态——不需要再证明,不需要再测试,不需要再等待逾时重传。就是一个简单的状态。已连接。“而且,不需要再证明了。”
裴衍之看著她。阳光从树叶的缝隙里照下来,在她脸上投下一片光斑,亮亮的,圆圆的,像一个确认信号。他伸出手,握住了她的手。她的手还是凉的,他的手还是暖的。两年过去了,这个温差没有变过。也许永远不会变。也许这就是他们的协议——一个发送心跳,一个接收确认。一个在凉的频率上,一个在暖的频率上。但通道是开的,数据在传输,共识在维持。不需要加速,不需要优化,不需要提升吞吐量。只需要保持这个频率,不快不慢,每一个滴答都和上一个滴答间隔相同的时间。
“程司白,欢迎来到共识实验室。”他说这句话的时候,嘴角扬起来了。不是那种克制的、理性的、成年人的微笑,是那种从心底里涌上来的、压不住的、想要跟她一起分享的笑。他笑得不好看,眼睛瞇成了一条缝,眼角挤出了细细的纹路,鼻子皱了一下,嘴角歪向一边。但他没有停下来。
程司白看著他笑,她也笑了。两个人站在新公司的门口,手牵著手,对著彼此笑。秋天的阳光照在他们身上,照在白色的招牌上,照在门口那串五颜六色的气球上。风吹过来,桂花树的叶子沙沙地响,有几朵细小的桂花落下来,落在她的头发上,落在他的肩膀上。她没有去拨,他也没有。他们就让那些花落在那里,黄色的,小小的,像一段被写入日志的数据——时间戳是今天,内容是:共识达成,系统正常,一切稳定。
她看著他的眼睛。那双深棕色的眼睛在阳光下很亮,亮得像萤幕上一个稳定的信号——没有波动,没有异常,一切正常。她在那双眼睛里看到了自己的倒影——头发散著,被风吹乱了,肩膀上落著几朵桂花,嘴角上扬著。她在笑。她一直在笑。从两年前的那个电梯里就开始了,只是她当时没有发现。或者发现了,但不敢确认。现在她确认了。确认自己会笑,确认自己值得笑,确认有一个人会让她笑。不需要理由,不需要条件,不需要任何可以被证明的东西。就是一种状态。一种她花了很长时间才敢进入的状态。
“裴衍之。”她说。
“嗯。”
“欢迎回家。”
她说这句话的时候,手指在他掌心里紧了一下。不是用力,是确认——你在,我也在。我们在一个系统里,在同一个时钟下,在同一个共识算法上。我们从分布式系统,变成分布式人生了。人生也是分布式的——没有中心节点,没有全局时钟,没有完美的共识。但你可以选择跟谁连接,选择跟谁同步,选择跟谁一起处理那些故障、那些裂痕、那些不一致的状态。你选择了一个人,不是因为他不会让系统崩溃,是因为崩溃的时候他会跟你一起排查。你选择了一个人,不是因为他不会犯错,是因为他会承认错误然后修复。你选择了一个人,不是因为他永远不会离开,是因为他每一次心跳都在说——我在。你也在。
程司白站在新公司的门口,手被裴衍之握著,肩膀挨著裴衍之的肩膀。阳光很好,桂花很香,风很轻。她不知道这家公司能做多久,不知道产品会不会成功,不知道市场会不会接受。她只知道一件事——不管发生什么故障,有人会和她一起排查。不管出现什么Bug,有人会和她一起修复。不管系统崩溃多少次,有人会和她一起重启。不需要保证,不需要证明,不需要任何可以被验证的依据。就是一种选择。她选择了。在两年前的电梯里,在一年前的咖啡馆里,在今天这棵桂花树下。她选择了连接,选择了同步,选择了成为一个分布式系统里的一个节点。不是独立的,不是孤岛的,不是不需要任何人的。是连接的,是同步的,是愿意交换心跳的。是分布式的。是人生的。
她把头靠在裴衍之的肩膀上。头发蹭著他的脖子,有点痒。他没有躲。他只是微微侧了一下头,让她的头发不会戳到眼睛。两个人的肩膀靠在一起,手臂贴著手臂,手扣著手。阳光从头顶照下来,在两个人身上投下一圈一圈的光晕。那些光晕是金色的,暖的,像一个稳定的信号——系统正常,连接稳定,共识达成。不需要再证明,不需要再测试,不需要再等待逾时重传。就是一个简单的状态。已连接。
程司白闭上眼睛。阳光透过眼皮照进来,金色的,温暖的,像一个心跳信号。滴答,滴答,滴答。她在心里跟著那个节奏数了一会儿,然后不数了。因为她知道,不管她数不数,它都在那里。稳定的,可靠的,不会崩溃的。就像他。一直都在。
就像他们。从三年前就开始了。只是花了很长时间才确认这个事实。现在确认了。写入日志,同步到所有节点,永久储存。时间戳:今天。内容:共识达成。状态:已连接。备注:不需要再证明了。