MQTT、CoAP与HTTP的区别,哪一个更适合物联网?

      最后更新:2022-02-22 17:11

      转载自:

      http://www.234plus.com/?p=740

      https://blog.csdn.net/yangzaizhong/article/details/80877166

      HTTP是最流行和最广泛使用的协议。但在过去几年中,MQTT迅速获得了牵引力。当我们谈论物联网开发时,开发人员必须在它们之间做出选择。

      设计和消息传递

      MQTT以数据为中心,而HTTP是以文档为中心的。HTTP是用于客户端 – 服务器计算的请求 – 响应协议,并不总是针对移动设备进行优化。MQTT在这些术语中的主要优点是轻量级(MQTT将数据作为字节数组传输)和发布/订阅模型,这使其非常适合资源受限的设备并有助于节省电池。

      此外,发布/订阅模型为客户提供了彼此独立的存在,增强了整个系统的可靠性。当一个客户端出现故障时,整个系统可以继续正常工作。

      速度和交付

      根据3G网络的测量结果,MQTT的吞吐量比HTTP快93倍。

      此外,与HTTP相比,MQTT协议确保了高传输保证。有3个级别的服务质量:

      – 最多一次:保证尽力交付。

      – 至少一次:保证消息至少传送一次。但是消息也可以不止一次传递。

      – 恰好一次:保证每个消息只被对方接收一次

      MQTT还为用户提供Last will&Testament和Retained消息的选项。第一个意味着在客户端意外断开连接的情况下,所有订阅的客户端都将从代理获得消息。保留消息意味着新订阅的客户端将立即获得状态更新。

      HTTP协议没有这些功能。

      复杂性和消息大小

      MQTT具有相当短的规范。只有CONNECT,PUBLISH,SUBSCRIBE,UNSUBSCRIBE和DISCONNECT类型对开发人员很重要。而HTTP规范要长得多。

      MQTT具有非常短的消息头,并且最小的包消息大小为2个字节。通过HTTP协议使用文本消息格式允许它组成冗长的标题和消息。它有助于消除麻烦,因为它可以被人类阅读,但同时它对于资源受限的设备是不必要的。

      MQTT

      MQTT的特点是可以保持长连接,具有一定的实时性,云端向设备端发送消息,设备端可以在最短的时间内接收到并作出响应,所以MQTT更适合需要实时控制的场合,更适合执行器。要保持长连接,那么就要时不时地发送心跳包,这就不会省电了。所以低功耗的场合并不适合MQTT。MQTT的长连接需要建立在TCP的基础上,TCP协议的复杂性决定了对设备的要求是比较高一些的,相比UDP。

      CoAP

      CoAP的特点是低功耗,数据发完就可以休眠了。所以CoAP更适合数据采集的场合,更适合纯粹的传感器设备,特别是电池供电的传感器设备。基于UDP协议,对设备的要求比较简单。华为出的NB-IoT芯片就只支持UDP和CoAP,华为的决策告诉我们CoAP和NB-IoT是一对。

      对比

      结论

      相比HTTP,MQTT、CoAP协议更适合物联网:

      1、更节省电池,尤为突出的是CoAP

      2、吞吐量更大,MQTT比HTTP快93倍

      3、更省流量

      4、增强了整个系统的可靠性



      作者:创业者谈
      链接:https://www.jianshu.com/p/90c0f016e043
      来源:简书
      著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类