MQTT(Message Queuing Telemetry Transport)即消息队列遥测传输协议,它是一个专门针对物联网开发的轻量级传输协议,旨在为位于不稳定的网络环境中的低算能、低带宽的边缘物联网设备提供可靠的网络服务。MQTT协议针对低带宽、低计算能力的网络设备做了特殊的优化,使得其能适应物联网数据传输场景。
核心特点
- 轻量高效:MQTT 协议占用资源少,非常适合低功耗设备。
- 发布/订阅模式:
- 采用发布/订阅模型,使得消息生产者与消费者不需要直接建立连接,从而实现了解耦。
- 每条 MQTT 消息都包含一个主题(Topic),客户端根据兴趣订阅不同的主题。
- QoS支持:提供三种服务质量等级(Quality of Service, QoS),允许用户根据需求选择可靠程度不同的消息传递方式:
- QoS 0:最多一次交付(不保证传送)。
- QoS 1:至少一次交付(确保消息至少到达一次,但可能重复)。
- QoS 2:仅一次交付(确保消息只到达一次)。
- 持续会话:客户端和服务器之间的会话可以是持久的,即使客户端暂时离线,也能接收到来自服务器的消息。
- 遗嘱消息:当客户端异常断开时,可以通过设置遗嘱消息通知其他客户端。
- 适应不可靠网络:在不稳定的网络环境中表现良好。
- 安全支持:与 TLS 和常见身份验证协议兼容,确保数据安全。
工作原理
- 核心组成:
- MQTT 客户端:可以是发布者(Publisher)或订阅者(Subscriber)。客户端通过 TCP/IP 协议栈连接到代理(Broker)。
- MQTT 代理(Broker):作为中间人负责转发消息给合适的接收方,并维护主题订阅关系。
- 消息分发:
- 客户端向代理发布消息,其他客户端订阅特定主题以接收消息。
- 代理维护一个订阅者列表,并通过此列表将消息发送给相关的客户端。
- 缓冲机制:MQTT 代理可以为断开连接的客户端缓冲消息,确保即使在网络不可靠的情况下也能实现消息的可靠传输。
版本说明
- MQTT 3.1.1:
- 广泛采用的标准,许多现有的 IoT 设备和服务基于此版本开发。
- 功能成熟且稳定,适合传统应用场景。
- MQTT 5:
- 引入了许多高级特性,例如用户属性、响应主题、增强认证等。
- 提高了协议的灵活性和效率,改进了错误处理和可扩展性。
- 对于新的 IoT 部署,强烈建议使用 MQTT 5,因为其增强功能更注重可靠性和云原生的可扩展性。
常见的 MQTT 软件或平台
- HiveMQ:
- 企业级 MQTT Broker,提供可靠的消息传输和大规模 IoT 应用支持。
- EMQ:
- 开源 MQTT Broker,支持高吞吐量和低延迟,适合大规模 IoT 设备连接。
- Mosquitto:
- 轻量级开源 MQTT Broker,适合小型 IoT 项目或嵌入式设备。
- Bevywise:
- 提供 MQTT Broker 和 IoT 平台,支持设备通信与数据分析。
- AWS IoT Core:
- 亚马逊提供的全托管云服务,支持 MQTT 协议,特别适合需要快速部署并具有全球访问需求的应用。
- Azure IoT Hub:
- 微软提供的类似服务,强调安全性和企业级功能。
企业选择 MQTT 的原因
- 轻量高效:MQTT 协议占用资源少,非常适合低功耗设备。
- 双向通信:支持设备与云端之间的双向消息传递。
- 高可扩展性:能够扩展到数百万台设备的连接。
- 可靠消息传递:通过三种不同的 QoS(服务质量)级别保证消息的可靠传输。
- 适应不可靠网络:在高延迟或不稳定的网络环境中表现优异。
- 安全支持:与 TLS 和常见身份验证协议兼容,确保数据安全。
- 社区活跃度高:文档丰富,易于集成,适合各种规模的项目。
应用场景
由于其高效性和适应性,MQTT 适用于各种需要低功耗、低带宽和高效率的环境,尤其是在 IoT 领域,包括但不限于以下场景:
- 智能家居:如智能灯泡、恒温器、安防系统等。
- 工业自动化:如传感器监控、生产线控制等。
- 车联网:如车辆状态监控、车载信息娱乐系统等。
- 智慧城市:如环境监测、交通管理等。
- 医疗健康:如远程患者监控、可穿戴设备等。
总结
MQTT 是一个理想的解决方案,特别是在处理大量设备间需要可靠、有效沟通的情况下。随着物联网的发展,MQTT 的应用越来越广泛。无论是传统 IoT 场景还是新兴领域(如边缘计算、智能家居、智能城市等),MQTT 凭借其轻量级、高效、灵活的特点,成为设备间通信的核心协议之一。对于新的 IoT 部署,强烈建议使用 MQTT 5,以充分利用其增强功能和更高的可靠性。
参考资料:
https://zhuanlan.zhihu.com/p/720784310/