IoT 物联网平台如何实现 100万/秒 消息广播?-阿里云开发者社区

开发者社区> 《IoT物联网技术》> 正文

IoT 物联网平台如何实现 100万/秒 消息广播?

简介: IoT 物联网平台如何实现 100万/秒 消息广播?
+关注继续查看

传送门:5个视频讲解,30个场景案例汇总

image.png

在物联网场景中,常常会有全量设备消息广播诉求。如何把消息瞬间推送到海量在线设备上?


阿里云IoT企业物联网实例为开发者提供了 PubBroadcast 接口,可以在秒级触达100万在线设备,使得企业面在面对高并发需求时无后顾之忧。


创建4个设备和广播内容

我们以收款音箱场景消息广播为例,演示全量设备广播功能。

设备和广播消息体

image.png

全量设备广播接口PubBroadcast

image.png

设备端收到的消息报文示例:

Topic示例:
/sys/g6palBDnzyT/dk004/broadcast/request/1386995865331441413

Payload示例:
{
    "volume"80,
    "mode"4
}


全量广播开发实战

设备端开发

IoT物联网平台默认提供全量广播Topic,设备端无需预先订阅,即可接收到云端的广播消息。

设备端应用程序代码(Node.js 示例):

// node broadcast-device.js
const mqtt = require('aliyun-iot-mqtt');

//1.设备身份三元组+区域
const options = require("./iot-device-config.json");

// 2. 建立MQTT连接
const client = mqtt.getAliyunIotMqttClient(options);

//系统全量广播 Topic 前缀
const allBroadcastTopic = `/sys/${options.productKey}/${options.deviceName}/broadcast/request`;

client.on('message'function(topicmessage) {
    //过滤全量广播消息
    if (topic.indexOf(allBroadcastTopic> -1) {

        console.log("设备收到全量广播消息:")
        console.log("\ttopic=" + topic)
        console.log("\tmessage=" + message)
    }
})


iot-device-config.json 设备配置参数:

{
    productKey"g6palBDnzyT",
    deviceName"dk004",
    deviceSecret"424ed56661980c604255507d1b81464e",
    host"iot-060a08kg.mqtt.iothub.aliyuncs.com"
}


云端后台开发

云端业务系统调用IoT物联网实例的PubBroadcast接口,即可发送广播消息,触达全量在线设备。调用代码示例(Node.js):

// node broadcast.js
const co = require('co');

const RPCClient = require('@alicloud/pop-core').RPCClient;

const options = {
    accessKey"自己的accessKey",
    accessKeySecret"自己的accessKeySecret"
};

//1.创建client
const client = new RPCClient({
    accessKeyIdoptions.accessKey,
    secretAccessKeyoptions.accessKeySecret,
    endpoint'https://iot.cn-shanghai.aliyuncs.com',
    apiVersion'2018-01-20'
});

// 2.构造iot API
// 这里是POP API的Action
const action = 'PubBroadcast';
// 广播内容
const payload = {
    volume80,
    mode4
};
// 完整入参 params
const params = {
    ProductKey"g6palBDnzyT",
    IotInstanceId"iot-064a04kg",
    MessageContentnew Buffer(JSON.stringify(payload)).toString("base64")
};

co(function*() {
    //3.发起全量广播PubBroadcast API调用
    try {
        const response = yield client.request('PubBroadcast'params);

        console.log("PubBroadcast 成功 =====>"JSON.stringify(response));
    } catch (err) {
        console.log("PubBroadcast 失败 =====>"JSON.stringify(err));
    }
});


全量广播联调

业务服务器调用 PubBroadcast API 日志:image.png

image.png

4个设备端收到的广播消息日志:

Topic的消息id相同,deviceName不同

image.png


往期推荐


1、39张传感器工作原理GIF图汇总

2、智能手持测温枪开发实践

3、JMeter压测MQTT服务性能实战

4、IoT物联网平台日志服务详解

5、自建MQTT集群迁移阿里云IoT实践

6、工业Modbus电力104规约接入IoT平台

7、设备免烧录三元组,即时注册解决方案

8、IoT+TSDB+Quick BI 搭建楼宇环境监控

9、JS全栈开发,构建智能家居小程序


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

相关文章
RocketMQ系列(五)广播与延迟消息
今天要给大家介绍RocketMQ中的两个功能,一个是“广播”,这个功能是比较基础的,几乎所有的mq产品都是支持这个功能的;另外一个是“延迟消费”,这个应该算是RocketMQ的特色功能之一了吧。
459 0
打造更适合IoT场景的消息队列实践
随着接触客户越来越多,也越来越颠覆了我对“传统队列”(kafka、rocketmq、rabbitmq...)的看法。 当然本文不是说“传统队列”做得不好, 这些队列系统经过多年打磨,在高性能、海量堆积、消息可靠性等诸多方面都已经做得非常极致了,都做得非常的优秀。 但今天我觉得大家在设计方案时动不动任何一个异步、系统解耦等就来选用队列,然后线上又频繁出一些问题,这些问题的背后我们得看看到底什么场景适合、什么场景过渡使用了、有没有更好解法, 尤其今天IoT领域场景复杂,既有面向自身SAAS业务又要承担多租户PAAS平台化模式,面临更多的队列方面问题,拿来和大家讨论分享。
2596 0
【直播预告】:Java Spring Boot开发实战系列课程【第11讲】:消息中间件 RabbitMQ 与api源码解析
mq消息中间件在高并发系统架构中扮演关键角色,阿里双11高并发使用了mq技术。本次课程一起学习最新Java Spring Boot 2.0、RabbitMQ中间件的最新特性与实战应用,同样会分析核心api源码。
1282 0
C++中消息自动派发之一 About JSON
1. 闲序   游戏服务器之间通信大多采用异步消息通信。而消息打包常用格式有:google protobuff,facebook thrift, 千千万万种自定义二进制格式,和JSON。前三种都是二进制格式,针对C++开发者都是非常方便的,效率和包大小(数据冗余度)也比较理想。
868 0
IoT应用端消息处理的两种策略---基于MQTT通道
在物联网领域多年的开发和架构经历,使我接触到了不同领域的物联网解决方案,比如智能家居中对空调,热水器,洗衣机,室灯等家用设备的单品控制,比如智能办公中通过人脸识别对闸机和门禁进行开关控制,再比如智能建筑中的对高空吊栏危险系数的实时预警等,均反映了物联网正在以前所未有的速度不断的影响着我们的衣食住行,不断的改变人们的生活,使我们的生活更高效,更便捷,更安全。
1260 0
C++中消息自动派发之三 About JSON Encode
  《C++ 消息自动派发》系列上篇介绍了IDL解析器,生成的C++代码只支持JSON转C++ struct。 经过新的重构,这次增加了对C++ struct 转JSON的支持。IDL解析器自动为C++ struct生成两个方法。
849 0
你值得拥有的IoT 物联网平台开发实用技巧(一)
你值得拥有的IoT 物联网平台开发实用技巧(一)
4329 0
阿里云物联网平台基于iOS Link kit SDK做OTA升级
第一次在平台写文章,如有错误,请多多包涵
220 0
通过微信小程序体验阿里云IoT物联网平台
通过微信小程序体验阿里云IoT物联网平台
5435 0
+关注
《IoT物联网技术》
公众号《IoT物联网技术》相关阿里云IoT文章同步
87
文章
7
问答
来源圈子
更多
致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载