IBM IoT Foundation:何时使用 MQTT 以及何时使用 REST 进行事件提交?

IBM IoT Foundation: When to use MQTT and when to use REST for event submission?

IBM IoT Foundation 允许设备将事件提交到 IBM 云以供使用和记录。似乎有两种主要机制来实现事件传输……MQTT 和 REST(HTTP POST 请求)。假设一个项目将有传感器通过 Internet 直接 TCP 连接到 IBM 云,我们可以认为这两种技术之间的潜在区别是什么?哪些因素会促使我们选择 MQTT 或 REST 作为要使用的技术?在 IBM 端的最后一英里是否存在任何显着的性能差异,表明一种技术优于另一种技术?

MQTT 旨在成为一种快速且轻量级的消息传递协议,因此,当用于执行等效操作时,它比 HTTP 更快、更高效。更高效不仅意味着更少的流量数据和更快的速度,有时还意味着更少的电力。 MQTT 特别适用于需要考虑带宽的情况。

然而,

MQTT 确实需要一个客户端实现(如 Paho),这可能比 HTTP 客户端实现更罕见,后者会更普遍,因此在任何给定设备上都有更多 likely/easily 可用。

还有 TCP/IP 端口注意事项,其中某些网络硬件可能需要 HTTP 端口 80 或 443(尽管 IoTF 在端口 443 上支持 MQTT 和 MQTTWS)。

选择 HTTP 而不是 MQTT(或 COAP 就此而言)也可能有意识形态或哲学上的原因,但通常我会说选择 HTTP 而不是 MQTT 的原因是网络相关或客户端支持相关.

目前还没有关于性能差异的官方文件,但可以肯定地说,在几乎任何消息传递场景(长期连接或临时连接等)下,MQTT 都会更高效、更快速

我将考虑因素总结为:

  • mqtt 将支持更高的吞吐量,并且 API 与 REST api
  • 相比要简单得多
  • REST API 可能更容易在物联网设备上使用,但随着 mqtt 越来越受欢迎以及像 Google Cloud Platform 和 IBM Bluemix 这样的大公司在他们的产品中支持 mqtt,这种情况可能会发生变化物联网服务。