IBM物联网基础架构:何时使用MQTT,何时使用REST进行事件提交?

9
IBM IoT基础架构使设备能够将事件提交到IBM云进行记录和消费。看起来,实现事件传输有两种主要机制...MQTT和REST(使用HTTP POST请求)。假设项目中的传感器直接通过互联网与IBM云建立TCP连接,我们可能会考虑这两种技术之间的潜在差异是什么?哪些因素会导致我们选择使用MQTT还是REST作为技术?在IBM端的最后一英里是否存在实质性的性能差异,这是否意味着一种技术优于另一种技术?
2个回答

12

MQTT是一种旨在快速和轻量级传输消息的协议,因此,在执行相同任务时,它比HTTP更快、更高效。更高效不仅意味着数据流量更少、速度更快,有时还可以节省电力。MQTT在带宽成为问题的情况下表现特别出色。

然而,MQTT需要一个客户端实现(例如Paho),这可能是一个较罕见的事情,而HTTP客户端实现则更为普遍,因此更容易在任何设备上获得。

还有TCP/IP端口的考虑,某些网络硬件可能需要HTTP端口80或443(尽管IoTF支持在端口443上使用MQTT和MQTTWS)。

选择HTTP而不是MQTT(或COAP)可能存在意识形态或哲学上的原因,但通常我会说选择HTTP而不是MQTT的原因与网络或客户端支持相关。

目前还没有关于性能差异的官方文件,但可以肯定的是,无论是长期保持连接还是临时连接等任何情况下,MQTT在几乎所有消息传输场景中都将更加高效和快速。


1
我会将考虑事项总结如下:
  • MQTT相对于REST API而言,支持更高的吞吐量,并且API更加简单。
  • 在物联网设备上,REST API可能更容易获得,但随着MQTT越来越受欢迎,像Google Cloud Platform和IBM Bluemix这样的大型玩家也开始支持MQTT作为其物联网服务的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接