为什么和何时需要使用MQTT Broker进行物联网/机器到机器应用的开发?

12

只是问一个愚蠢的问题,希望有人能回答。

关于MQTT代理程序,我有点困惑。基本上,混淆的是,有很多东西用于数据存储、传输和处理(如Flume、HDInsight、Spark等)。那么,何时和为什么需要使用一个MQTT代理程序呢?

如果我想要使用Windows 10 IoT应用程序与HiveMQ一起使用,我应该从哪里获取详情?如何使用它?我如何从这个MQTT代理程序中受益?我不能直接使用Azure或HDFS从我的IoT应用程序发送数据吗?那么,MQTT代理程序如何适应或帮助我实现某些东西呢?

我对这些都很新,并尝试寻找一些教程,但我没有得到任何合适的东西。请详细解释或给一些教程?

3个回答

7
MQTT是一种客户端-服务器协议,用于基于发布-订阅的传输,具有相对较小的开销,因此适用于移动和物联网应用程序(不像Flume等)。 MQTT代理基本上是处理MQTT客户端之间消息传递的服务器。尽管存在各种MQTT附加组件,但其功能基本上停留在传输层。
如果您正在寻找一种可靠地将数据从物联网设备传输到后端系统以进行处理的解决方案,我建议您看看Kaa开源物联网平台。它不仅提供适用于低功耗物联网设备的传输层,还提供了坚实的应用程序级逻辑(包括对象绑定、临时数据持久性等)。
这是一个链接,介绍了如何在不到一个小时内使用Kaa和Spark构建可扩展的物联网分析系统

公正地说,Carriots / Xively / Etherios / Axeda / RabbitMQ 都提供了良好的物联网后端服务,支持 MQTT/AMQP 等消息协议。 - Jonny Lin

6
这是一种架构选择。没有使用MQTT也可以实现物联网应用,但使用MQTT有一些优势。如果您对MQTT完全不了解,请查看这个深入的MQTT系列:http://forkbomb-blog.de/2015/all-you-need-to-know-about-mqtt 基本上,主要的架构优势是发布/订阅,专为低延迟、高吞吐量(移动)通信设计,具有最小的协议开销(如果带宽有限则很重要)。您可以完全分离消费者和生产者。
HDFS是(分布式)Hadoop文件系统,是Map / Reduce处理的基础。它不能与MQTT代理进行比较。MQTT代理可以写入HDFS(在HiveMQ中使用自定义插件)。
基本上,MQTT是一种协议,而您提到的产品是解决完全不同问题的产品:
Flume基本上用于规模化日志聚合。你不会用MQTT来做这个,至少没有太多的优势,因为这通常是在后端应用程序中完成的。
Spark和Hadoop在大数据处理方面表现出色。它们是一个框架,而不是一个即用型的解决方案。它们与MQTT代理(如HiveMQ)一起使用,Spark / Hadoop用于数据处理,HiveMQ用于通信。
希望这可以帮助您入门。最好阅读所有这些技术的典型用例,因为这对于单个SO答案来说有点太广泛了。

3

MQTT是一种数据传输协议,与之相比较的通常是HTTP协议。HTTP有两个重要特点,a)它从一个点到另一个点,b)它是请求/响应模式,因此只有一端可以启动数据传输。MQTT连接许多终端点到许多终端点,任何一端都可以启动数据传输。因此,如果您只有一个设备,只有一个服务或人员将访问它,并且只通过轮询进行访问,则HTTP很棒。使用MQTT,许多设备可以向许多服务或人员发布数据,并且反过来也可以。您的问题假设您的数据总是会最终存储在某种数据存储中,但许多交互都涉及事件并立即响应它们,例如按门铃或放下起落架。在这些情况下,您通常需要记录数据并立即执行操作,例如手机发出门铃声。

最后,您通过语义方式发送数据到MQTT,而不是通过IP地址。这意味着您的服务订阅/mikeshouse/doorbell,而不是轮询192.168.22.4,这是一种巨大的收益,尤其是当你拥有多个设备时。


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