首页 第17章

第17章

周四早上七点,陈渡被闹钟震醒。手机屏幕上跳着一条未读消息——凌晨三点十二分发的。
“半夜跨境数据跑了一遍。美东时间的订单混在UTC里,时区偏移归零。新沙箱没问题。”
方旭发的。后面跟了一个竖大拇指的表情。应该是系统自带的。方旭这种人不会发表情。
陈渡下床。左脚踩在地板上,凉意窜上来。他走到门口。地垫上照例放着一个塑料袋。今天的包子换了馅——牛肉圆葱。豆浆还是热的。纸条压在塑料袋底下。
“周三试运行数据我看完了。积压深度零点零三。误报率零。预热成功率百分之百。继续保持。”——L
他把纸条叠了两折塞进裤兜。裤兜里已经有了昨天的纸条。还有前天的。还有大前天的。纸条越攒越多,快赶上一本便签了。
八点整到嘉和。旋转门进去,保安老刘在前台擦鱼缸。鱼缸是新的。之前那个空的,现在多了三条金鱼。红色那尾最大,追着另外两条跑。
“昨天买的,”老刘拿抹布擦着玻璃,“郭总批的。说前台太空了。”
陈渡看了一眼鱼缸。三条金鱼在LED灯底下转圈,水泡从过滤嘴里咕噜咕噜往外冒。
电梯到十六楼。贺明已经在了,眼镜推到头顶上,手里端着的咖啡洒了一半在键盘上。拿纸巾擦,越擦越花。
“陈哥!星云那边今早发了个紧急通知。试运行数据同步凌晨三点那批,有一条跨境订单没通过审计——时区偏移零点三秒。”他把屏幕转过来,“零点三秒,不是十三小时。是零点三秒。”
“零点三秒在容差范围内。”
“对。但星云那边的审计系统报了红色告警。不是**。是红色。”贺明把眼镜戴回去,“余小舟已经在查了。”
陈渡往余小舟工位走。余小舟没像平时那样趴在桌上补觉。他坐得笔直,眼睛盯着屏幕上的日志。降噪耳机挂在脖子上。
“什么情况。”
“红色告警。触发条件是‘时间戳偏移超过一毫秒且持续时间超过一百毫秒’。这条数据偏移了零点三秒——三百毫秒。触发阈值了。”余小舟切到审计系统的配置文件,“阈值是谁设的。”
冯工从后端组过来,手里端着车仔面。咖喱酱的味道飘在走廊里。
“星云那边设的。他们在审计系统里单独加了一条规则。时间戳偏移阈值一毫秒——国标是五毫秒。他们自己加到了一毫秒。”他把面碗放在余小舟桌上,“这是金融合规的极高标准。不是通用的。”
“谁加的规则。”
“赵工。”方旭在企业微信里回了一条消息。很快。像是守在手机旁边。“上周五联调通过后,赵工在审计系统里加了一条自定义规则。他说要拿蜂巢的转换中间件做极限测试。一毫秒的阈值是按央行去年新出的《金融数据时间戳规范》征求意见稿设的。这个稿还没正式发布。赵工想提前测。”
“零点三秒远超一毫秒。他测出什么了。”
“测出转换中间件在处理美东夏令时和UTC的交替边界时,有一个缓存刷新延迟。不是中间件的问题。是操作系统的时钟同步服务在整点校准的时候产生了零点三秒的抖动。”方旭打字速度很快,“赵工今早发了邮件。邮件标题是‘转换中间件极限测试报告’。结论是——”
他发过来一张截图。赵工的邮件最后一段:“蜂巢转换中间件在标准场景下精度稳定在零点三毫秒以内。在极端边界条件下(夏令时交替+整点时钟校准),出现零点三秒抖动。抖动源为操作系统时钟同步服务,非代码逻辑缺陷。建议嘉和与星云双方在试运行结束后,协同升级底层时钟服务。”
“他没说中间件有问题。”
“没说。他说的是操作系统的问题。然后抄送了周经理、郭远明、还有——蜂巢的公开邮箱。”方旭发了一个擦汗的表情,“那个公开邮箱是林鹤的。”
张恒从走廊那边过来。手里端着美式。热的。杯壁上凝着一层水珠。他看着方旭的截图,沉默了片刻。
“赵工在帮林鹤填坑。”
“不是填坑。”陈渡把手机放在桌上,“是做压力测试。他把阈值压到一毫秒,不是为了找茬。是为了知道边界在哪。知道边界之后,蜂巢的文档里可以加一句话——‘极端条件下偏移不超过零点三秒’。这个结论比‘精度稳定’更有说服力。”
“他不是对手。他是合作者。”
“从联调那天起就是了。”
上午九点半。郭远明在十七楼小会议室开了试运行数据评审会。星云那边线上接入。周经理的画面**还是那面白墙。赵工坐在他旁边,面前摊着打印出来的极限测试报告。方旭在最右边,摄像头这次没歪,但人看起来困得不行——眼睛底下的黑眼圈比余小舟还重。
“红色告警的原因已经查清了。”赵工推了推眼镜,“不是中间件问题。是我加的极限阈值触发的。操作系统的时钟抖动导致零点三秒偏移。跟蜂巢代码无关。”
周经理在旁边没说话。手指在桌上敲了两下。
“你加的阈值。你测的边界。你出的报告。”郭远明靠在椅背上,“这套流程下来,星云内部不需要审批吗。”
“需要。我昨天下午提的申请。周经理批的。”赵工把报告翻到最后一页,“审批意见在这里。”
屏幕上投出审批单。周经理的签名。审批意见一栏写着:“同意进行极限测试。风险由测试组承担。”
“周经理知道阈值是一毫秒?”郭远明看向视频画面里的周经理。
“知道。”周经理开口了。声音有点干,“赵工跟我解释过。央行新规范征求意见稿里的极值就是一毫秒。我想在试运行阶段提前摸底。结果——摸到了零点三秒的抖动。”
“结果不满意?”
“恰恰相反。”周经理把领带松了一点,“零点三秒在央行新规里算合格。征求意见稿虽然没正式发布,但内部评审的标准是‘极端条件下不超过一秒’。零点三秒远低于那个值。”
会议室里安静了片刻。
“所以这次红色告警。是星云用还没发布的新规,提前给蜂巢做了一次极限测试。”老周摘下眼镜擦了擦,“测试结果——合格。”
“不止合格。”赵工把报告翻到结论页,“时钟抖动的触发概率是万分之三。只在夏令时交替的那一分钟内出现。其余时间——精度稳定在零点三毫秒。我测了十年金融IT,没见过哪个开源中间件能在极限条件下只偏移零点三秒。”
郭远明看向陈渡。“这个结论,蜂巢那边知道吗。”
“知道。”陈渡把今早林鹤的回复投到屏幕上。回复时间:早上六点四十二分。标题:“关于极限测试结果的记录”。
正文很短:“赵工的极限测试报告收到。时钟抖动零点三秒,已复现。原因:Linux内核的时钟同步服务在整点校准时的正常抖动。解决方案:在转换中间件增加时钟校准预补偿逻辑。下个版本加。报告结论已收录进蜂巢Wiki——‘极端条件’章节。”
会议室里没人说话。
“他今早复现了赵工的测试结果。”郭远明慢慢开口,“花了多久。”
“赵工凌晨三点发的报告。林鹤六点四十二分回复。中间三个多小时。测试环境他手头没有星云的审计系统,要自己搭一套类似的。再加上复现时钟抖动的边界条件——夏令时交替的那一分钟,一天只有一次。他等了至少一个小时。”陈渡把页面关掉,“这三个多小时里,他做完了复现、定位、补丁方案、Wiki更新。然后回复了一封一百字的邮件。”
赵工在视频那头摘下了眼镜。镜片上有一层雾气。他拿纸巾擦了。
“我做了十年极限测试。第一次有人把我的报告从头到尾读完了,还复现了。”他把眼镜戴回去,“回我的时候他管我叫什么——‘赵工’。不是‘赵先生’。不是‘赵某’。是‘赵工’。技术圈子里的叫法。”
“他以前在云舟就这风格。”郭远明端起桌上已经凉透的咖啡喝了一口,“叫他觉得靠谱的人——名加‘工’。不靠谱的——‘喂’。”
方旭在角落里咳了一声。大概是被茶呛到了。
下午两点,试运行数据评审会结束。结论:红色告警属极限测试触发,不影响试运行正常推进。赵工的测试报告被郭远明要求归档进嘉和的合规文档。余小舟把时钟补偿逻辑列入了下一轮更新的任务清单。
陈渡回到工位。手机震了。林鹤的消息。
“赵工的极限测试报告你看了完整版没。”
“看了摘要。”
“去看附录C。”
陈渡打开赵工的邮件。翻到附录C。标题是“测试环境搭建过程记录”。第一段写着:“参考蜂巢Wiki第十四页——‘如何在本机搭建极限测试环境’。步骤清晰。脚本可以直接复制。从搭环境到跑完第一轮测试,耗时四十分钟。其中三十分钟在等系统时钟走到夏令时交替那一刻。”
附录最后一行:“感谢蜂巢作者在Wiki里提供的时钟模拟脚本。省去等待真实夏令时的麻烦。——一个不想熬夜等时钟的人。”
“他用了你的时钟模拟脚本。”
“用了。那个脚本是上周写的。郭远明提了时区偏移Issue之后我加的。本来是为了方便自己测试。没想到第一个用的居然是星云的人。”林鹤停顿了一秒,“他测试的时候我在睡觉。醒来看到报告,照着附录C重新搭了一遍环境。发现他改了一个参数。”
“什么参数。”
“时钟校准的预补偿等待时间。默认值是五毫秒。他改成了零点五毫秒。改完之后抖动的触发频率从万分之三降到了十万分之一。这个改动我没写进文档。他自己试出来的。”
“你准备怎么回。”
“今晚更新Wiki。在新版里把自定义补偿等待时间的配置项开放出来。不是固定值。让用户自己调。备注里写——‘感谢星云科技赵工提供的优化建议’。”
陈渡嘴角动了一下。“你以前从不感谢别人。”
“以前不用。现在——他值得。”
晚上七点。食堂的刷卡机显示余额:4.50元。陈渡打了一份炒饭。阿姨多扣了一勺鸡蛋。没多收钱。他端着盘子坐下。
手机震了。张恒在企业微信里转发了一封邮件。发件人是郭远明。收件人是全体项目组成员。邮件标题:“试运行第二天数据评审结论”。
正文第一段:“红色告警已查明原因。非系统缺陷。极限测试结论正向。试运行按原计划继续。”
第二段:“赵工的极限测试报告,技术价值极高。建议嘉和与星云双方将该报告作为数据中台运维手册的附录。”
第三段很短:“项目组辛苦了。周末不用加班。休息。”
张恒在后面跟了一条消息。“郭远明用邮件说了‘不用加班’。来嘉和三年第一次。他在星云的时候是加班狂。变了。”
“不是变了。是在蜂巢的Issue区学会了怎么写‘辛苦了’三个字。”陈渡把炒饭吃完,擦了嘴。
晚上九点。出租屋。他把皮鞋脱在门口。左脚鞋底磨得差不多了。右脚后跟的位置开了一丝线。他没在意。光脚踩在地板上,走进卫生间洗了把脸。水龙头还在滴。水滴敲在瓷砖上。
桌上的胃药旁边多了一个塑料袋。一盒新的牙膏。薄荷味。标签贴了张纸条。
“王姨说你的牙膏用完了。顺便带的。——L”
他把纸条叠好。塞进裤兜。现在裤兜里有六张纸条了。叠在一起,厚度快赶上手机。
手机震了。
林鹤的消息。“赵工晚上在Issue区发了个帖子。标题是‘时钟补偿的优化方案’。他把预补偿等待时间改成了零点二毫秒。比之前更激进。说测出来抖动可以降到百万分之一。我回了两个字——‘太大’。他说确实。零点二毫秒会导致同步延迟累积。建议回到零点五。我说好。”
“你们俩在Issue区开了个技术讨论帖。”
“开了。方旭也进去了。说零点五毫秒对跨境支付够用。对高频交易不够。赵工回他——‘高频交易的时钟精度应该用硬件同步,不是软件补丁。你的业务场景选错方案了。’方旭回了一个哭脸。”
陈渡靠在床头。天花板的水渍还在。今晚月光很亮,水渍的轮廓看得清楚——像一张摊开的地图。
“方旭现在敢跟赵工讨论技术了。”
“敢了。他欠的账还到差不多了。不心虚了。”
“你还让他还什么。”
“不用还了。”林鹤打了几个字。又**。又重新打。“蜂巢的监控告警模块下周上线。我让他负责Issue区的用户支持。算是贡献。没有加班费。”
“你给他开了权限。”
“开了。贡献者那一栏。排在赵工后面。署名——方旭。前鼎象数据。”
陈渡盯着那行字。前鼎象数据。方旭关了公司之后,鼎象这个名字跟着他变成了一个包袱。现在林鹤把它挂在了蜂巢的贡献者列表上。不是包袱。是履历。
“他看了没。”
“看了。截图给我。说手又抖了。但不是紧张。是——反正不是紧张。”
晚上十一点。陈渡躺在床上。眼睛快闭上的时候手机震了一下。
林鹤发了张截图。蜂巢的贡献者列表。之前只有一行“Lin He”。现在多了两行。一行是“Xingyun_Zhao - 极限测试与时钟优化”。一行是“Fang Xu - 用户支持”。后面还空着五个位置。
截图下面一行字。
“五个位置。等剩下那五个人回来。”
陈渡把手机扣在枕头旁边。对面五零二的门响了一声。轻的。像是有人出门倒垃圾。然后脚步声回到屋里。关了门。锁舌咔嗒一声落槽。
他闭上眼睛。窗外起了风。窗帘鼓起一块,落回去。桌上的牙膏纸盒被风吹得滚了一下,停在纸条旁边。
早上六点四十分。手机震了。不是消息。是蜂巢的GitHu*通知。一个新版本发布了。版本号v1.1.2。更新日志第一行:“新增时钟校准预补偿配置项(感谢星云科技赵工的建议与测试)。”
第二行:“贡献者列表更新。”
陈渡把手机放下。光脚踩在地板上。走到门口。门垫上的塑料袋已经放好了。今天的包子换了馅——白菜猪肉。纸条上的字比平时工整一些。
“v1.1.2发了。赵工是第一个Fork的人。他说要把时钟补偿配置项移植到星云自研的审计系统里。我同意了。”
下面多写了一行。
“包子趁热吃。今天周五。试运行还剩八天。”

==>戳我阅读全本<===

设置
手机
书页