zoukankan      html  css  js  c++  java
  • 转战物联网·基础篇09-选择MQTT协议还是CoAP协议

      前面章节介绍过,MQTT协议和CoAP协议都是物联网中比较流行的协议,都对传输量做了很大的精简,传输开销小,以适应物理网的网络环境。

      XMPP协议也有人说是适合物联网通信的,但它是基于XML,对于嵌入式硬件设备来说,实现XML解析是非常困难和消耗资源的。

      还有大家熟知的HTTP协议,它对于嵌入式硬件设备来说应该属于重量级,也不太合适。目前很多物联网设备都是资源受限型的,内存空间和计算能力都很有限。

      关于MQTT协议和CoAP协议比较的文章网络上有很多,我们下面从应用场景要求的层面,分析该如何选择使用哪种协议。

      1、服务端主动发送给客户端的数据(反控)的时效性(如通过APP控制硬件动作)
      因MQTT协议是保持连接的,所以及时性相对很好;CoAP协议是无连接响应式通讯,因此不能主动推送,要等客户端访问才可以携带回去,及时性相对较差。

      2、设备环境对底层协议的要求或限制
      MQTT协议是建立在TCP协议基础之上的,因此他也具备TCP协议的优缺点;CoAP协议是建立在UDP协议基础之上的,因此他也具备UDP协议的优缺点。

      3、在NAT网络环境中是否需要调整
      因MQTT协议是保持长连接的,所以在NAT下没有问题;CoAP协议因是无连接方式,需要使用NAT穿透性手段。

      4、实现多对多的通信还是单对单通信
      因MQTT协议的消息模型是发布/订阅式的,所以是可以多对多通信的;CoAP协议的消息模型是请求/响应式的,所以是单对单通信。

      5、服务质量等级及自动重连重发
      因MQTT协议有QoS配置,支持服务质量等级和自动重连重发机制;CoAP本身不具备,需要应用层自己来写这个逻辑。  

      6、对网络稳定性要求
      MQTT协议利用自动重连重发机制解决网络不稳定问题,断网就会触发重连;CoAP协议只有客户端发送的时候需要保证网络连接正常,其他时段无需连接。

      7、对硬件设备的功耗影响
      MQTT协议因有保持连接,所以功耗略高于CoAP协议。

      综上所述,根据实际项目要求,参考选择。如果有反控要求,尽量选择MQTT协议,但是如果是使用电信的NB-IoT,则不需要处理硬件到服务端的传输协议,已经集成在模块中,而且只能是CoAP协议(目前是这样),也就忽略协议选择这步。我们应用服务器与电信物联网服务器进行API通讯即可。如果是通过WiFi模块、有线宽带、4G无线网等就需要考虑这步的协议选择了。

      本人亲历的项目中大部分都需要反控,所以选择了MQTT协议(如不需要反控,我会优选CoAP协议)。这个系列里我们也是以MQTT作为传输协议进行讨论,有关CoAP协议的相关内容大家可以网络搜索了解一下,我们前面先不涉及这方面内容。

      本节完,待续......

  • 相关阅读:
    概率图模型导论
    超平面与法向量
    感知机
    最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
    数组去重的几种方法
    Vuex学习笔记(-)安装vuex
    js判断一个字符串是否是回文字符串
    取出字符串中的所有数字
    js将手机号中间四位变成*号
    微信小程序电商实战(-)商城首页
  • 原文地址:https://www.cnblogs.com/xueweisuoyong/p/11316293.html
Copyright © 2011-2022 走看看