使用mqtt协议和kafka作为消息代理

abh*_*dtu 6 architecture scalability rabbitmq mqtt apache-kafka

我们如何将mqtt协议与kafka一起用作消息代理?

客户端(android/ios/desktop java apps等)将使用mqtt phao客户端库生成和使用消息,这些库使用kafka作为消息代理以不同语言提供.

有什么建议?

Las*_*sus 6

您可以使用 Kafka 源连接器,它将数据从 MQTT 代理(如 Mosquitto)流式传输到 Kafka 集群。请参阅https://github.com/evokly/kafka-connect-mqtt

运行连接器的最简单方法是在独立模式下,其中单个实例将在单个节点上的 Kafka 集群上运行。您还可以在分布式模式下运行它(尽管需要更多配置),这会将连接器分布在整个集群中以获得更大的吞吐量。在分布式模式下,您可以设计一个允许水平扩展、并行吞吐量和高可用性的拓扑。实现额外的保证需要额外的负载均衡器、多个 MQTT 代理以及遗嘱场景来处理连接器崩溃,但这可能超出了这个问题的范围。

使用连接器方法的优点是 Kafka 集群可确保您的连接器处于活动状态并在必要时重新启动它。分布式模式提供了更多优势。


Lan*_*Lan 3

这不是一个好主意。MQTT 客户端通常非常轻量级,资源有限。这些设备或物联网的内存/CPU 功率较小。Kafka 客户端通常是重量级的。例如,Kafka 客户端必须跟踪偏移量。它还需要与动物园管理员进行交互。简而言之,Kafka不适合作为MQTT代理。您最好选择流行的 MQTT 代理,例如 Mosquito。