周二早上七点五十分,我推开公司后门那间临时改造的会议室,里面已经坐满了人。技术组的几个骨干眼睛都是红的,桌上散着空咖啡罐和没吃完的包子。林冉在调试投影,看到我进来,点了下头。
“高校实验室那边刚发消息,MQTT测试环境八点准时上线。”她说。
我拉开椅子坐下,“等会直接进压力测试,把昨天那个断连问题复现出来。别猜原因,看日志。”
八点整,系统开始跑模拟流量。两千个虚拟用户同时下单,前五分钟一切正常。到了第六分钟,警报响了——又有三十七笔交易中断,提示“会话超时”。
“又是网络波动触发认证失败。”安全组的小王盯着屏幕,“服务器一抖,客户端就掉线。”
我站起来走到白板前,拿笔画了个简单的流程图。“我们现在依赖的是实时在线验证。一旦网络不稳,整个交易链就断了。这不是代码问题,是架构逻辑太理想化。”
屋里没人说话。
“改方案。”我说,“加本地缓存。交易发起时先存在设备本地,不管服务器在不在,先把动作记下来。等网络恢复,自动同步。补一条规则:每笔交易带唯一ID,防止重复提交。”
林冉问:“要是用户断网时间太长,数据积压怎么办?”
“设置最长保留七十二小时。超过时间自动提醒用户手动处理。我们不能假设网络永远通,但可以保证操作不丢。”
张工点头,“这个能做。今天就能改逻辑。”
“那就现在改。”我说,“我要下午三点前看到新版本跑通最小闭环。”
他们动手改代码,我去了一趟工厂。供应商的老李正在检查刚运来的三台原型柜主板。
“你们上次用的那个散热片不行。”他说,“铝材太薄,长时间运行扛不住。”
“换。”我说,“换成你们给军工项目做的那种复合散热模组。外壳也改,我要铝镁合金一体成型,再加微型风扇。”
他皱眉:“成本要涨百分之二十。”
“涨就涨。”我说,“我不是要一台样机好看,是要一千台能在夏天连续跑三个月不出事。你告诉我,改完能不能过72小时满载测试?”
他想了想,“能。”
“那就按这个标准来。明天我要看到新样机。”
回到公司已经是晚上九点。林冉给我看了新架构的测试结果。本地缓存加上唯一ID校验,断网情况下交易记录全部保留,恢复后成功同步,没有漏单也没有重复。
“支付通道那边呢?”我问。
“还在测。”她说,“刚才发现一个问题,高并发时签名生成有重复。”