我假设有成百上千的物联网设备通过 MQTT 协议(protocol)将数据发布到(代理)MQTT 集群,在代理后面我有数据处理模块,它从代理订阅数据并维护状态表对于所有这些设备。设备数量还在增加,所以我不得不相应地扩展broker集群和数据处理模块,对于MQTT broker,比如Kafka/Rabbit MQ/Hive MQ,可以很容易地扩展,但是对于数据处理模块我不太确定是否有任何最佳实践,或者任何框架/架构都可以很容易地实现这一目标:
我假设我必须创建许多具有成百上千个线程的守护进程来监听 MQTT 代理,问题是如何动态扩展这些服务?
谢谢。
最佳答案
这样做的一种方法是使用 Node.js,因为它使用事件驱动的方法,您不必处理线程等。
我找到了这个特定于 MQTT 的 Node.js 库: https://www.npmjs.com/package/mqtt 您可以使用它来订阅不同的主题。
您可能还会发现这个项目很有趣: http://nodered.org/
另一种解决方案可以使用 Apache Kafka,它具有可扩展性这一重要特性。但是,这里的问题是 Kafka 不支持开箱即用的 MQTT,并且有自己的约定。因此,需要某种适配器使它们协同工作。为此,请看一下: using mqtt protocol with kafka as a message broker
关于events - 物联网流数据处理的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41194394/