物联网边缘计算提供断网续传服务。当本地断网或数据上传云端后超过15秒未接收到回复,上传云端的数据会在本地进行持久化。网络恢复后,历史数据将重新上传。使用断网续传功能,需要在物联网平台上配置消息路由,同时您也可以自定义边缘端持久化设置。
背景信息
- 子设备和边缘端保持连接状态,边缘端和云端为断网状态。
- 子设备需要上报数据。
- 您需要为消息配置消息路由,且必须将消息目标设置为IoT Hub,服务级别设置为1(即QoS =1)。详细信息,请参见本文下方物联网平台配置消息路由。
物联网平台配置消息路由
边缘端的消息可以有多个来源, 例如设备、函数计算、流数据分析等。物联网边缘计算支持为每个消息来源配置独立的消息路由。若希望某个来源的消息被本地持久化、支持断网续传,则您需要为该消息配置消息路由,且必须设置消息目标为IoT Hub,设置服务级别为1(即QoS =1)。
本文以操作示例驱动文档内容为例,说明如何配置断网续传。
边缘端持久化配置项
边缘端持久化涉及文件存储目录、节点个数和节点存储空间三个配置项。
当整个持久化文件占用存储空间 > 阈值,最久的数据持久化节点将会被删除。
默认配置:
配置项 | 默认配置 |
文件存储目录
| /linkedge/run/history_record |
节点最大个数
| 10个 |
节点最大存储空间
| 104857600 (100 MB) |
自定义配置:
配置项 | 操作 |
获取文件存储目录 |
|
设置文件存储目录 |
|
获取节点个数 |
|
设置节点个数 |
|
获取节点最大存储空间 |
|
设置节点最大存储空间 |
|
功能验证
以下使用示例驱动中的光照传感器为例,验证断网续传功能。
该实例的消息路由目标已设置为IoT Hub,服务级别已设置为1;边缘端持久化配置项使用默认配置。
- 查看历史数据空间占用。查看当前持久化文件占用空间,数据结构会占用一部分磁盘空间。说明 持久化文件目录空间
!=0
并不意味着有历史数据存在。#du /linkedge/run/history_record/ -d 0 -h 28.0K /linkedge/run/history_record/
- 仿真网络异常状态。拔掉网线,间隔几秒时间执行命令,可以看到持久化文件目录空间占用持续递增。
#du /linkedge/run/history_record/ -d 0 -h 28.0K /linkedge/run/history_record/ #du /linkedge/run/history_record/ -d 0 -h 56.0K /linkedge/run/history_record/ #du /linkedge/run/history_record/ -d 0 -h 92.0K /linkedge/run/history_record/
- 恢复网络。重新插上网线,网络恢复后,登录控制台查看光照传感器运行状态页面, 检查断网期间是否有数据丢失。
- 登录边缘计算控制台。
- 在左侧导航栏中,单击边缘实例。
- 在之前创建的实例右侧单击查看。本示例中,查看LinkIoTEdge_Node实例。
- 选择设备与驱动页面,单击目标驱动,查看该驱动下之前创建的子设备。本示例中,查看LightSensor设备。
- 在设备详情页,选择
,打开实时刷新,查看设备上报的最新属性数据。
- 单击查看数据,可以看到该属性的历史数据。您可以根据时间戳判断断网期间是否有数据。本示例中,断网期间的数据,也上传到了云端。
常见问题
- 断网续传会对磁盘IO有影响吗?
答:有影响。断网期间Link IoT Edge会对上云数据进行本地持久化操作,对磁盘IO的具体影响,视消息量大小而定。
- 网络恢复后,在控制台查看发现断网期间有数据未上报?
答:目前对历史数据上报限流为10条数据/秒。如果边缘端有大量的历史数据等待上报,完成这一动作会花费较长的时间。
- 如何自定义持久化文件存储路径及最大存储空间?
答:可参考本文上方边缘端持久化配置项内容。
- 断网期间,数据持久化文件占用空间达到设定的阈值,新的数据会保存吗?
答:会的。当历史数据持久化文件占用空间达到阈值,最久的历史数据会被删除。
- 如何查看断网续传模块日志? 答: 执行如下命令,查看断网续传模块日志。
cd /linkedge/run/logger/message-router/
tail -f log.INFO