阿里云物联网平台业务Topic规划最佳实践-阿里云开发者社区

开发者社区> 阿里云物联网> 正文

阿里云物联网平台业务Topic规划最佳实践

简介: 以充电宝场景为例,讲解业务Topic设计思路

阿里云物联网平台业务Topic规划最佳实践

当我们基于阿里云物联网平台做业务开发时,最关键的一个问题就是:如何合理的规划业务通信的Topic和Payload?


基本原则:

  • Topic具有明确的操作权限:发布/订阅,避免使用 发布和订阅。
  • Topic和Payload格式一一对应,避免一个Topic对应多个Payload格式。
  • Topic携带明确的上行,下行标识符,比如up,down
  • 同类型业务Topic携带相同标识符,以便分类整理


接下来,我们以共享充电宝业务场景为例,给大家展示Topic规划的最佳实战。

1.业务Topic规划

充电宝场景下业务涉及到充电宝机柜的状态,消费者借还充电宝,广告播放业务等场景,Topic规划如下:

1.1 设备上报场景

  • 设备当前属性状态定时上报,包含电压,电流,卡槽状态,温度
  • 广告播放信息上报,包含当前广告资源id,
  • 异常事件上报,包含充电宝弹出,归还,电压过载,卡槽为空

1.2 云端下行指令场景

  • 弹出充电宝
  • 更新广告信息

1.3 机柜在线状态变化

  • 机柜在线/离线时,IoT平台会触发状态变化Topic


image.png

2.规则引擎配置

通过规则引擎配置,我们实现不同类型业务消息的流转:

2.1 异常事件流转

异常事件流转到函数计算做实时业务处理。
业务处理SQL:

SELECT
*,  --Payload完整内容
deviceName() as deviceName, --设备id
attribute('bizId') as bizId, --商务渠道id
timestamp('yyyy-MM-dd HH:mm:ss') as time --当前时间
topic() as topic --当前Topic
FROM 
"/a1WHdPQzUUn/+/user/up/event/#"  --全部上行事件

数据流转:
image.png

2.2 广告播放统计

广告播放记录存储到表格存储中,供后续离线业务分析
业务处理SQL:

SELECT
*,  --Payload完整内容
deviceName() as deviceName, --设备id
attribute('bizId') as bizId, --商务渠道id
timestamp('yyyy-MM-dd HH:mm:ss') as time --当前时间
FROM 
"/a1WHdPQzUUn/+/user/up/ad/play"  --广告播放消息

数据流转:
image.png

2.3 设备状态流转

广告播放记录存储到表格存储中,供后业务查询
业务处理SQL:

SELECT
*,  --Payload完整内容
deviceName() as deviceName, --设备id
attribute('bizId') as bizId, --商务渠道id
timestamp('yyyy-MM-dd HH:mm:ss') as time --当前时间
FROM 
"/a1WHdPQzUUn/+/user/up/property/post"  --状态属性上报

数据流转:
image.png

2.4 机柜在线状态流转

设备的在线/离线状态流转的Topic格式:

/as/mqtt/status/{productKey}/{deviceName}


payload数据格式:

{
    "status":"online|offline",
    "productKey":"pk13543",
    "deviceName":"dn1234",
    "time":"2018-08-31 15:32:28.205",
    "utcTime":"2018-08-31T07:32:28.205Z",
    "lastTime":"2018-08-31 15:32:28.195",
    "utcLastTime":"2018-08-31T07:32:28.195Z",
    "clientIp":"123.123.123.123"
}

image.png


规则引擎SQL:

SELECT productKey,deviceName,
timestamp() as timestamp ,
status,
time as currentTime ,lastTime,clientIp
FROM "/as/mqtt/status/a1WHdPQzUUn/+"


数据流转:
image.png

【往期回顾】

1.自建MQTT集群迁移阿里云IoT平台
2.IoT时代:WiFi配网技术剖析
3.微信小程序和IoT智能家居实践
4.IoT云端通用数据解析脚本实践

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云物联网
使用钉钉扫一扫加入圈子
+ 订阅

致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。

官方博客
物联网相关产品售前咨询
开发者交流群