[英]What's the difference between RabbitMQ and kafka?
在不同的情况下哪个会更好?
我知道 RabbitMQ 是基于 AMQP 协议的,并且为开发者提供了可视化。
正如您所指出的,RabbitMQ 是 AMQP 的一种实现。 AMQP 是一种起源于金融行业的消息传递协议。 它的核心隐喻是消息、交换和队列。
Kafka 被设计为一个日志结构的分布式数据存储。 它具有使其适合用作消息传递系统的一部分的功能,但它也可以适应其他用例,例如流处理。 它起源于 LinkedIn,其核心隐喻是消息、主题和分区。
主观上,我发现 RabbitMQ 使用起来更愉快:它基于 Web 的管理工具很好; 在创建、删除和配置队列和交换方面几乎没有摩擦。 许多语言的库支持都很好。 在其默认配置中,Rabbit 仅将消息存储在内存中,延迟很低。
Kafka 更年轻,工具感觉更笨重,并且它对非 JVM 语言的支持相对较差,尽管这正在变得更好。 另一方面,它在面对网络分区和broker丢失时有更强的保证,并且由于它被设计为尽快将消息移动到磁盘,它可以在典型的部署中容纳更大的数据集。 (Rabbit 可以将消息分页到磁盘,但有时性能不佳)。
在任何一种情况下,您都可以设计直接(一:一)、扇出(一:多)和发布-订阅(多:多)通信模式。
如果我正在构建一个需要缓冲大量传入数据并具有强大持久性保证的系统,我肯定会选择 Kafka。 如果我正在使用 JVM 语言或需要对数据进行一些流处理,那只会加强选择。
另一方面,如果我有一个用例,我重视延迟而不是吞吐量,并且可以处理瞬态消息的丢失,我会选择 Rabbit。
卡夫卡:
兔MQ:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.