华为云计算 云知识 华为云物联网平台设备级消息上下行保序方案
华为云物联网平台设备级消息上下行保序方案

场景说明

华为云设备接入IoTDA服务在满足高可靠、高并发的同时可按需开启设备维度的消息上下行保序功能。本文以MQTT协议为例介绍基于IoTDA的上、下行消息的保序方案。

场景说明

典型如车联网场景中:高速行驶中的车辆会实时上报自身的GPS位置数据(通常1~5秒/条数据),IoT平台接收该数据并转发给云端应用,应用侧根据上报的位置数据绘制实时轨迹地图,车辆端上报的轨迹点依次为:A点——>B点——>C点,在乱序情况下,应用侧接收到的轨迹点可能会为:B点——>A点——>C点,从而导致绘制的轨迹地图与真实轨迹不符。

上行消息保序

在需要上行消息保序的场景,可以参考如下图的方案进行设计:

图1 设计方案
  • 设备-平台:设备侧上报消息时,Qos值设置为1,上报消息A后,等收到消息A的Qos响应后,再依次上报消息B和消息C,从而保证设备与平台侧的消息上行保序。

  • 平台-应用:IoTDA配置数据流转规则为流转到Kafka,当开启IoTDA的消息保序功能后,IoTDA会将同一个设备的消息推送到Kafka的同一个partition,从而实现平台与应用端的转发保序。

  • 应用服务器消费Kafka数据时,同一个设备的消息会分发到同一个消费者,消费者可以按顺序消费设备依次上传上来的数据。

下行消息保序

在需要下行消息保序的场景,可以参考如下图的方案进行设计:

  • 应用平台调用同步命令接口下发命令A。

  • IoTDA收到同步命令A的请求后,会将命令转换为MQTT消息下发给设备,下发请求后平台会阻塞等待,等待设备返回命令A的执行结果。

  • 设备收到命令A的请求,执行完对应操作后,返回命令A的响应。

  • IoTDA收到命令A的响应后返回命令结果给应用侧。
  • 应用平台收到命令A的响应后再下发命令B。

须知:通过 物联网平台 实现消息保序会对整体性能略有影响, IoTDA默认关闭该功能,如有需求请提工单咨询,当前仅企业版支持开启该功能。

上一篇:什么是大规模并行处理 下一篇:Strelka2是什么

华为云

面向未来的智能世界,数字化是企业发展的必由之路。数字化成功的关键是以云原生的思维践行云原生,全数字化、全云化、AI驱动,一切皆服务。

华为云将持续创新,携手客户、合作伙伴和开发者,致力于让云无处不在,让智能无所不及,共建智能世界云底座。