在物联网中,MQTT(消息队列遥测传输)和 HTTP(超文本传输协议)是最广泛使用的两种协议。虽然它们都是应用层协议,但它们的使用场景和性能特性却大相径庭。
在这期文章中,我们将从架构、应用场景、性能、效率和安全性等方面比较 MQTT 和 HTTP,帮助您决定哪种协议最适合您的物联网项目。
MQTT 代表 Message Queuing Telemetry Transfer,与 HTTP 相比,MQTT 的工作方式有很大的不同。
首先,传统的 MQTT 数据是以二进制数据发送的,而不是文本编码。然而,这并不是一个严格的规定,MQTT 消息的所有部分都可以进行字符串编码(我们将这样做,因为这允许使用控制字节)。
MQTT 与 HTTP 之间的第二个主要区别在于,MQTT 既可以是客户端也可以是服务器,可以相互发送消息。虽然客户端在建立连接后会向 MQTT 服务器发起连接,但客户端和服务器保持连接状态,而不是使用 GET/POST 请求,MQTT 客户端使用发布/订阅模型。
详细可以参考往期内容:
MQTT Control Packets(MQTT控制包)了解吗?
HTTP
HTTP 代表超文本传输协议,是驱动互联网和所有网站的主要消息协议。只需查看大多数网站的 URL,你就会看到 http 或 https。这种消息协议,如其名称所示,使用明文发送命令和数据,使用包含请求类型、内容类型和浏览器信息的头部消息,而主要内容信息也以文本形式描述。使用文本发送数据意味着要发送的任何数字都将以文本形式发送,二进制值从未发送。
该协议是一种所谓的“客户端-服务器”协议。因此,HTTP 协议允许将数据“POST”到服务器(在服务器上存储数据),而任何其他客户端也可以请求这些数据(从服务器传输数据到客户端)。
例如,如果要发送数字 21,它将以两个美国标准信息交换代码(ASCII)字符 2 和 1 的形式发送,而不是二进制值 10101。这是因为 ASCII 表中还包括换行和回车等命令,这些命令是用于终止行尾所需的。
HTTP 是如何工作的?就消息本身而言,HTTP 是一个客户端驱动的系统,客户端发起连接并向服务器发送命令。然后,服务器处理请求、发送响应并关闭连接。一旦连接关闭,客户端和服务器将无法再进行通信,服务器只能在被请求时进行响应。
例如:客户端发起连接并发送请求的具体步骤:
我们针对协议的不同特性整理如下系列表格所示:
一、协议特性对比
二、协议应用场景对比
三、协议安全特性对比
对于企业级物联网部署,两种协议都强烈推荐使用 TLS。
四、性能和效率特性对比
五、开发者考虑因素对比
结论
下述情况建议选择 MQTT :
而下面这些情况宜选择 HTTP:
当然MQTT 的创建就是为了更轻量化的通信,非常适用于物联网。HTTP 仍然对于基于互联网的应用程序是必不可少的。对于许多项目来说,同时使用两者(例如,使用 MQTT 进行数据传输,使用 HTTP 进行配置)可以兼得两者之长。
参考链接:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有