【转载】对MQTT和CoAP的一些个人见解

mingdu.zheng at gmail dot com 
http://blog.csdn.net/zoomdy/article/details/79093176

首先,MQTT和CoAP没有好不好的问题,只有适合什么应用场景的问题。

 

MQTT

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

 

CoAP

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

 

对比

 


  协议
  核心特点
  下层协议
  应用场合
  硬件要求

 

  MQTT
  长连接
  TCP
  实时控制/执行器
  较高


  CoAP
  低功耗
  UDP
  数据采集/传感器
  较低

 

 


参考

MQTT Wiki 
MQTT 3.1.1 specification

CoAP Wiki 
RFC7252: The Constrained Application Protocol (CoAP)
--------------------- 
作者:半斗米 
来源:CSDN 
原文:https://blog.csdn.net/zoomdy/article/details/79093176 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

从这几个层面进行比较与描述: 

1. 协议栈: 

   MQTT: TCP 长链接, CoAP: UDP 低功耗短连接, HTTP: TCP  

2.  请求方式

  MQTT: 发布订阅, CoAP: request/ response, HTTP:  request/ response

3. 通讯消息格式:

 MQTT:

CoAP: 

 

HTTP: 

 

 

4. 使用特点与使用场景

MQTT是多个客户端通过一个中央代理传递消息的多对多协议。它通过让客户端发布消息、代理决定消息路由和复制来解耦生产者和消费者。虽然MQTT持久性有一些支持,但它是最好的实时通讯总线。

CoAP基本上是一个在Client和Server之间传递状态信息的单对单协议。虽然它支持观察资源,但是CoAP最适合状态转移模型,而不是单纯的基于事件。

HTTP是适合使用在性能好一些的终端上,相对以上一些比较重,对设备要求相对高一些。不适合M2M的场景。

 

更多内容,请关注博主的github:

----------------------------------------------------------

如果解决了您的问题,请有烦,github多点star。 算是对本人的感谢,鼓励作者继续帮助大家:

更多多技术关注,请follow本人的gith, 多给一些star

https://github.com/kkman2008/
--------------------- 
作者:kingmax54212008 
来源:CSDN 
原文:https://blog.csdn.net/kingmax54212008/article/details/81505200 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(IoT)