天天看点

对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)

继续阅读