HTTP是最流行和广泛使用的协议。但在过去的几年里,MQTT迅速崭露头角。在物联网开发中,开发人员如何选择?
设计与消息
MQTT是以数据为中心,而HTTP是以文档为中心。HTTP是客户端-服务器计算的请求-响应协议,不总是针对移动设备进行了优化。MQTT在这方面的主要优势在于轻量级(MQTT将数据传输为字节数组)和发布/订阅模型,这使其非常适用于资源受限的设备,并有助于节省电池电量。
此外,发布/订阅模型使客户端相互独立存在,并增强了整个系统的可靠性。当一个客户端出现故障时,整个系统仍然可以正常工作。
速度与传输
根据在3G网络中的测量,MQTT的吞吐量比HTTP快93倍。
此外,与HTTP相比,MQTT协议确保高交付保证。有3种不同的服务质量级别:
- 至多一次:保证尽最大努力交付。
- 至少一次:保证至少传递一次消息。但消息也可能传递多次。
- 正好一次:保证每条消息只由对等方接收一次。
MQTT还为用户提供了遗嘱和保留消息的选项。第一种意味着如果客户端意外断开连接,所有订阅的客户端都会从代理收到一条消息。保留消息意味着新订阅的客户端将立即获得状态更新。
HTTP协议没有这些能力。
复杂性与消息大小
MQTT规范相当简短。对于开发人员来说,只有CONNECT、PUBLISH、SUBSCRIBE、UNSUBSCRIBE和DISCONNECT这几种类型是重要的。而HTTP规范要长得多。
MQTT具有非常短的消息头和最小的数据包消息大小,仅为2字节。HTTP协议使用文本消息格式,允许构建冗长的头部和消息。这有助于消除问题,因为它可以被人类阅读,但同时对于资源受限的设备来说是不必要的。
结论
MQTT协议易于使用。当未来解决方案的响应时间、吞吐量、较低的电池和带宽使用率位于首位时,这是至关重要的。在连接不稳定的情况下,它也非常完美。
HTTP是有价值且可扩展的。但在涉及物联网开发时,MQTT更加合适。
您必须登录才能发表评论。