消息队列遥测传输 (MQTT) 是一种常用的轻量级发布-订阅消息协议,是通过互联网连接物联网 (IoT) 或机器对机器 (M2M) 设备和应用的理想选择。MQTT 设计用于在低带宽或低功耗环境下高效运行,因此是具有大量远程客户端的应用的理想选择。其广泛应用于各行各业,包括消费电子、汽车、运输、制造和医疗保健。
通过 MQTT 连接的设备或应用称为客户端。这些客户端发布和/或订阅特定主题或多个主题上的消息。订阅的客户端接收发布到该主题上的所有消息,从而在多个设备和服务之间实现高效、容错的数据交换。
MQTT 架构的核心是代理。代理是一种服务器,负责跟踪客户端(及其订阅的任何主题)、处理消息以及将这些消息路由到适当的系统。
MQTT 协议的几大关键版本均已成为标准。OASIS 组织负责修订协议,并提供每个版本的完整规范。MQTT 的每个版本都对协议功能集进行扩展,因此了解设备和代理所遵循的 MQTT 版本至关重要。
MQTT 消息有多种类型,每种消息类型都包含符合要求的设备和应用必须遵循的特定格式。MQTT 协议的修订版在格式和消息类型上各不相同。MQTT 协议的每个规范中均可找到消息类型的完整列表。
最常见的三种消息类型是“连接”、“发布”和“订阅”。每条 MQTT 消息都包含标头、有效负载和可选标志。根据消息类型的不同,有效负载的长度也不尽相同。例如,在“发布”消息中,有效负载包含要发送到所有订阅设备的数据,数据字段的长度直接影响消息的大小。默认情况下,MQTT 设备以不安全的方式连接到端口 1883,或启用 SSL/TLS 加密后连接到端口 8883。
智能汽车是 MQTT 实际应用的典范。随着汽车制造商增加新功能,支持从远程诊断和车队管理到燃料支付和娱乐等各种功能,MQTT 已成为联网汽车的通用标准。与 Hypertext Transfer Protocol (HTTP) 协议不同,MQTT 可以保持持续会话,即使汽车进出无信号区或其连接更换基站。MQTT 还支持双向通信,确保汽车和云应用可以更轻松地发送和接收数据,而无需等待对方响应。
HTTP 和 MQTT 都是用于在互联网上传输数据的网络协议。让我们看一下有何区别。
MQTT 因诸多特性而成为物联网设备(物联网中的“物”)与后端系统之间传递信息的理想协议。在此,我们重点介绍四种特性:
MQTT 支持传输控制协议/互联网协议 (TCP/IP) 作为底层传输协议。这一广泛使用的网络协议可确保消息在客户端和代理之间可靠发送。
TCP/IP 成为可靠、高效协议的原因如下:
虽然 TCP/IP 是最常见的协议,但并不是传输 MQTT 消息的唯一选择。MQTT 协议也适用于用户数据报协议 (UDP) 和 WebSockets。
我们很荣幸能够提供以下免费资源,帮助您继续研究 NGINX 如何为基于 MQTT 的物联网系统提供安全性、负载均衡和高可用性。