首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IoT:我需要使用MQTT还是HTTP?

IoT:我需要使用MQTT还是HTTP?
EN

Stack Overflow用户
提问于 2017-05-20 00:29:25
回答 4查看 16.2K关注 0票数 10

我正在研究一种从环境中感知和收集信息的设备,如温度、湿度等。

该设备没有连接到任何电源,但它有一个电池,和一个太阳能电池板来充电。

它几乎大部分时间都处于深度睡眠状态,只有在需要感知和传输数据时才会醒来。此操作大约需要1-2分钟,然后它会再次进入睡眠状态。

我不是这个领域的专家,但我认为如果设备需要随时可以访问以接收来自某个主题的消息,那么MQTT应该是一个很好的选择,但在我的场景中,它只读取传感器,并定期向服务器发送数据。

目前我通过HTTP发送数据,但我想知道实现MQTT是否有意义?在这种情况下,我应该比HTTP有什么优势吗?

EN

回答 4

Stack Overflow用户

发布于 2017-05-20 01:48:54

关于MQTT与HTTP的对比有丰富的文献,您应该深入研究这些文献以获取详细信息,但以下是您的应用程序的一些要点。

MQTT

HTTP允许持久连接,通过

  • 可以节省大量资源。如果您正在使用SSL,这是最相关的。

  • 如果您只发送几个度量MQTT通常比HTTP.

  • 作为MQTT是为传送数据(而不是整个页面)而设计的,它的发布/订阅模型提供了许多有用的内置功能,如保留和持久。

  • 还提供了一种实现加密、身份验证和访问控制的简单方法。

  • MQTT适用于连接可能断断续续或不可靠的情况。它的各种服务质量级别为您提供了确保可靠发送数据的重要方法。根据我的经验,MQTT

  • 在较大的应用程序中提供了更容易的管理。我特别喜欢有一组标准化的度量标准来度量performance.

  • The的主题/子主题值结构,这有助于组织您的数据,并使其易于扩展并在多个项目之间共享资源。MQTT这可能是个人喜好,但我发现

  • 协议比使用HTTP更容易理解、故障排除和编程。特别是,Python Paho MQTT库很简单,而且运行良好。

总之,MQTT有许多看起来非常适合您的应用程序的特性。也就是说,您可能会使用HTTP复制其中的许多内容,但这需要更多的工作。

HTTP

几乎所有地方都支持

  • ,这确保了更容易与防火墙兼容。
  • 这是一种更常见的协议,因此您(和您的最终用户)可能已经对它感到满意了。类似地,您可能已经了解了安全模型,这将使其更容易保护。
  • 不同的MQTT实现之间有一些差异,这可能会造成困难(例如,我使用Mosquitto,有时当人们谈论他们的HiveMQ设置时,我会发现它很混乱)。HTTP给我的印象是更普遍,并且有一个更大的社区可以帮助你。

因此,与MQTT相比,HTTP有一些固有的缺点,但如果MQTT的特定功能对您没有吸引力,它将完成工作,并且可能更实用。

但实际上,如果这是一个大型项目,那么这两个项目都值得尝试,并在您的特定应用程序和环境中运行一些基准测试。设置测试环境并获得一些指标并不难。如果这更多的是一个爱好/一次性项目,那么我会使用你觉得更舒服或更有趣的项目。

来源/进一步阅读:

http://stephendnicholas.com/posts/power-profiling-mqtt-vs-https https://www.ibm.com/developerworks/community/blogs/sowhatfordevs/entry/using_mqtt_protocol_advantages_over_http_in_mobile_application_development5?lang=en https://medium.com/@shubhanshusingh/http-vs-mqtt-9008d448bf88 https://www.slideshare.net/paolopat/mqtt-iot-protocols-comparison https://mobilebit.wordpress.com/2013/05/03/rest-is-for-sleeping-mqtt-is-for-mobile/ http://bec-systems.com/site/1200/iot-protocols-mqtt-vs-coap-vs-http

票数 24
EN

Stack Overflow用户

发布于 2018-01-27 00:21:23

我们已经在普通服务器和Raspberry Pi板上测试了MQTT vs HTTP(REST) over SSL,从性能和能耗的角度来看都是如此。结果取决于运行进程的用例和设备。

关于你的用例,我们也有专门的测试,通过HTTP、HTTP-batch或MQTT来传递许多消息(多个探测)。结果非常简单,如果您有可能在一个HTTP请求中发送数据-这将是最好的选择。MQTT排在第二位,与MQTT相比,HTTP按消息传递的效率要低得多,而且速度也慢得多。

票数 5
EN

Stack Overflow用户

发布于 2017-05-23 09:21:51

我刚开始玩这个游戏,但我喜欢mqtt收集数据和向设备发送信息。

我使用的是synapses wifi芯片(自愈式网状网络),我已经通过将其中一个rf200串行连接到esp8266 rf200芯片上搭建了一座桥。

基本上,我有mqtt_in和mqtt_out作为主题,我的c# xamarin iOs/android应用程序连接到mqtt broker,使用mqtt_in (进入rf200网格网络)从rf200请求信息,节点使用mqtt_out (离开rf200网格网络)响应,我收集所有信息作为字符串,根据需要进行解析,并将其转换为我需要的任何形式。

它的开销非常低,并且mqtt代理非常容易设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44074864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档