新闻中心

PRESS CENTER 纵横智控
你的位置: 首页 新闻 技术应用
纵横智控

断点续传自动化应用:确保数据完整性的时序数据库

2024-11-07 11:00:34 阅读: 发布人:纵横智控

在工业自动化和物联网应用场景中,设备需要持续不断地将采集数据上传到云端服务器。但在实际应用中,可能会遇到服务器连接中断或者断点的情况,导致数据丢失。为了确保数据的完整性,本案例设计了一个相较缓存队列更稳定的断点续传方案,采用时序数据库作为数据暂存区,确保在网络中断时数据不会因为断电而丢失,并能够在网络恢复后自动将这些数据补发到服务器。

注:使用时序数据库需要插SD卡。完整讲解见:断点续传(时序数据库)

断点续传自动化应用:确保数据完整性的时序数据库

需求分析

网络正常时,采集数据直接上传至云端

网络异常时,采集数据存入本地时序数据库

网络恢复后,自动从时序数据库中补发数据至云端

流程如下:

断点续传自动化应用:确保数据完整性的时序数据库

流程实现

(一)网络状态监测流程

状态变化节点,监测服务器连接状态的变化,确保能够及时感知连接的建立或断开。

条件判断节点,根据接收到的状态信号进行逻辑判断,决定后续的操作。

函数计算节点,连接成功:设置全局变量 conncetFlag为 true。设置消息对象的 delay 属性为 3000 毫秒,这样触发节点会每隔 3 秒输出一次,并从数据库中读取一条数据。连接失败:设置全局变量 conncetFlag为 false。设置消息对象的 reset 属性为任意非空值,这将导致触发节点停止从数据库中读取数据。

(二)数据库创建

在时序数据库中,数据的时间戳和顺序是关键。因此,数据库的设计需要考虑高效的写入和查询能力。选择合适的时序数据库(如InfluxDB、TimescaleDB等),并根据应用需求配置索引和分区策略,以优化数据存储和检索效率。

(三)数据采集转发流程

注入节点触发,modbus读节点读数据。

modbus读节点,采集modbus从机数据。

函数计算节点,将采集的modbus从机数据封装需要的数据格式,这里为JSON格式。根据全局变量conncetFlag的值决定数据的流向:输出口1:conncetFlag 为 true(表示网络连接正常),则将数据正常上传至服务器。输出口2: conncetFlag 为 false(表示网络连接失败),则将数据存入数据库。

(四)数据补发处理流程

读写入文件节点(记录时间)

初次运行:初次运行,读文件触发若不存在该文件,读节点会抛出异常,捕获到异常,获取当前系统时间作为运行时间写入文件。

数据补传:数据补传是以数据库中大于运行时间的数据为起始,获取数据库数据,每次获取第一条。获取完成后,将该条数据的时间往后偏移一点复写入文件,即可保证补传读取下一条数据时,不会重复读取。依次往复触发节点根据条件执行后续部分流程。

函数节点

构造读数据:构造SQL语句查询大于存储时间的数据库数据,每次触发只读一条。

解析封装:输出口1输出本次补传的数据。输出口2输出本次补传数据的时间加上200毫秒,该时间将被记入写文件并用于确定下一条数据补传的时间点。

总结

断点续传技术在时序数据库中的应用,为数据完整性和系统的稳定运行提供了有力保障。通过数据分片、增量传输等方法,断点续传在多种场景中展现出强大的实用性和适用性。随着技术的不断进步,断点续传将进一步推动时序数据库在各类实时数据应用中的普及,为数据的可靠性和完整性提供强有力的保障。

热门产品