做工业网关以后,我对“网络”这件事的理解变得悲观了一点,也务实了一点。

办公室里的开发环境很容易制造一种错觉:DNS 会工作,时钟大体一致,服务可以重启,云端接口随时可达。到了现场,网线可能松动,证书可能过期,设备仍在发送十年前定义的协议,服务器时间还可能慢几分钟。

边缘计算的价值,不只是把一部分计算从云端搬到现场。它更像一种架构态度:承认现实世界不会一直满足我们的前提。

因此,一个边缘服务至少要认真面对这些问题:

问题 不能只靠什么 更可靠的方向
上游暂时不可达 无限阻塞 本地缓冲、退避重试
进程意外退出 人工重启 守护、状态恢复
设备数据乱序 到达时间 设备时间与序列信息
配置错误 启动后再观察 启动前校验
磁盘逐渐写满 定期人工清理 配额、轮转、告警

这也是为什么边缘系统常常显得“啰嗦”:缓存、重试、幂等、补偿、心跳、健康检查,似乎都没有直接产生业务功能。

可真正的业务功能并不是“成功时上传一次”,而是“在不稳定的环境里,长期维持一个可以解释的结果”。

工程成熟的一部分,就是不再把异常环境当成例外。世界本来就不稳定,系统只是终于承认了这一点。