MQTT是什么?
MQTT代表MQ遥测传输。它是一种发布/订阅、极其简单和轻量级的消息传递协议,专为受限设备和低带宽、高延迟或不可靠的网络设计。设计原则是尽量减少网络带宽和设备资源要求,同时也试图确保可靠性和某种程度的交付保证。这些原则也使得协议成为新兴的“机器对机器”(M2M)或“物联网”世界的理想协议,也适用于带宽和电池电量非常昂贵的移动应用程序。
MQTT是由谁发明的吗?
MQTT是由IBM的Andy Stanford-Clark博士和Arcom(现在的Eurotech)的Arlen Nipper在1999年发明的。
MQTT在哪里使用?
自1999年以来,MQTT已在各种行业中广泛实现。Projects页面上列出了一些更有趣的示例。
MQTT是标准吗?
v5.0和v3.1.1现在是OASIS标准(ISO也批准了v3.1.1)。
MQTT如何与SCADA协议和MQIsdp相关?
“SCADA协议”和“MQ Integrator SCADA设备协议”(MQIsdp)都是现在称为MQ遥测传输(MQTT)的旧名称。该协议也被称为“WebSphere MQTT”(WMQTT),尽管这个名称也不再被使用。
有标准端口供MQTT使用吗?
是的。IANA为MQTT保留了TCP/IP端口1883。还注册了TCP/IP端口8883,用于在SSL上使用MQTT。
MQTT支持安全性吗?
可以通过协议V3.1中的MQTT包传递用户名和密码。可以使用SSL处理跨网络的加密,而不依赖于MQTT协议本身(值得注意的是,SSL不是最轻的协议,而且确实增加了大量的网络开销)。通过对发送和接收的数据进行加密的应用程序可以增加额外的安全性,但这不是协议内置的内容,以保持简单和轻量级。
对几个不同的MQTT代理进行了非常基本的性能比较,并很快想要分享我的见解。请注意,这些基准测试只是很肤浅的。我的目的不是进行深入的评估,而是大致了解他们的表现。
测试设置
- 为了在发布场景中执行负载测试,我使用 takanorig/mqtt-bench,这是用Go编写的MQTT基准测试工具。
- 所有测试都使用选项-count 10000、-clients 25和-size 4096运行,这意味着模拟25个并发MQTT客户机,每个客户机发送10,000条大小为4千字节的消息。
- 负载测试工具和相应的代理都在Ubuntu 18.04的6核、12线程、3.6 Ghz的机器上本地运行。
- 除非另有说明,否则代理是用默认配置启动的。
测试的Brokers
下面是对Broker的测试。
结果
这些是我得到的结果。越高越好。