越来越多的企业选择将IoT设备迁移上云。我们提供企业从自建MQTT集群迁移到阿里云物联网平台的解决方案。
背景信息
随着IoT企业自身业务增长,终端设备规模不断增加,企业自建的MQTT集群不断遇新的挑战:
- 连接稳定性变弱,设备频繁掉线;
- 消息通信时延高,业务响应慢,消费者投诉;
- 服务器需要扩容,硬件投入和运维成本越来越高。
此时,企业设备全面上云,设备连接迁移到安全、稳定、低时延、高可用、免运维的阿里云物联网平台便是非常明智的最佳选择。
下面以电表场景为例,介绍企业从自建MQTT集群迁移到阿里云物联网平台的方案。
系统现状
假设企业有10万终端设备接入自建MQTT集群,业务架构如下图所示。
设备15分钟上报一次业务数据到MQTT集群,实时流转到Kafka中,业务系统从Kafka消费数据,按业务逻辑处理后落库,满足条件的做实时短信推送运维人员。管理人员通过手机App下发配置参数到业务系统,业务系统调用MQTT集群的业务API接口,把配置指令推送到终端设备上。
基于MQTT协议的上行数据和下行指令的业务定义如下:
业务场景 | 通信Topic | 报文Payload |
---|---|---|
设备上报数据 | cdb/data/post |
DE02,10,17,011101010,am024,1d478f |
服务端控制指令 | cdb/cmd/push |
CMD,82923,ad322 |
方案设计
为了减少企业现有系统改造成本和风险,我们设计了如下设备迁移上云方案。不改造业务报文格式,尽量保持云上业务系统稳定,实现低成本,快速迁移设备到物联网平台,减少企业基础设施成本。
方案中,企业IoT设备迁移上云有三个核心变更点:
- 设备端进行OTA升级,修改接入域名为物联网平台的接入点。
- 配置规则引擎,把设备数据流转到服务端订阅AMQP消费组,业务服务器实时接收设备数据。
- 将自建MQTT集群的通信Topic映射为物联网平台的自定义Topic,如下表所示。
原通信Topic | 原报文Payload | 迁移后的自定义Topic | 迁移后的Payload | 权限 | 描述 |
---|---|---|---|---|---|
cdb/data/post |
DE02,10,17,011101010,am024,1d478f |
/${productKey}/${deviceName}/user/data/up |
格式不变,仍为DE02,10,17,011101010,am024,1d478f |
发布 | 设备向云端上报数据 |
cdb/cmd/push |
CMD,82923,ad322 |
/${productKey}/${deviceName}/user/cmd/down |
格式不变,仍为CMD,82923,ad322 |
订阅 | 云端向设备下发指令 |