赞
踩
总得来说,我们需要掌握 RabbitMQ 和 Kafka 的区别、适用于什么场景、以及各自的优劣。
对比项 | kafka | rabbitmq |
---|---|---|
开发语言 | scala,Java | erlang |
是否支持多租户 | 2.x.x支持多租户 | 支持多租户 |
是否支持topic优先级 | 不支持 | 支持 |
是否支持消息全局有序 | 不支持 | 支持 |
是否支持消息分区有序 | 支持 | 支持 |
是否内置监控 | 无内置监控 | 内置监控 |
是否支持多个生产者 | 一个topic支持多个生产者 | |
是否支持多个消费者 | 一个topic支持多个消费者(一个消费者可消费多个分区,一个分区可被多个消费组消费,但同一消费组内仅能有一个消费者同时消费1个分区) | |
是否支持一个分区多个消费者 | 不支持 | 不支持 |
是否支持JMX | 支持 | 不支持(非java语言编写) |
是否支持加密 | 支持 | 支持 |
消息队列协议支持 | 仅支持自定义协议 | 支持AMQP、MQTT、STOMP协议 |
客户端语言支持 | 支持多语言客户端 | 支持多语言客户端 |
是否支持消息追踪 | 不支持消息追踪 | 支持消息追踪 |
是否支持消费者推模式 | 不支持消费者推模式 | 支持消费者推模式 |
是否支持消费者拉模式 | 支持消费者拉模式 | 支持消费者拉模式 |
是否支持广播消息 | 支持广播消息 | 支持广播消息 |
是否支持消息回溯 | 支持消息回溯,因为消息持久化,消息被消费后会记录offset和timstamp | 不支持,消息确认被消费后,会被删除 |
是否支持消息数据持久化 | 支持消息数据持久 | 支持消息数据持久 |
是否支持消息堆积 | 支持消息堆积,并批量持久化到磁盘 | 支持阈值内的消息对接,无法支持较大的消息堆积 |
是否支持流量控制 | 支持控制用户和客户端流量 | 支持生产者的流量控制 |
是否支持事务性消息 | 支持 | 不支持 |
元数据管理 | 通过zookeeper进行管理 | 支持消息数据持久 |
默认服务端口 | 9092 | 5672 |
默认监控端口 | kafka web console 9000;kafka manager 9000; | 15672 |
网络开销 | 相对较小 | 相对较大 |
内存消耗 | 相对较小 | 相对较大 |
cpu消耗 | 相对较大 | 相对较小 |
kafka支持一个消费者可消费多个分区,同一分区仅支持同一消费组下一个消费者,但支持多个消费组消费。
在公司项目中,一般消息量都不大的情况下,推荐大家可以使用 RabbitMQ。消息量起来了可以考虑切换到 Kafka,但是也要根据公司内部对两种 MQ 的熟悉程度来进行选择,避免 MQ 出现问题时无法及时处理。
producer,broker,consumer
kafka和rabbitMQ都有发送到Broker的确认机制。
RabbitMQ和Kafka在设计目标、消息存储、吞吐量、扩展性、消息传递保证以及生态系统等方面都存在显著的差异。选择哪个系统取决于具体的应用场景和需求。如果需要传递实时数据、低延迟和简单的队列模型,RabbitMQ可能更适合;如果处理大量事件流、需要持久化和高吞吐量,并且希望构建大规模的分布式系统,那么Kafka可能更适合。
实际场景选择:在实际生产应用中,通常会使用kafka作为消息传输的数据管道,rabbitmq作为交易数据作为数据传输管道,主要的取舍因素则是是否存在丢数据的可能;rabbitmq在金融场景中经常使用,具有较高的严谨性,数据丢失的可能性更小,同事具备更高的实时性;而kafka优势主要体现在吞吐量上,虽然可以通过策略实现数据不丢失,但从严谨性角度来讲,大不如rabbitmq;而且由于kafka保证每条消息最少送达一次,有较小的概率会出现数据重复发送的情况
在公司项目中,一般消息量都不大的情况下,推荐大家可以使用 RabbitMQ。消息量起来了可以考虑切换到 Kafka,但是也要根据公司内部对两种 MQ 的熟悉程度来进行选择,避免 MQ 出现问题时无法及时处理。
Kafka、RabbitMQ、RocketMQ都是目前广泛使用的消息队列系统,它们在语言、吞吐量、可靠性、使用场景等方面存在一些明显的区别。下面将详细对比这三者的主要差异:
综上所述,Kafka、RabbitMQ和RocketMQ在语言、吞吐量、可靠性、使用场景等方面各有千秋。选择哪个消息队列系统取决于具体的应用场景和需求。
参考 kafka和rabbitmq对比(超详细,从实战维度比较)、RabbitMQ和kafka的区别(详细版)、何时使用Kafka而不是RabbitMQ
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。