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