节点影子
功能概述
节点影子可以看做边缘设备数据在云端的映射。通过节点影子,可以利用端云同步通道,将云端节点数据或属性同步至边缘设设备。边缘设备上的应用可以通过相关接口获取来自云端的数据,同时也可以利用接口对数据进行更新,而后同步至云端。简而言之,节点影子可以作为一种在端云同步用户自定义数据的方式。
同步的数据格式为键值对,且数据类型均为字符串。数据内容不限,例如当需要同步配置文件,可以指定属性名称为配置文件名,期望值为文件内容。设备端即可以接收来自云端同步的配置文件,使用配置文件对应用进行热更新。
具体使用方式如下,在云端节点页面点击节点影子标签,显示该节点现有属性为空,在边缘设备对节点影子对应3种操作。首先是边缘应用订阅系统 MQTT broker 相关主题,接收来自云端的属性更新消息。第二种是通过OpenAPI获取云端该节点的所有属性。第三种是通过OpenAPI更新属性,修改的属性会作为上报值发送至云端展示。
接收节点影子数据增量更新消息
为模拟应用订阅系统 MQTT broker,先将系统broker配置进行调整。注意,这里仅仅是为了便于操作,实际应用订阅主题推荐使用TLS连接系统 MQTT broker,下文会有介绍。
点击编辑,添加属性。
确定后,即可在属性列表查看相关属性。
而后会通过端云协同将所有属性同步至边缘设备,且以增量更新的方式通知。具体为通过MQTT订阅相关主题,接收事件消息,消息内容即为需要更新的属性键值对。
注意,云端会一直下发期望值,边缘侧会一直收到消息,直到边缘侧上报值和云端一样,云端才会停止发送消息。
通常是边缘运行应用订阅系统MQTT broker,在这里对节点系统broker应用配置进行修改,便于订阅主题。
点击节点应用部署,并进入系统broker应用(名称中有broker)进行配置修改,点击应用配置。
添加端口配置,配置1883->1883端口映射,并点击确定。
然后,切换到数据卷标签,并进入conf配置卷(名称中有conf)进行配置修改。
点击编辑,添加listeners。
内容为
listeners:
- address: 'tcp://0.0.0.0:1883'
session:
sysTopics:
- $link
- $baetyl
logger:
level: debug
encoding: console
改好后点击保存,并确定。
打开MQTT.Box,配置设备host。
确认已连接至设备MQTT broker,并订阅 $baetyl/node/props 主题
、
之后会接收到来自该主题的消息,内容为云端节点属性。
实际场景
边缘应用订阅系统MQTT broker时通常是使用双向TLS方式,确保数据安全传输。通过baetyl官方sdk提供接口可以直接以安全方式连接。另外也可以指定连接地址为ssl://baetyl-broker.baetyl-edge-system:50010,并配置连接证书。通过BIE部署的应用在/var/lib/baetyl/system/certs下有连接所需要的证书。
通过OpenAPI获取节点影子属性
通过OpenAPI需要通过证书以HTTPS方式连接至server。通过BIE部署的应用在/var/lib/baetyl/system/certs路径下有所需的ca.pem证书,使用HTTPS协议连接地址为https://baetyl-core.baetyl-edge-system。获取节点影子属性的接口为 https://baetyl-core.baetyl-edge-system/node/properties
这里以模拟方式,跳过对服务端证书校验,且由于baetyl-core应用配置了端口映射30050->443
,使用如下命令:
curl -k https://localhost:30050/node/properties
上述desire为云端期望数据。report为空,表示没有上报数据。
通过OpenAPI更新节点影子属性
类似于获取节点影子属性,使用证书以HTTPS协议可以对节点影子数据进行更新,接口同样为 https://baetyl-core.baetyl-edge-system/node/properties
同样以模拟方式,跳过对服务端证书校验,执行如下命令:
curl -k -X PUT https://localhost:30050/node/properties -d '{"conf.yml":"value"}'
指定需要更新的属性,接口会返回当前节点影子所有属性。也可以再次调用获取节点影子属性的api查看。
curl -k https://localhost:30050/node/properties
同时,在云端的节点影子可以看到边缘设备对属性的更新。
注意事项 节点影子功能依赖于系统应用baetyl-broker,如对系统应用baetyl-broker的配置更改影响了baetyl-broker服务的正常运行,将可能导致节点影子功能不可用。