专栏首页云加头条MQTT 和 CoAP 哪个最可能成为未来物联网通信标准协议?

MQTT 和 CoAP 哪个最可能成为未来物联网通信标准协议?

近日,腾讯无线网络与物联网技术负责人李秋香与高校科研教授、产业链、运营商等各行业的嘉宾一起参与了知乎「 科技共振之 5G+ 」活动,除了专业的5G探讨,也聊了不少和开发者们息息相关的问题。基于此,云加社区联手知乎科技,从知乎超过 10000 条 5G 相关问答中精选内容落地社区专题「 共探 5G 」。

本文为知乎用户刘凯关于“ MQTT 和 CoAP 哪个最可能成为未来物联网通信标准协议?”的内容分享。

问题:MQTT 和 CoAP 哪个最可能成为未来物联网通信标准协议?

MQTT是IBM开发的一个即时通讯协议,基于TCP的,号称是可以支持所有的平台。 CoAP是运行于UDP之上的,并且非常的小巧,最小只有4个字节。 可以说两者都是营运物联网大趋势和为了适应M2M而生的,相比于其他的通信协议也有较大的优势。

以上是最近两者的Google trends。 话说国外貌似这两个协议非常的火啊,hivemq等等一堆啥啥mq,还有pubnub、xively,CoAP也有一大群真粉,但国内貌似不太感冒,唯一知道的是 云巴用的mqtt,呃。。。貌似跑题了。 如上,在如今物联网如火如荼各种造势的时代,真正实现智能,M2M是必不可少的,而MQTT和CoAP哪个最可能成为未来物联网的标准协议呢?或者有其他更有潜力的通信协议?

回答:我现在认为CoAP和MQTT的协议除了考虑设备的TCP/UDP堆栈实现能力和对设备的压力之外,更加重点的考虑点是:

  1. 服务器架构和开发成本?
  2. 应用本身数据流向,流量,频率,持久的需求?
  3. 长连接还是短连接?
  4. 数据分享API的需求?

MQTT,其实就是IBM把服务器间异步通讯用的消息队列Message Queue(MQ)中间件前置到IOT接入而已。天生适合多对多(服务器对服务器,设备对服务器,设备对APP),异步,后台应用,以及即时通讯(多客户端对等)场景。不过就是约定了报文头而已。自己用Redis PubSub/MQ也可以构建。最简单的IOT架构:Device+MQTT+APP,如果不存储数据的话。需要数据持久可以是:Device+MQTT+Web/APP+DB(NoSQL/NewSQL/BigData/Lambda)+APP。

CoAP,基于UDP接口,参考HTTP上的REST API,适合数据采集这种多(设备)对一(服务器) 场景,系统架构类似于传统Web。但是CoAP UDP不是面对连接的,所以方向控制需要高层构建协议。CoAP支持多播,也可以实现一对多场景,但是好像和MQTT不一样。应该是局域网内的多播?了解的兄弟请提点一下。但总的网站架构迎来类似于传统Web:CoAP+Web+DB+APP。弱势是,数据必须流经DB转给第三方。当然,如果Web内部有MQ,可以通过REST API暴露给第三方。变成: CoAP + Web + DB + APP + Redis/MQ + REST + APP

请观察最近的BAT动向,都把MQTT作为物联网前置接入套件单列出来作为标准云服务提供。阿里云物联网套件,百度开放云物联网服务IOT,腾讯QQ物联平台,中移动OneNet开放云,Amazon IOT服务......更别提环信,野狗之类原来做IM云服务的,都将MQTT作为IM/IOT共享的接入服务了。

MQTT还有一点:长连接。采用长连接MQTT还是无连接CoAP,和应用数据属性有关。是维持大量非活动长连接消耗大,还是大量UDP包对于服务器消耗大,我一直没有得到结论。反正我从Windows发起大量UDP压测,总是报给我操作系统端口不够的一个错误。

我之前的架构是:Socket + Web + DB(Redis/SQL)+ APP,现在不得不将Redis作为沟通Socket/Web的通道,和第三方APP/Sever的通道。但用Redis PubSub构建实现起来很麻烦。而且也不是标准实现,客户实施的周期反而不如MQTT。所以准备改造成为上述MQTT协议方式。

【更新】

CoAP大体上是采用数据报方式,可以基于UDP,短消息,以及6LowPAN等传输层。而且大体上在WSN内部可以使用。不过由于CoAP也可以用于网关与云之间通讯,所以现在出现了CoAP over TCP的草案。不过,我觉得该草案受到CoAP RFC7252的约束太多,所以我和客户约定了一个版本,私底下命名为CoTCP(CoAP over TCP)。呵呵,私有的协议。但是保留了面向资源的REST风格。

作者:刘凯

链接:https://www.zhihu.com/question/34767514/answer/87340564

来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文链接:https://www.zhihu.com/question/34767514/answer/87340564

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 腾讯云“开发者实验室”与“DCDB”产品揽获工信部信通院两大年度奖项

    11月17日,由高效运维社区主办的GOPS全球运维大会暨第二届中国运维行业年度盛典隆重召开,全球运维大会也是中国首个专属运维行业的盛会,面向互联网及传统行业的广...

    云加社区
  • 云+社区的使用说明及规范

    认证方式一:公司邮箱认证。选择该方式后,在页面填写真实姓名、职业信息、所在地区,完成后按照页面提示复制信息,并使用公司邮箱发送至指定邮箱即可

    云加社区
  • 开发者工作的性质

    2020 年的工作正式开启,大多数开发者的开工方式是云办公。对开发者来说,云办公意味着什么?如何开始云办公?云办公的发展趋势会怎样?基于此,云加社区联手知乎科技...

    云加社区
  • web安全思维图

    Youngxj
  • Lync server 2013 之office web apps server 搭建步骤

    office web apps server 搭建步骤: 一、 .NET Framework 4.5 节点下的HTTP 激活 .NET Framework 3....

    杨强生
  • Skype for Business Server 2015企业版部署体验(上)

    Skype for Business Server 2015 在MSDN上可以下载了,搭建3台虚拟机按照企业版部署体验一下。

    杨强生
  • 未来Web开发的最佳实践:拥抱不确定性

    Web 开发平台的变革及Web 可用设备的惊人增长,使得Web 到达了前所未及的位置。在过去的十年间,我们已经从一个停滞的、只有很少浏览器和操作系统的平台变成...

    博文视点Broadview
  • Lync Server 2013企业版快速部署视频(第一期)

    近期在做Lync Server 2013站点迁移项目时,做POC顺便把第一个Lync站点的部署录制了,分享给大家!

    杨强生
  • Exchange2016-抢先体验

    Install-WindowsFeature RSAT-ADDS,AS-HTTP-Activation, Desktop-Experience, NET-Fra...

    月缺
  • 微软超融合私有云测试32-SCCM2016部署之SCCM管理服务器安装

    1) 前置条件安装完毕后,插入SCCM安装光盘,打开安装光盘的如下路径下的extadsh.exe程序并执行,(注意: 一定要从CMD中执行,并且使用管理员模式)

    SuperDream

扫码关注云+社区

领取腾讯云代金券