mqtt与http与coap

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/strivenoend/article/details/87705363

 

一物联网协议MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议

二mqtt与http与coap对比

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的场景。

 三、从现有的移动端(Android)消息推送方案中,也可以看出MQTT协议和XMPP协议的优缺点

方案1、 使用GCM服务(Google Cloud Messaging)  
简介:Google推出的云消息服务,即第二代的G2DM。  
优点:Google提供的服务、原生、简单,无需实现和部署服务端。  
缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google。  

方案2、 使用XMPP协议(Openfire + Spark + Smack)  
简介:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。  
优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。  
缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。  

方案3、 使用MQTT协议(更多信息见:  http://mqtt.org/ )  
简介:轻量级的、基于代理的“发布/订阅”模式的消息传输协议。  
优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考:  http://mqtt.org/software ),且已有C++版的服务端组件rsmb。  
缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。  

方案4、 使用HTTP轮循方式  
简介:定时向HTTP服务端接口(Web Service API)获取最新消息。  
优点:实现简单、可控性强,部署硬件成本低。  
缺点:实时性差。  
 

对各个方案的优缺点的研究和对比,推荐使用MQTT协议的方案进行实现,主要原因是: MQTT最快速,也最省流量(固定头长度仅为2字节),且极易扩展,适合二次开发 。

猜你喜欢

转载自blog.csdn.net/strivenoend/article/details/87705363
今日推荐