Apache kafka MQTT代理和ApacheKafka之间的区别是什么

Apache kafka MQTT代理和ApacheKafka之间的区别是什么,apache-kafka,mqtt,iot,Apache Kafka,Mqtt,Iot,我正在开发一款手机短信应用程序。我研究了所需的技术,找到了两个MQTT和ApacheKafta。在我看来,两者似乎都在以同样的方式做同样的事情(就订阅和发布主题而言) 我听说MQTT适合手机,因为它重量很轻?因此,基本上这两者之间的区别是什么?彼此的优势是什么?卡夫卡背后的主要动机是可伸缩性 MQTT是一种具有轻量级客户端/消息代理通信公共规范的协议,允许发布/订阅交换。存在多个客户端库和代理的实现(Mosquitto、JoramMQ…),并且实际上是兼容的。MQTT只指定了传输,模糊地指定了应

我正在开发一款手机短信应用程序。我研究了所需的技术,找到了两个MQTT和ApacheKafta。在我看来,两者似乎都在以同样的方式做同样的事情(就订阅和发布主题而言)


我听说MQTT适合手机,因为它重量很轻?因此,基本上这两者之间的区别是什么?彼此的优势是什么?

卡夫卡背后的主要动机是可伸缩性

MQTT是一种具有轻量级客户端/消息代理通信公共规范的协议,允许发布/订阅交换。存在多个客户端库和代理的实现(Mosquitto、JoramMQ…),并且实际上是兼容的。MQTT只指定了传输,模糊地指定了应用程序部分(即,如何处理和可能存储数据,如何授权客户端…)。规范不清楚某个主题上使用的数据是实时的还是可能是持久的。规范没有说明实现MQTT的消息代理可以/应该如何扩展

另一方面,ApacheKafka是一个基于内部“提交日志”的消息代理:其重点是在磁盘上存储大量数据,并允许实时或更高版本的消费(只要磁盘上仍有数据可用)。它被设计成可部署为多个节点的集群,具有良好的可伸缩性。卡夫卡使用自己的网络协议

因此,您在这里比较两种不同的东西:一种是标准的发布/订阅协议(有多种实现),另一种是特定的消息存储/分发软件,vaguley属于同一个家族,有自己的协议


我想说的是,如果您需要存储大量的消息,为了确保批处理,请多看看卡夫卡。如果您有许多客户机/应用程序在许多独立主题上实时交换消息,请更多地了解MQTT(甚至是AMQP)message broker实现。

MQTT是一种标准协议(有许多实现)。卡夫卡(也是一种协议)通常通过从Apache网站下载或从融合的Docker映像下载来使用

这就像比较苹果和橙子,两者的存在有着截然不同的原因

我在物联网环境中看到的大多数用例都结合了MQTT和Apache Kafka。边缘设备使用MQTT协议(因为它在边缘环境中具有优势)。然后将这些协议转发给Apache Kafka,以将事件导入企业架构的其余部分

您可以通过像HiveMQ+ApacheKafka这样的MQTT代理或通过MQTT代理(这样您就不需要MQTT代理)来实现这一点

请参阅。或者直接转到Github代码:“”


我还制作了一个关于如何集成的现场演示。

Stackoverflow不是要求比较像whatsapp这样的移动应用程序消息传递的理想技术——kafta的场所?为什么我这样问是因为我知道MQTT重量轻、占地面积小,非常适合移动设备。那么kafta呢?它只是类似,n只有mqtt,它们的协议对于那些用例来说更相似。我也依赖mqtt。这都是关于功能的,kafka没有内置的msg优先级,安全性差,重协议。在移动应用程序上公开kafka需要一些工作,这通常是通过在上面添加一个rest层来完成的。mqtt可以解决这些问题…但现在是它的另一面,kafka的可扩展性比我使用的所有mqtt impl都要好得多…Re:
它的重点是在磁盘上存储大量数据
:您也可以在mqtt中启用数据持久性。因此,存储数据不能成为使用Kafka而不是mqtt的理由。Kafka肯定还有其他一些优势?!