结论:边缘网关做本地缓存,数据量小、需要按条件补传时用SQLite;只追加、断网时间可预测时用环形文件;需要本地查询和降采样时再上轻量时序库。三者不要混用,选一个并定好容量上限和淘汰策略。
一、缓存要解决什么问题
网络中断、云端不可用或链路拥塞时,采集数据不能丢,恢复后要按顺序补传,并且不能把网关磁盘写满。所以评估三件事:写入吞吐、断网时长上限、补传可控性。
二、三种方案对比
SQLite:单文件、事务可靠,支持按时间、状态字段查询未发送数据,适合每秒几十到几百点的写入。需要开启WAL模式,注意批量写入以减少闪存磨损。
环形文件:顺序追加写入,达到固定大小后覆盖最旧数据,实现最简单、写入最快,但按条件补传和删除已发送数据不方便,需要自己维护读写指针。
轻量时序库:支持压缩、保留策略和本地查询,适合网关需要本地展示或降采样的情况,但占用内存和CPU更多,小型网关要评估资源。
三、关键字段设计
缓存表:自增序号、设备ID、点位ID、采集时间、值、质量码、发送状态、重试次数。序号保证顺序,质量码保留设备原始状态,发送状态用于确认后再删除。
四、容量与淘汰策略
容量=平均每秒点数×单条字节数×最长断网秒数×1.5的余量。写满时的策略要提前定:优先保留报警和状态变化,丢弃高频普通采样;并在日志里记录丢弃区间,云端能标注"数据缺口"。
五、常见坑
先删后确认,导致补传失败就丢数据;用系统时间当序号,时钟回拨后乱序;不限制日志和缓存共用分区,磁盘写满网关死机。
FAQ
问:SD卡网关怎么办?答:降低写入频率,批量落盘,选工业级卡。
问:补传会不会冲垮云端?答:限速补传,实时数据优先。
问:缓存要加密吗?答:含工艺参数时建议做文件系统级保护。
问:如何验证?答:拔网线做断网测试,检查序号连续性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。