简介: 使用物联网平台,快速构建一个高性能的共享快递柜业务
1.背景
当我们的设备和物联网平台建立mqtt连接通道后,会根据业务需求传输不同的数据。本次以共享快递柜业务场景讲解topic和payload的设计。
在共享快递柜场景中,我们会涉及到C端用户操作:
- 在App端扫码,操作快递存取,触发后台下发指令到当前机柜,执行相关操作。
- 用户存取完毕,触发订单结算或其他操作
运营商后台交互操作:
- 下行指令
-
- 开关快递柜门
-
- 广告的添加/删除
- 设备数据处理
-
- 用户取走快递的消息的处理,订单结算
-
- 用户寄存的消息的处理,订单结算
-
- 广告播放的记录存储
总体思路如下:
- 根据业务不同划分不同topic,每个topic对应payload结构体。
- 当数据发送到物联网平台,我们通过规则引擎把数据分流到多个mq队列、DB、时序数据库等。
- 不同优先级队列,DB分配不同计算资源,配置降级策略
下图展示了设备数据上行场景的划分和后台系统不同处理方式
下图展示了云端下行控制指令的来源和完整链路
按照以上分析,整理出在这个场景中的Topic和Payload细节参考表格,如下:
分类topic权限payload备注NTP服务/ext/ntp/${pk}/${dn}/request发布{ "deviceSendTime":"1000"}物联网平台提供/ext/ntp/${pk}/${dn}/response订阅{ "deviceSendTime":"1000", "serverRecvTime":"1543475763010", "serverSendTime":"1543475763020"}物联网平台提供定时上报每5分钟/${pk}/${dn}/user/bizheart/post发布QoS=0{ "battery":69, "devices":[0,1,0,0,0,1,0], "net":84}设备上报指令响应/${pk}/${dn}/user/borrow发布QoS=1{ "device":2}用户上报用户开门触发/${pk}/${dn}/user/return发布QoS=1{ "device":2}开门指令用户App触发->Server->IoT->机柜/${pk}/${dn}/user/pop订阅QoS=1{ "device":2}设备上报开门是否响应/${pk}/${dn}/user/borrow发布QoS=1{ "device":2}广告播放播放记录/${pk}/${dn}/user/ad/play发布QoS=1{ "adId":14323}添加广告资源/${pk}/${dn}/user/ad/new订阅QoS=1{ "adId":732124, "uri":"https://ad.com/732124"}删除广告资源/${pk}/${dn}/user/ad/delete订阅QoS=1{ "adId":32546}设备状态变更/as/mqtt/status/${pk}/${dn}{ "status":"online/offline", "productKey":"pk13543", "deviceName":"dn1234", "lastTime":"2018-08-31 15:32:28.195", "clientIp":"123.123.123.123"}物联网平台提供具体实现过程中,业务payload还会id用于实现消息去重逻辑。
至此,我们完成了IoT场景的需求梳理和业务协议设计。
参考信息:企业基于物联网平台最佳业务实现
相关云服务推荐: 1、阿里云物联网平台(企业版实例),万台设备接入低至9.5元/天 2、阿里云物联网无线连接服务,套餐灵活,资费实惠,电信/移动/联通智能选网