IOT/M2M应用程序为什么以及何时需要mqtt代理

IOT/M2M应用程序为什么以及何时需要mqtt代理,mqtt,iot,windows-10-iot-core,hivemq,Mqtt,Iot,Windows 10 Iot Core,Hivemq,只是问一个愚蠢的问题,希望有人能回答 关于MQTT代理,我有点困惑。基本上,混淆的是,有太多的东西被用于数据存储、传输和处理(如Flume、HDInsight、Spark等)。那么,何时以及为什么我需要使用一个MQTT代理 如果我想将Windows 10 IoT应用程序与HiveMQ一起使用,我可以从哪里获得详细信息?如何使用它?我如何从这个MQTT代理中获益?我不能直接使用Azure或HDFS从我的物联网应用程序发送数据吗?那么,MQTT代理如何融入其中,或者如何帮助我实现某些目标呢 我对所有

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

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

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


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

这是一种架构选择。IoT应用程序可以不使用MQTT,但使用MQTT有一些优势。如果您完全不熟悉MQTT,请查看此深入的MQTT系列:

基本上,主要的体系结构优势是发布/订阅设计用于低延迟、高吞吐量(移动)通信,协议开销最小(如果带宽很高,这一点很重要)。您可以完全解耦消费者和生产者

HDFS是分布式Hadoop文件系统,是MAP/RADIUS处理的基础。它无法与MQTT代理进行比较。不过,MQTT代理可以写入HDFS(对于带有自定义插件的HiveMQ)

基本上,MQTT是一种协议,而您提到的产品是解决完全不同问题的产品:

Flume基本上用于大规模的日志聚合。您不会为此使用MQTT,至少没有太多的优势,因为这通常是在后端应用程序中完成的

Spark和Hadoop在大数据处理方面大放异彩。它们是一个框架,不是现成的解决方案。它们实际上无法与MQTT进行比较。通常,像HiveMQ这样的MQTT代理与这些代理一起使用,Spark/Hadoop用于数据处理,HiveMQ用于通信


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

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

如果您希望实施一个解决方案,将数据从您的物联网设备可靠地传输到后端系统进行处理,我建议您考虑一下。它比MQTT更进一步,它不仅提供了适合于低功耗IoT设备的传输层,还提供了应用程序级逻辑的坚实部分(包括应用程序级数据结构的对象绑定、临时数据持久性等)


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

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

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