在不同的情景下,哪一种更公平?我知道RabbitMQ是基于AMQP协议的,并且对开发人员具有可视化。
vx6bjr1n1#
RabbitMQ是AMQP的一个实现,AMQP是一个起源于金融行业的消息传递协议,它的核心隐喻是消息、交换和队列。Kafka被设计成一个日志结构的分布式数据库,它的特性使它适合作为消息系统的一部分,但它也可以适应其他用例,如流处理。它起源于LinkedIn,其核心隐喻是消息、主题和分区。主观上,我觉得RabbitMQ更易于使用:它基于网络的管理工具很好;在创建、删除和配置队列和交换时几乎没有冲突。2库支持在许多语言中都很好。3因为在它的默认配置中Rabbit只在内存中存储消息,所以延迟很低。Kafka更年轻,工具感觉更笨重,而且它在非JVM语言中的支持相对较差,尽管这一点正在变得更好。另一方面,它在面对网络分区和代理丢失时有更强的保证,而且由于它的设计是为了尽快将消息移动到磁盘,它可以在典型的部署中容纳更大的数据集。(Rabbit可以将消息分页到磁盘,但有时它的性能并不好)。在这两种模式中,您都可以设计直接(一对一)、扇出(一对多)和发布-订阅(多对多)通信模式。如果我正在构建一个需要缓冲大量传入数据并具有强大持久性保证的系统,我肯定会选择Kafka。如果我正在使用JVM语言或需要对数据进行一些流处理,这只会加强我的选择。另一方面,如果我有一个用例,其中我重视延迟而不是吞吐量,并且可以处理瞬时消息的丢失,那么我会选择Rabbit。
vfhzx4xs2#
Kafka:
兔子MQ:
2条答案
按热度按时间vx6bjr1n1#
RabbitMQ是AMQP的一个实现,AMQP是一个起源于金融行业的消息传递协议,它的核心隐喻是消息、交换和队列。
Kafka被设计成一个日志结构的分布式数据库,它的特性使它适合作为消息系统的一部分,但它也可以适应其他用例,如流处理。它起源于LinkedIn,其核心隐喻是消息、主题和分区。
主观上,我觉得RabbitMQ更易于使用:它基于网络的管理工具很好;在创建、删除和配置队列和交换时几乎没有冲突。2库支持在许多语言中都很好。3因为在它的默认配置中Rabbit只在内存中存储消息,所以延迟很低。
Kafka更年轻,工具感觉更笨重,而且它在非JVM语言中的支持相对较差,尽管这一点正在变得更好。另一方面,它在面对网络分区和代理丢失时有更强的保证,而且由于它的设计是为了尽快将消息移动到磁盘,它可以在典型的部署中容纳更大的数据集。(Rabbit可以将消息分页到磁盘,但有时它的性能并不好)。
在这两种模式中,您都可以设计直接(一对一)、扇出(一对多)和发布-订阅(多对多)通信模式。
如果我正在构建一个需要缓冲大量传入数据并具有强大持久性保证的系统,我肯定会选择Kafka。如果我正在使用JVM语言或需要对数据进行一些流处理,这只会加强我的选择。
另一方面,如果我有一个用例,其中我重视延迟而不是吞吐量,并且可以处理瞬时消息的丢失,那么我会选择Rabbit。
vfhzx4xs2#
Kafka:
兔子MQ: