演示开始后的前七分钟,一切正常。
丁卓先接入云监控测试告警,又从本地测试机登记一次版本发布。大屏上的时间线按顺序出现两条记录,嘉禾业务人员随后认领事件,在“责任去向”里指定复核人。
周衡没有用预先生成的漂亮报告。他让采购临时选择一条事件,现场导出。报告首页显示影响、接手人与处理状态,技术附件保留来源和时间,尚未复核的事项单独列在最后。
一名采购人员问:“如果我们今天不点复核,它会不会为了完成演示自动关闭?”
“不会。报告会一直写未复核,直到有权限的人处理或明确接受风险。”
对方刚在问题清单里打完勾,右上角的连接状态便开始闪动。
连接标志变灰的同时,大屏上的事件列表停止刷新。
丁卓先看自己的电脑,又看会议室墙边的网络面板。
“不是刻度云服务挂了。现场有线、无线都断了。”
嘉禾采购下意识看向周衡:“刚才还好好的,演示能继续吗?”
“云端页面不能继续。”周衡说。
他没有把断网说成刻度云预先设计的惊喜,也没有让丁卓切到手机热点,假装场地网络一直正常。
演示原本分成两部分:本地代理收集测试环境的告警和变更,再通过网络送到刻度云;云端把不同来源的记录排成事件时间线,并供用户接手、复核和导出报告。
现在网络断开,本地代理仍在运行,云端却收不到新内容。远程通知、多人协作和在线报告都不可用。
“能看到本地发生了什么吗?”罗致远问。
“能看代理自己的缓存状态,不能把它说成完整云端服务。”
周衡把投影切到测试机上的本地状态页。页面很简单,只显示代理是否运行、最后一次成功连接时间、未发送事件数量和本地磁盘占用。
断网后的第一分钟,待发送数量从零涨到二十七。
丁卓按原定演示脚本启动三类测试数据。一类模拟服务器响应变慢,一类模拟版本发布,一类模拟本地进程重启。事件仍然由测试程序产生,没有接入嘉禾真实生产系统。
本地代理为每条记录保存来源时间、接收顺序和唯一编号,写入自己的缓存文件。它不需要外网才能知道本机收到了什么,却无法确认云端是否已经接受,也无法让会议室外的人及时看到。
采购问:“如果现在真是生产事故,你们会不会完全不报警?”
“跨网络的云端告警会延迟。”周衡说,“客户若配置本地通知,可以在现场收到;没有配置,就只能等网络恢复。这个版本不能绕过断掉的通信线路。”
“那跟免费平台有什么区别?”
“单看云端是否可访问,没区别。网络断了,浏览器都打不开。区别只在本地代理是否保留断网期间的证据,恢复以后能不能按原顺序补回。”
周衡请技术人员直接检查本地文件。刚才断网后发生的事件仍在增加,编号连续,时间清楚。采购已经站起身,走到投影边看那列不断向前的数字。
会议室里有人打开大型云平台的免费故障看板,同样停在加载页面。没有人因此嘲笑它做得差,现场网络到外部的出口断开,任何云端页面都不该凭空出现。
两点十一分,待发送记录超过两百条。
本地状态页仍然能打开,但周衡让丁卓停止连续灌入,先查看缓存文件是否正常轮转。磁盘空间足够,旧文件没有被新记录覆盖,代理重启后也能从上一个已确认位置继续。
为了验证这一点,罗致远临时加了一项测试。
“把代理停一次。断网、进程也停,看记录会不会乱。”
丁卓没有直接结束进程。他先把当前待发送数量写进演示记录,经现场确认后正常停止代理,再过十秒重新启动。
重启后的数量与停止前一致。代理没有把尚未收到云端确认的记录当成已完成,也没有从头重复生成另一批编号。
周衡提醒:“这是正常停止重启。机器突然断电还要看磁盘是否来得及落盘,不能用这一项代替断电测试。”
嘉禾技术人员把“断电恢复另行验证”写进问题清单。
两点十六分,物业在群里回复:楼层网络设备升级时一条上联配置没有恢复,正在回退,预计十分钟内完成。