2016-05-23 24 views
6

我正在开发一个移动消息传递应用。我正在通过所需的技术,发现两个MQTT & Apache Kafta。对我而言,两人似乎都以同样的方式做了同样的事情(就订阅&发布到某个主题而言)。MQTT代理和Apache Kafka有什么区别

我听说MQTT适合手机使用,因为它重量很轻?所以基本上这两者之间有什么区别,以及每个人的优势是什么?

+0

Stackoverflow不是要求比较技术的场所 – hardillb

回答

16

kafka背后的主要动机是缩放。

MQTT是一个具有轻量级客户端/消息代理通信公共规范的协议,允许发布/订阅交换。客户端库和代理(Mosquitto,JoramMQ ...)的多种实现存在并且几乎兼容。 MQTT只是指定了传输,并且隐含了应用程序部分(即如何处理和可能存储数据,如何授权客户端......)。规范并不清楚在某个主题上使用的数据是实时的还是可能存在的。该规范没有说明如何实现MQTT的消息代理可以/应该扩展。另一方面,Apache Kafka是基于内部“提交日志”的消息代理:其重点是在磁盘上存储大量数据,并允许实时或稍后使用(只要数据是仍然可用在磁盘上)。它被设计成可以作为多节点的集群部署,具有良好的可扩展性。卡夫卡使用自己的网络协议。

所以你在这里比较两个不同的东西:一个标准的pub/sub协议(有多个实现)和一个特定的消息存储/分发软件,同一个family的vaguley有自己的协议。

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

+0

kafta是诸如whatsapp之类的移动应用程序消息的理想选择吗? – manish

+0

是的,为什么不!它取决于我们如何设计架构.. –

+0

为什么我问,因为我来了解MQTT是'轻量级'和小脚印如此适合移动设备。那么kafta呢? – manish