做工业网关以后,我对“网络”这件事的理解变得悲观了一点,也务实了一点。
办公室里的开发环境很容易制造一种错觉:DNS 会工作,时钟大体一致,服务可以重启,云端接口随时可达。到了现场,网线可能松动,证书可能过期,设备仍在发送十年前定义的协议,服务器时间还可能慢几分钟。
边缘计算的价值,不只是把一部分计算从云端搬到现场。它更像一种架构态度:承认现实世界不会一直满足我们的前提。
因此,一个边缘服务至少要认真面对这些问题:
| 问题 | 不能只靠什么 | 更可靠的方向 |
|---|---|---|
| 上游暂时不可达 | 无限阻塞 | 本地缓冲、退避重试 |
| 进程意外退出 | 人工重启 | 守护、状态恢复 |
| 设备数据乱序 | 到达时间 | 设备时间与序列信息 |
| 配置错误 | 启动后再观察 | 启动前校验 |
| 磁盘逐渐写满 | 定期人工清理 | 配额、轮转、告警 |
这也是为什么边缘系统常常显得“啰嗦”:缓存、重试、幂等、补偿、心跳、健康检查,似乎都没有直接产生业务功能。
可真正的业务功能并不是“成功时上传一次”,而是“在不稳定的环境里,长期维持一个可以解释的结果”。
工程成熟的一部分,就是不再把异常环境当成例外。世界本来就不稳定,系统只是终于承认了这一点。