黑客|为什么在物联网应用中使用MQTT而不是HTTP?有何不同?

黑客|为什么在物联网应用中使用MQTT而不是HTTP?有何不同?

文章图片


在这篇文章中 , 大家将了解MQTT协议 , 以及为什么在许多物联网应用中使用它 。

MQTT协议最初由IBM开发 , 并且是专有的 。 它的开发是为了解决石油和天然气行业的传感器通过卫星与远程服务器连接的问题 , 而且是一种经济有效的方式 。 然而 , 它现在是一个由OASIS监督的开放协议 。
MQTT是一种与HTTP类似的应用层协议 。 然而 , HTTP和MQTT之间存在显著差异 。 其中 , 在某些物联网应用中 , MQTT优于HTTP 。
首先 , HTTP是用于客户端服务器计算的以文档为中心的请求-响应协议 。 HTTP是万维网的基础 , 但它不是专门为机器之间通信而设计的 。 另一方面 , MQTT是一种机器对机器、以数据为中心的轻量级协议 , 旨在用于在资源受限的环境中运行 。 许多物联网项目要求设备在各种资源有限下运行 , 如有限的处理能力、无人值守的网络操作、高度不可靠的网络、能源限制等 , 在这种受限环境中 , MQTT比HTTP更受欢迎 。 与HTTP中的直接客户端服务器交互不同 , MQTT在发布/订阅范例下运行 , 中间有MQTT代理 。 客户端可以将主题发布到MQTT代理或订阅主题 , 同一客户端可以发布主题X和Y , 并订阅由另一个MQTT客户端发布的主题Z , MQTT还允许MQTT客户端和代理之间的持久连接以及不同的服务质量级别 , 这使得它非常适合各种受限环境 , 因为在这种情况下 , 它比HTTP更节能、更快 。

【黑客|为什么在物联网应用中使用MQTT而不是HTTP?有何不同?】现在 , 来了解一些术语 。 连接到MQTT代理的所有设备都是MQTT客户端 。 MQTT客户端的范围从计算机到移动电话 , 再到小型受限的传感器设备 , MQTT代理是一个MQTT服务器 , 它在与其连接的不同MQTT客户端之间传输数据 。 当客户端希望向代理发送数据时 , 它会“发布”该数据或主题 , 当MQTT客户端希望接收由另一个MQTT客户端发布的此数据时 , 它订阅此主题 , 然后MQTT代理将此主题传输给代理 。 这与HTTP不同 , MQTT客户端不需要知道彼此的IP地址或端口号 , 他们所需要做的就是连接到同一个MQTT代理 , 单个MQTT代理可以处理大量MQTT客户端 , 并且每个代理的数量不同 。