man*_*ish 28 mqtt apache-kafka iot
我正在开发一个移动消息应用程序.我正在经历所需的技术,并找到了两个MQTT和Apache Kafta.对我来说,两者似乎都以同样的方式做同样的事情(在订阅和发布主题方面).
我听说MQTT适合手机,因为它重量很轻?那么基本上这两者之间的区别是什么呢?
Sam*_*Das 38
Kafka背后的主要动机是可扩展性.
MQTT是一种具有轻量级客户端/消息代理通信公共规范的协议,允许发布/订阅交换.客户端库和代理的多种实现(Mosquitto,JoramMQ ...)存在并且几乎兼容.MQTT只是指定传输,并且模糊地指定应用程序部分(即如何处理和可能存储数据,如何授权客户端......).如果主题上消耗的数据仅是实时的或可能持久的,则规范不明确.该规范没有说明实现MQTT的消息代理如何/应该扩展的任何内容.
另一方面,Apache Kafka是一个基于内部"提交日志"的消息代理:它的重点是在磁盘上存储大量数据,并允许实时或更晚的消费(只要磁盘上仍有数据可用) ).它被设计为可部署为多个节点的集群,具有良好的可伸缩性.Kafka使用自己的网络协议.
所以你在这里比较两个不同的东西:一个标准的pub/sub协议(有多个实现),一个特定的消息存储/分发软件,同一家族的vaguley有自己的协议.
我想说如果你需要存储大量的消息,以确保批量处理,请多看看Kafka.如果您有许多客户端/应用程序在许多独立主题上实时交换消息,请查看MQTT(甚至是AMQP)消息代理实现.
Kai*_*ner 12
MQTT是一种标准协议(具有许多实现).Kafka(也是一种协议)通常通过从Apache网站下载或例如Confluent Docker映像来使用.
这就像比较苹果和橘子,两者都存在的原因各不相同.
我在物联网环境中看到的大多数用例都结合了MQTT和Apache Kafka.边缘设备使用MQTT协议(为了它在边缘环境中的优势.然后将它们转发到Apache Kafka以将事件引入企业架构的其余部分.
您可以通过MQTT Broker(如HiveMQ + Apache Kafka)或通过MQTT代理(这样您不需要MQTT代理)来完成此操作.当然,这两种选择都需要权衡利弊.
请参阅此示例,了解如何将MQTT与Apache Kafka结合使用.或者直接转到Github代码:" 用于KSQL的深度学习UDF,用于MQTT物联网传感器数据的流异常检测 ".
我还创建了一个关于如何集成Apache Kafka和MQTT的现场演示.