一、背景
在物联网领域,随着企业业务规模逐渐扩大,终端设备也越来越多,自建MQTT集群水平扩展和持续运维的成本越来越高,急需寻找一个高可靠、高安全、低成本、免运维的 IoT 企业物联网全托管服务,同时又要保证已经在全国各地铺货的存量设备零改造,实现MQTT服务的迁移。
阿里云物联网平台推出的云网关完美解决了企业规模壮大后遇到的稳定性和可扩展性瓶颈,迁移过程设备端无需升级改造,仅调整原有 MQTT 域名指向阿里云 IoT 企业物联网实例创建的云网关域名即可。
二、整体迁移方案
存量设备从自建MQTT集群迁移到阿里云IoT 整体方案如下:
三、存量设备迁移实战
1. 开通 IoT 企业实例
首先,我们登陆阿里云官网,开通IoT企业物联网实例(独享型)
https://common-buy.aliyun.com/?commodityCode=iot_instc_public_cn#/
2. 创建云网关
在独享型企业物联网实例中,创建云网关。选择 MQTT 协议,根据设备实际情况选择认证方式,配置自建 MQTT 的域名对应 TLS 认证证书和秘钥。
详细操作文档请移步: https://help.aliyun.com/document_detail/433804.html
3. 注册存量设备身份到云网关
创建云网关后,会配套创建一个产品:云网关xxx。
接下来,我们需要把存量设备的身份认证信息批量注册到云网关产品下。
设备批量注册的 CSV 格式如下:
注册成功后,当存量设备发起 MQTT 的CONNECT请求过来,阿里云 IoT 云网关就可以验证设备身份合法性了。
当我们有大量设备时,可以通过API方式注册,解放双手!
4. 规则引擎数据流转
为了实现数据的实时流转,我们需要在云产品流转配置规则引擎,包含数据源、数据目的地、解析器脚本三项。
4.1 创建数据源
创建数据源时,需要把我们设备原有数据上报的Topic登记到数据源中。
4.2 创建数据目的地
数据目的地是指我们用来接收设备上报数据的系统,可以是数据库,消息队列,函数计算等。这里我们选择了AMQP服务器订阅。
4.3 编写解析脚本
在解析器脚本中,我们取出数据源的消息体,直接流转到AMQP消费组。您也可以根据业务需要做数据处理后,再转发到下游云产品。
5. 修改域名,指向云网关
创建云网关后,我们会获得一个网关的URL地址,此时需要登录域名服务商管理后台,修改自建MQTT接入域名跳转到云网关URL,这样存量设备的连接都会流转到阿里云IoT的云网关,自建MQTT集群就可以下线了。
6. 设备成功连接到阿里云 IoT
原有 MQTT 域名调整生效后,我们观察到设备成功连接到阿里云IoT物联网平台,显示为在线,在已订阅Topic列表可以看到设备订阅的Topic。
日志服务里,我们也可以观察到设备online的日志。
7. 设备上报数据到阿里云 IoT
当设备有业务上报数据后,会按规则引擎配置实时流转到下游系统。完整日志记录如下:
我们也可以通过消息轨迹,可视化查看数据流转链路。
在服务端订阅的消费组,查看消息消费速率,消息堆积情况,消费者列表等信息。
8. 云端下发控制指令到设备
通过阿里云 IoT 企业物联网实例的 Pub 接口,我们可以给指定设备下发控制指令。https://help.aliyun.com/document_detail/69793.htm
Pub 接口调用后,在日志服务里可以查看我们给设备下发控制指令的日志。
我们也可以通过消息轨迹,可视化的查看数据流转链路。
至此,我们完成了存量设备从自建 MQTT 集群迁移到阿里云 IoT 全托管的企业物联网平台,不惧业务规模增长,享有99.99%的服务质量保障,终于可以安稳地睡个好觉了!