共计 2009 个字符,预计需要花费 6 分钟才能阅读完成。
简介:MQTT 协定凭借简略易实现、反对 QoS、报文小等特点,占据了物联网协定的半壁江山。
作者:亦炎
随着 5G 时代的降临,万物互联的平凡构想正在成为事实。联网的物联网设施 在 2021 年曾经达到了 120 亿,在将来两年,仅智能水电气表就将超过 10 亿。在如此大的物联网需要下,海量的设施接入和设施治理对网络带宽、通信协议以及平台服务架构都带来了很大挑战。如何做好以 MQTT 为代表的物联网协定性能测试,也就显得尤为重要。那么,咱们该如何做好 MQTT 的性能测试呢?
什么是 MQTT 协定
MQTT 是基于 TCP/IP 协定栈构建的异步通信音讯协定,是一种轻量级的公布、订阅信息传输协定。可在不牢靠的网络环境中进行扩大,实用于设施硬件存储空间或网络带宽无限的场景。应用 MQTT 协定,音讯发送者与接收者不受工夫和空间的限度。
对于物联网协定来说,必须针对性地解决物联网设施通信的几个关键问题:其网络环境简单而不牢靠、其内存和闪存容量小、其处理器能力无限。MQTT 协定凭借简略易实现、反对 QoS、报文小等特点,占据了物联网协定的半壁江山。
MQTT 的公布订阅模式
公布订阅模式区别于传统的客户端 - 服务器模式,它使发送音讯的客户端(发布者)与接管音讯的客户端(订阅者)拆散,发布者与订阅者不须要建设间接分割。咱们既能够让多个发布者向一个订阅者公布音讯,也能够让多个订阅者同时接管一个发布者的音讯,它的精华在于由一个被称为代理的两头角色(或称为 MQTT Broker)负责所有音讯路由和散发的工作。传统的客户端 - 服务器模式能够实现相似的成果,然而无奈做到像公布订阅模式这样简洁和优雅。
公布订阅模式的长处在于发布者与订阅者的解耦,这种解耦体现在以下两个方面:
- 空间解耦:订阅者与发布者不须要建设间接连贯,新的订阅者想要退出网络时不须要批改发布者的行为。
- 工夫解耦:订阅者和发布者不须要同时在线,即使不存在订阅者也不影响发布者公布音讯。
为什么要做 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 压测场景;
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 万。
总结
本文论述了:
1、什么是 MQTT 协定
2、MQTT 性能测试必要性
3、应用 PTS 做 MQTT 性能测试的劣势
4、如何应用 PTS 疾速发动 MQTT 性能测试
原文链接
本文为阿里云原创内容,未经容许不得转载。