前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MQTT 和 CoAP 哪个最可能成为未来物联网通信标准协议?

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

作者头像
腾讯云开发者社区
修改2019-12-09 19:55:04
2.4K0
修改2019-12-09 19:55:04
举报

近日,腾讯无线网络与物联网技术负责人李秋香与高校科研教授、产业链、运营商等各行业的嘉宾一起参与了知乎「 科技共振之 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

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

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
物联网通信
腾讯云物联网通信(Internet of Things Hub, IoT Hub)旨在提供一个安全、稳定、高效的连接平台,帮助开发者低成本、快速地实现“设备-设备”、“设备-用户应用”、“设备-云服务”之间可靠、高并发的数据通信。物联网通信平台不仅可以实现设备之间的互动、设备的数据上报和配置下发,还可以基于规则引擎和腾讯云产品打通,方便快捷地实现海量设备数据的存储、计算以及智能分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档