Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?

文章对比了Kafka、ActiveMQ、RabbitMQ和RocketMQ在吞吐量、持久化、集群方式、社区成熟度等方面的优缺点。ActiveMQ和RabbitMQ在某些方面存在局限,RocketMQ因阿里巴巴背景受到青睐,而Kafka在大数据实时计算和日志采集场景中是标准选择。建议中小型公司选择RabbitMQ,大型公司考虑RocketMQ。
摘要由CSDN通过智能技术生成

Kafka、ActiveMQ、RabbitMQ、RocketMQ 有

什么优缺点?

ActiveM

Q

RabbitM

Q

RocketM

Q

Kafka

ZeroMQ

单机吞吐


RabbitM Q低

2.6w/s(消息做持久化)

11.6w/s

17.3w/s

29w/s

开发语言

Java

Erlang

Java

Scala/Jav

a

C

主要维护

Apache

Mozilla/S

pring

Alibaba

Apache

iMatix,创始人已去世

成熟度

成熟

成熟

开源版本

不够成熟

比较成熟

只有C、PHP等版本成熟

订阅形式

点对点
(p2p)、广播(发布-订阅)

提供了4种:
direct, topic

基于
topic/me ssageTag以及按照

基于topic以及按照topic进行正则匹配

点对点

(p2p)

,Headers和
fanout。fanout就是广播模式

消息类
型、属性进行正则匹配的发布订阅模式

的发布订

阅模式

持久化

支持少量

堆积

支持少量

堆积

支持大量

堆积

支持大量

堆积

不支持

顺序消息

不支持

不支持

支持

支持

不支持

性能稳定

一般

较差

很好

集群方式

支持简单集群模
式,比
如’主-
备’,对高级集群模式支持不好。

支持简单集群,'复制’模
式,对高级集群模式支持不好。

常用 多
对’Mast er-
Slave’ 模式,开源
版本需手
动切换
Slave变成Master

天然
的‘Lead er-
Slave’无状态集
群,每台
服务器既
是Master也是Slave

不支持

管理界面

一般

较好

一般

综上,各种对比之后,有如下建议:
一般的业务系统要引入 MQ,最早大家都用 ActiveMQ,但是现在确实大家用的不多了,没经过大规模吞吐量场景的验证,社区也不是很活跃,所以大家还是算了吧,我个人不推荐用这个了;
后来大家开始用 RabbitMQ,但是确实 erlang 语言阻止了大量的 Java 工程师去深入研究和掌控它,对公司而言,几乎处于不可控的状态,但是确实人家是开源的,比较稳定的支持,活跃度也高;
不过现在确实越来越多的公司会去用 RocketMQ,确实很不错,毕竟是阿里出品,但社区可能有突然黄掉的风险(目前 RocketMQ 已捐给 Apache,但 GitHub 上的活跃度其实不算高)对自己公司技术实力有绝对自信的,推荐用 RocketMQ,否则回去老老实实用 RabbitMQ 吧,人家有活跃的开源社区,绝对不会黄。

所以中小型公司,技术实力较为一般,技术挑战不是特别高,用 RabbitMQ 是不错的选择;大型公司,基础架构研发实力较强,用 RocketMQ 是很好的选择。

如果是大数据领域的实时计算、日志采集等场景,用 Kafka 是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄,何况几乎是全世界这个领域的事实性规范。

KafkaActiveMQRabbitMQRocketMQ 都是常用的消息中间件,它们各自有着不同的优缺点Kafka 优点: 1. 高吞吐量,能够支持每秒钟数百万的消息。 2. 支持分布式部署,易于扩展。 3. 消息持久化,支持数据备份和故障恢复。 4. 支持消息批量处理,提高了消息传输的效率。 Kafka 缺点: 1. 消息顺序不确定,不适合要求消息顺序的场景。 2. 无法保证消息的可靠性传输,需要使用复杂的消息确认机制。 3. 不支持消息的预取和预处理。 ActiveMQ 优点: 1. 支持多种消息协议,包括 JMS、AMQP、STOMP 等。 2. 支持分布式部署,易于扩展。 3. 支持消息持久化,支持数据备份和故障恢复。 4. 支持消息过滤和转换功能。 ActiveMQ 缺点: 1. 性能相对较差,不适合高吞吐量的场景。 2. 部署和维护相对较为复杂。 RabbitMQ 优点: 1. 支持多种消息协议,包括 AMQP、MQTT 等。 2. 支持消息持久化,支持数据备份和故障恢复。 3. 支持高可用集群,能够保证消息的高可靠性。 4. 支持消息事务和确认机制。 RabbitMQ 缺点: 1. 性能相对较差,不适合高吞吐量的场景。 2. 部署和维护相对较为复杂。 RocketMQ 优点: 1. 高吞吐量,能够支持每秒钟数百万的消息。 2. 支持分布式部署,易于扩展。 3. 支持消息持久化,支持数据备份和故障恢复。 4. 支持消息顺序传输和消息事务。 RocketMQ 缺点: 1. 部署和维护相对较为复杂。 2. 不支持多种消息协议,只支持自身的协议。 3. 社区生态相对较弱。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知一NN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值