RabbiMQ与卡夫卡之间的区别是什么?

时间:2017-06-09 07:48:25

标签: rabbitmq apache-kafka

哪种情况在不同情况下会更好?

我知道RabbitMQ基于AMQP协议,并且可以为开发人员提供可视化。

1 个答案:

答案 0 :(得分:2)

RabbitMQ,正如您所说,是AMQP的一个实现。 AMQP是一种起源于金融行业的消息传递协议。它的核心隐喻是消息,交换和队列。

Kafka被设计为日志结构的分布式数据存储区。它具有适合用作消息传递系统一部分的功能,但它也可以适应其他用例,如流处理。它起源于LinkedIn,其核心隐喻是消息,主题和分区。

主观上,我觉得使用RabbitMQ更加愉快:它基于网络的管理工具很好;在创建,删除和配置队列和交换时几乎没有摩擦。图书馆支持很多语言都很好。与其默认配置一样,Rabbit仅将消息存储在内存中,延迟时间很短。

Kafka更年轻,工具感觉更笨重,并且在非JVM语言中支持相对较差,尽管这种情况越来越好。另一方面,它在面对网络分区和代理丢失时具有更强的保证,并且由于它旨在尽快将消息移动到磁盘,因此它可以在典型部署中容纳更大的数据集。 (Rabbit可以将消息分页到磁盘,但有时候效果不佳)。

在任何一种情况下,您可以设计直接(一个:一个),扇出(一个:多个)和发布 - 子(多个:多个)通信模式。

如果我正在构建一个需要缓冲大量传入数据且具有强大耐久性保证的系统,我肯定会选择Kafka。如果我使用JVM语言或需要对数据进行一些流处理,那只会加强选择。

另一方面,如果我有一个用例,其中我重视吞吐量的延迟并且可以处理瞬态消息的丢失,我会选择Rabbit。

相关问题