IBM IoT基础架构使设备能够将事件提交到IBM云进行记录和消费。看起来,实现事件传输有两种主要机制...MQTT和REST(使用HTTP POST请求)。假设项目中的传感器直接通过互联网与IBM云建立TCP连接,我们可能会考虑这两种技术之间的潜在差异是什么?哪些因素会导致我们选择使用MQTT还是REST作为技术?在IBM端的最后一英里是否存在实质性的性能差异,这是否意味着一种技术优于另一种技术?
MQTT是一种旨在快速和轻量级传输消息的协议,因此,在执行相同任务时,它比HTTP更快、更高效。更高效不仅意味着数据流量更少、速度更快,有时还可以节省电力。MQTT在带宽成为问题的情况下表现特别出色。
然而,MQTT需要一个客户端实现(例如Paho),这可能是一个较罕见的事情,而HTTP客户端实现则更为普遍,因此更容易在任何设备上获得。
还有TCP/IP端口的考虑,某些网络硬件可能需要HTTP端口80或443(尽管IoTF支持在端口443上使用MQTT和MQTTWS)。
选择HTTP而不是MQTT(或COAP)可能存在意识形态或哲学上的原因,但通常我会说选择HTTP而不是MQTT的原因与网络或客户端支持相关。
目前还没有关于性能差异的官方文件,但可以肯定的是,无论是长期保持连接还是临时连接等任何情况下,MQTT在几乎所有消息传输场景中都将更加高效和快速。