作者:亦炎

跟着 5G 时代的降临,万物互联的伟大构想正在成为实际。联网的物联网设备 在 2021 年现已达到了 120 亿,在未来两年,仅智能水电气表就将超过 10 亿。在如此大的物联网需求下,海量的设备接入和设备管理对网络带宽、通信协议以及渠道服务架构都带来了很大应战。怎么做好以 MQTT 为代表的物联网协议功能测验,也就显得尤为重要。那么,咱们该怎么做好 MQTT 的功能测验呢?

什么是 MQTT 协议

MQTT 是根据 TCP/IP 协议栈构建的异步通信音讯协议,是一种轻量级的发布、订阅信息传输协议。可在不可靠的网络环境中进行扩展,适用于设备硬件存储空间或网络带宽有限的场景。运用 MQTT 协议,音讯发送者与接纳者不受时刻和空间的约束。

对于物联网协议来说,有必要针对性地处理物联网设备通信的几个关键问题:其网络环境杂乱而不可靠、其内存和闪存容量小、其处理器能力有限。MQTT 协议凭仗简略易实现、支撑 QoS、报文小等特色,占有了物联网协议的半壁河山。

MQTT 的发布订阅形式

发布订阅形式差异于传统的客户端-服务器形式,它使发送音讯的客户端(发布者)与接纳音讯的客户端(订阅者)分离,发布者与订阅者不需要树立直接联络。咱们既能够让多个发布者向一个订阅者发布音讯,也能够让多个订阅者一起接纳一个发布者的音讯,它的精华在于由一个被称为署理的中间角色(或称为 MQTT Broker)担任一切音讯路由和分发的作业。传统的客户端-服务器形式能够实现相似的作用,可是无法做到像发布订阅形式这样简洁和高雅。

发布订阅形式的优点在于发布者与订阅者的解耦,这种解耦表现在以下两个方面:

空间解耦 : 订阅者与发布者不需要树立直接衔接,新的订阅者想要参加网络时不需要修正发布者的行为。

• 时刻解耦:订阅者和发布者不需要一起在线,即使不存在订阅者也不影响发布者发布音讯。

如何发起 MQTT 亿级连接和千万消息吞吐性能测试

为什么要做 MQTT 功能测验

MQTT 功能测验首要协助咱们做到如下内容:

1. 摸清 MQTT 核心指标

• 不同网络环境下,音讯端到端的时延 • MQTT Broker 一起坚持的最大衔接数 • MQTT 收发音讯的 TPS

2. 辅助 MQTT Broker 选型

物联网行业里可选的 MQTT Broker 不乏其人,除了经典的 Mosquitto 和 AWS、Azure,百度云、阿里云、IBM 等几个供给物联网 MQTT 接入服务的产品外,可用于商业出产的 MQTT Broker 还有多款。

可是每一款 MQTT Broker 的系统功能与适用场景都不尽相同。例如,EMQ 单机功能较高,单机支撑百万级并发,集群支撑千万级并发,优势在于高并发衔接与高吞吐音讯的服务能力;HiveMQ 单机功能相对较差,有一定高并发衔接与高吞吐音讯的服务能力。

经过 MQTT 功能测验,咱们能够更加精准的选择合适的 MQTT Broker。

业界一般怎么做 MQTT 功能测验?

MQTT 功能测验的难点在于能够一起建议并坚持海量的衔接。

目前最常见的 MQTT 功能测验方法,是根据 JMeter 的 MQTT-Xmeter 插件实现的。该插件的底层原理就是每个线程都模拟一个 MQTT Client,向 MQTT Broker 发送衔接恳求。但是 JMeter 的线程模型(一个并发就是线程)决定了,想要建议海量的衔接恳求,施压机就有必要创立同等数量的线程,不仅造成资源的严峻糟蹋,还约束了单个施压机能够建议的总衔接恳求数。阿里云的功能测验 PTS 允许单个线程建议并坚持最多 100 个,单台施压机最大 5 万个,单次压测最大 1 亿个 MQTT 衔接数。

运用 PTS 能够协助用户轻松建议千万乃至亿级的 MQTT 衔接,节约大量时刻成本和机器成本。

怎么运用 PTS 建议 MQTT 亿级衔接和千万音讯吞吐功能测验

运用过程

1、创立场景。咱们在 PTS 操控台的【压测中心】->【创立场景】中创立 MQTT 压测场景;

如何发起 MQTT 亿级连接和千万消息吞吐性能测试

2、场景装备。PTS 支撑树立衔接、发布音讯、订阅音讯和关闭衔接四种测验节点。用户若仅需测验 Broker 支撑的最大衔接数,能够只创立树立衔接节点。

对于阿里云的 MQTT 实例,用户只需要翻开签名鉴权开关,填入 AccessKey ID、AccessKey Secret 和实例 ID 即可,PTS 会动态生成用户名和密码。PTS 支撑指定单并发衔接数,以及均匀递加、阶梯递加和固定压力三种流量模型。用户能够经过调整压测中并发数,来操控 MQTT 衔接数的增长速率。

场景装备示例:1 万个 MQTT 衔接作为 pub 客户端发送音讯,每个 pub 客户端每秒发送 1 条 QoS0 音讯;99 万个 MQTT 衔接作为 sub 客户端接纳音讯,每个 sub 客户端每秒接纳 1 条 QoS0 音讯。因此,总的音讯发布吞吐率为每秒 10000,总的音讯接纳吞吐率达到每秒 100 万。

如何发起 MQTT 亿级连接和千万消息吞吐性能测试
如何发起 MQTT 亿级连接和千万消息吞吐性能测试

总结

本文阐述了:

1、什么是 MQTT 协议

2、MQTT 功能测验必要性

3、运用 PTS 做 MQTT 功能测验的优势

4、怎么运用 PTS 快速建议 MQTT 功能测验

一起,PTS 全新售卖方法来袭,根底版价格直降 50%!百万并发价格只需 6200!更有新用户 0.99 体验版、VPC 压测专属版,欢迎我们选购!

如何发起 MQTT 亿级连接和千万消息吞吐性能测试

发布云原生技能最新资讯、汇集云原生技能最全内容,定期举办云原生活动、直播,阿里产品及用户最佳实践发布。与你并肩探究云原生技能点滴,共享你需要的云原生内容。

重视【阿里巴巴云原生】公众号,获取更多云原生实时资讯!