mqtt代理和ApacheKafka之间有什么区别

ryevplcw  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(663)

我正在开发一个手机短信应用程序。我研究了所需的技术,找到了两个mqtt&apachekafta。在我看来,两人似乎都在以同样的方式做同样的事情(就订阅和发布一个主题而言)。
我听说mqtt很适合手机,因为它很轻?那么基本上这两者有什么区别,彼此的优势是什么呢?

webghufk

webghufk1#

mqtt是一个标准协议(有许多实现)。kafka(也是一种协议)通常是通过从apache网站下载来使用的,例如一个融合的docker图像。
这就像比较苹果和橙子,两者的存在有着截然不同的原因。
我在物联网环境中看到的大多数用例都结合了mqtt和ApacheKafka。边缘设备使用mqtt协议(因为它在边缘环境中有好处)。然后将这些事件转发给apachekafka,以便将这些事件放入企业体系结构的其余部分。
您可以通过mqtt代理(如hivemq+apachekafka)或通过mqtt代理(这样您就不需要mqtt代理)来实现这一点。当然,这两种选择都有利弊。
请看这个如何将mqtt与apachekafka结合的示例。或者直接转到github代码:“深入学习ksql的udf,用于mqtt iot传感器数据的流异常检测”。
我还创建了一个关于如何集成apachekafka和mqtt的实时演示。

quhf5bfb

quhf5bfb2#

Kafka背后的主要动机是可伸缩性。
mqtt是一种具有轻量级客户机/消息代理通信公共规范的协议,允许发布/订阅交换。客户机库和代理的多个实现(mosquitto、jorammq…)存在并且几乎是兼容的。mqtt只指定了传输,模糊地指定了应用程序部分(即,如何处理和可能存储数据,如何授权客户机……)。该规范不清楚主题上使用的数据是实时的还是可能是持久的。规范没有说明实现mqtt的消息代理可以/应该如何扩展。
另一方面,apachekafka是一个基于内部“提交日志”的消息代理:它的重点是在磁盘上存储大量数据,并允许实时或更高版本的消费(只要磁盘上仍然有可用的数据)。它被设计成可部署为多个节点的集群,具有良好的可伸缩性。Kafka使用自己的网络协议。
所以这里比较两个不同的东西:一个标准的pub/sub协议(有多个实现)和一个特定的消息存储/分发软件,vaguley属于同一个家族,有自己的协议。
我想说的是,如果你需要存储大量的消息,以确保批处理,看看Kafka更多。如果您有许多客户机/应用程序在许多独立主题上实时交换消息,请更多地了解mqtt(甚至amqp)messagebroker实现。

相关问题