六点四十分,闹钟响了。陈峰伸手按掉,没睁眼。他翻了个身,感觉右耳垂有点硌,是枕头压到了那颗小痣。窗帘缝里透进一点光,照在背包旁边的折叠伞上。伞尖有块干掉的水渍,颜色发黄。
他坐起来,脚踩到地上,有点凉。屋里很安静,隔壁也没声音。他想起昨晚几个人坐在长椅上的事。唐果哼歌,老马吹口哨,沈莉捧着杯子不说话,风吹乱了她的头发。他笑了笑,起身去洗漱。
挤上牙膏刷牙,镜子里的人头发乱翘,眼下有点青。他冲掉泡沫,打开水龙头洗脸。水很凉,耳朵一下子收紧。擦脸的时候顺手摸了下右耳垂,痣还在。换衣服,穿上连帽卫衣,拉工装裤拉链时卡了一下,他用力拽了两下才拉上去。背上包,螺丝刀在侧袋晃了一下,发出一点金属声。
出门前看了眼台灯。昨天调亮了一档,今天看着还是暗。他没管,锁门下楼。
巷子已经扫过,落叶没了。长椅也干净了,奶茶杯留下的印子被擦过,边缘发白。他走过时没停,拐弯进了地铁口。
坐两站,换一次车。人不多不少。他靠着车门站,背包贴着背。右手插在卫衣口袋里,指尖碰到手机。脑子里没什么想法,只记得昨晚告诉自己:今天不用加班。车到站,门开了,人流动起来,他也跟着走。打卡机“滴”了一声,八点零七分。
放好包,挂起伞,去接水。塑料杯接满,水有点烫手。回到座位,打开电脑。屏幕亮了,桌面是一张地图截图,是他从江州老城区截下来的。他用红圈标了几个常修水管的楼,说是“故障热力图”,其实是怕自己记不住。
邮箱弹出新邮件,标题加粗又标红:“【紧急】智慧社区服务平台项目启动会纪要(含技术框架说明)”。他点开,附件下载完,双击打开PDF。
第一页写着:微服务架构设计概览。
下面一行:基于Spring Cloud Alibaba构建,使用Nacos作为注册中心……
再下一行:API网关统一鉴权,服务之间用Dubbo调用……
他往下看,很多词都不认识。容器化部署、K8s集群、熔断降级策略、分布式配置管理……他眨眨眼,又眨一下。手指开始敲桌子,哒、哒、哒,越敲越快。
他拿出笔记本,撕下一张纸,写:“微服务 =?”
画箭头,“多个独立程序?”
再画箭头,“怎么通信?”
再画,“和我以前修的单体系统有什么不同?”
抬头看,旁边两个同事在说话:“你打算用Istio做流量管控吗?”
“先不上,太重,等二期。”
“那你API网关准备配几层策略?”
他低头喝水,捏了捏塑料杯,发出一点响。喝了一口,水不烫了,温温的,像现在的脑子。
中午饭是从楼下便利店买的萝卜排骨饭。沈莉没来,没人帮他留窗口。他忘了问她是不是加班。打开饭盒,一块排骨,两块胡萝卜,米饭压得很实。他吃了一口,嚼着,右耳的小痣跟着动。
吃完没扔饭盒,放在桌角。他重新打开PDF,这次一行一行看。看到“服务注册与发现机制”时,用黄色荧光笔划线。翻页,“配置中心动态刷新”,又划。再翻,“链路追踪实现全链路监控”,继续划。划得越来越多,整页都变黄了。
他停下笔,盯着屏幕。文档最后写着:“开发周期:6周,首阶段交付倒计时42天。”
他合上电脑,靠在椅子上,椅子吱呀响了一声。头顶的日光灯嗡嗡响,空调吹下一阵冷风,他缩了缩脖子。
右手伸进背包侧袋,摸出螺丝刀。不是要修东西,就是想拿着。他把螺丝刀从左手换到右手,转了一圈。金属杆很凉,握久了才暖起来。他看着刀柄上的磨损,是去年修三单元水管时蹭的。水泥渣卡进去,刷了三次才洗干净。
然后解锁手机,打开备忘录,新建一条,打字:“新技术学习计划(草拟)”。
输入第一行:“查资料→找教程→试做demo”。
打完就停了,点了保存。屏幕黑下去,映出他的脸,模糊的,眉毛皱着。
抬头看时间:下午一点十七分。阳光斜进来,照在键盘F5键上。这个键他按得最多,用来刷新页面。旁边的空奶茶杯底还有一圈褐色水痕,是昨天喝完没扔的。
他重新开机,打开浏览器,在搜索框里输入:“零基础入门微服务”。
回车。
页面跳出很多结果,有“三天精通”“实战手册”“保姆级教程”。他点第一个,加载中,进度条慢慢走。
窗外,一只麻雀落在空调外机上,跳了两下,飞走了。
办公室有人笑了一声,很快又安静了。
他的手指悬在触控板上,没有马上点。看了眼右下角时间:13:18。
然后移动光标,点开第二个链接,《微服务到底是什么?给非科班程序员的一封信》。
页面打开,第一段写着:“你有没有试过修一台坏掉的冰箱,结果发现其实是整栋楼的电路出了问题?”
他读完这句,呼吸慢了一下。
手指向下划,屏幕滚动。
背包靠在桌腿边,伞还在侧袋,螺丝刀放在笔记本旁边,刀尖朝外。
阳光移到鼠标垫边上,照亮一小块旧布料。
他没动,继续看。