孙铭走到雷云身后,弯腰看屏幕。
密密麻麻的日志在终端里刷屏,红色的报错信息一行接一行。
“竞态条件具体出在哪?”
雷云用手指划着屏幕上的代码块。“令牌分的锁机制有问题。我之前用的是乐观锁,单线程跑没事,一上并就互相踩。两万台设备同时握手的时候,令牌池会被重复分配,然后整个认证链就卡死了。”
“换悲观锁呢?”
“换了就慢。两万台设备排队认证,全部完成得四十个小时以上。这不等于告诉对方——兄弟们别急,排着队来攻击?”
孙铭盯着屏幕看了几秒,脑子里翻着以前在mIT做分布式系统作业的记忆。
“分片。”
雷云愣了一下。
“把令牌池按地区分片。华东、华南、华北、北美、欧洲,每个分片独立维护自己的令牌序列。分片之间不存在竞争关系,单个分片内的设备数量降到两三千台,乐观锁扛得住。”
雷云的手指悬在键盘上方,愣了两秒,然后疯了一样开始敲代码。
“卧槽——这能行。”
“能行你就快改。”
“分片策略我得重新设计路由规则,设备注册的时候要带上地区标签——”
“华耀的设备管理平台里本来就有地区字段。直接读。”
雷云头也不抬。“你怎么连这个都知道?”
“我投了华耀那么多钱,总部的技术架构文档我全翻过。”
雷云嘴里嘟囔了一句什么,大概是骂他变态,但手上的度快了一倍。
孙铭在旁边的椅子上坐下来。
“改完之后重新跑压力测试,你估算一下时间。”
“改代码一个半小时。压力测试跑一轮——如果不出新bug——一个小时。加起来两个半到三个小时。”
“三个小时。加上全量推送的六到八个小时。”
孙铭掰着手指头算,“布会我定在十二小时后。刚好卡在推送完成之后。”
“你就不怕卡不上?”
“卡不上就往后推一小时。但最多推一小时。”
“为什么?”
“因为我已经给艾琳·海因斯打过电话了。告诉了她十个小时后开布会。如果我推迟太久,他们会以为我在虚张声势。”
雷云停了一下手。
“你提前告诉对方你要干什么?”
“对。”
“你脑子没问题吧?”
“我就是要让他们紧张。紧张了才会犯错。”
雷云不再说话了,闷头写代码。
孙铭靠在椅背上,掏出手机翻了翻消息。
秦柔来了布会的筹备进度。直播平台已经全部对接完毕,中英文两套主持稿正在写。她问了一个问题——
【布会上需要露脸的人有谁?你一个人讲,还是拉人一起?】
孙铭想了想,回了一条。
【我一个人讲技术部分。但我需要一个嘉宾做背书。帮我联系一下Bruneteier。】