为什么以及什么时候需要mqtt代理来进行IOT / M2M应用程序

时间:2015-08-20 17:20:05

标签: mqtt iot windows-10-iot-core hivemq

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

我对MQTT经纪人感到困惑。基本上,令人困惑的是,有很多东西被用于数据存储,传输和处理(如Flume,HDInsight,Spark等)。那么,何时以及为什么我需要使用一个MQTT代理?

如果我想在HiveMQ中使用Windows 10 IoT应用程序,我可以从哪里获取详细信息?如何使用它?我如何从这个MQTT经纪人那里获益?我是否可以不使用Azure或HDFS直接从我的IoT应用程序发送数据?那么,MQTT经纪人如何融入其中或帮助我实现某些目标呢?

我是所有这些的新手,并试图找到一些教程,但是,我没有得到任何正确的东西。请详细解释一下,或者为此提供一些教程?

3 个答案:

答案 0 :(得分:6)

MQTT是基于pub-sub的传输的客户端 - 服务器协议,具有相对较小的开销,因此适用于移动和物联网应用程序(与Flume等不同)。 MQTT代理基本上是一个服务器,用于处理与MQTT客户端之间的消息传递。即使存在各种MQTT附加组件,功能也会在传输层停止。

如果您希望实施一个可以将数据从IoT设备可靠地传输到后端系统进行处理的解决方案,我建议您查看Kaa open-source IoT platform。它远远超过MQTT,不仅提供适用于低功耗IoT设备的传输层,还提供应用级逻辑的坚实组块(包括应用程序级数据结构的对象绑定,临时数据持久性等) )。

以下是解释how to build a scalable IoT analytics system with Kaa and Spark in less than an hour的网络研讨会链接。

答案 1 :(得分:5)

这是一种建筑选择。没有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这样的MQTT代理通常与这些代理一起使用,Spark / Hadoop用于数据处理,HiveMQ用于通信。

我希望这有助于您入门。最好是阅读所有这些技术的典型用例,这对于单个SO答案来说有点过于宽泛。

答案 2 :(得分:3)

MQTT是一种数据传输,因此我必须将它与HTTP进行比较。 HTTP有两个重要特征,a)它从一个点到另一个点,b)它是请求/响应,因此只有一端可以开始数据传输。 MQTT将许多端点连接到许多端点,任何一端都可以开始数据传输。因此,如果您只有一个设备,只有一个服务或人员可以访问它,并且只通过轮询,那么HTTP就很棒。 MQTT意味着许多设备可以将数据发布到许多服务或人员,反之亦然。您的问题假设您的数据总是会出现在某种数据存储中,但许多交互都是关于事件并立即响应它们,如敲响门铃或降低起落架。在这些情况下,您经常需要记录数据,并立即采取行动,例如手机发出门铃噪音。

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