11

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

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

如果我想将 Windows 10 IoT 应用程序与 HiveMQ 一起使用,我可以从哪里获得详细信息?如何使用它?我如何从这个 MQTT 代理中获益?我不能直接使用 Azure 或 HDFS 从我的 IoT 应用程序发送数据吗?那么,MQTT 代理如何融入其中或帮助我实现某些目标?

我对所有这些都是新手,并试图找到一些教程,但是,我没有得到任何合适的东西。请更详细地解释它或为此提供一些教程?

4

3 回答 3

7

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

如果您正在寻找一种能够可靠地将数据从 IoT 设备传输到后端系统进行处理的解决方案,我建议您查看Kaa 开源 IoT 平台。它比 MQTT 走得更远,不仅提供适合低功耗物联网设备的传输层,而且还提供了应用程序级逻辑的一大块(包括应用程序级数据结构的对象绑定、临时数据持久性等) .)。

这是一个网络研讨会的链接,它解释了如何在不到一个小时的时间内使用 Kaa 和 Spark 构建可扩展的 IoT 分析系统

于 2015-08-23T10:26:12.323 回答
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 真正相提并论。通常 MQTT 代理(如 HiveMQ)与这些代理结合使用,Spark / Hadoop 用于数据处理,HiveMQ 用于通信。

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

于 2015-08-20T17:40:36.430 回答
3

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

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

于 2015-10-14T07:38:40.753 回答