三种实现
- 内存队列:写入快、读取快,实现最简单。问题是掉电即丢,且容量受限于设备内存。
- 本地时序库:支持按时间范围查询与聚合,压缩率高。代价是引入数据库进程,对存储寿命与资源占用都有额外要求。
- 文件日志 + 索引:按时间分片写入追加日志,旁挂一个轻量索引文件。写入路径短、掉电安全性好,恢复时按分片顺序读取。
怎么选
| 实现 | 掉电安全 | 适合的数据量 | 恢复速度 |
|---|---|---|---|
| 内存队列 | 否 | 小,分钟级缓存 | 快 |
| 本地时序库 | 是 | 中,天级缓存 | 中 |
| 文件日志 + 索引 | 是 | 大,周级缓存 | 中 |
我们的选择
Autonet 边缘侧最终选择了文件日志 + 索引,原因是它在掉电安全、容量与实现复杂度之间最平衡。内存队列只保留为一级缓冲,用来吸收写入抖动。
cache/
2026-03-27/00.seg # 追加写入的原始数据
2026-03-27/00.idx # 旁挂索引:时间范围 -> 偏移
为什么补传顺序很重要
按分片顺序补传,可以让上层看到的数据始终时间有序。如果并发补传多个分片,即使一个字节都没丢,曲线也会来回跳变,反而比缺失更难排查。