所有分类
  • 所有分类
  • 未分类

RabbitMQ,RocketMQ,Kafka的区别

简介

本文介绍几种MQ(消息队列)的区别,包括:RabbitMQ,RocketMQ,Kafka。

本内容也是Java后端面试中常见的问题。

性能对比

RabbitMQRocketMQkafka
吞吐量万级(5.95w/s)10万级(11.6w/s)10万级(17.3w/s)
时效性微秒级毫秒级。毫秒级。
可用性高。 (主从架构)非常高。(主从架构)非常高。(主从架构)
消息可靠性优化配置后,可做到0丢失优化配置后,可做到0丢失优化配置后,可做到0丢失
性能的稳定性消息堆积时:性能下降。队列较多时:性能稳定。
消息堆积时:性能稳定。
Topic多时分区也多,性能下降。
消息堆积时:性能稳定。

功能对比

RabbitMQRocketMQKafka
使用场景吞吐量中等的应用类业务。吞吐量大的应用类业务。吞吐量大的场景。
比如:日志、大数据量。
延迟消息支持支持。
5.0之前不能自己指定(只能选)
5.0及之后版本支持指定时间。
不支持
只能手写代码间接支持。
主从切换自动切换。自动切换。自动切换。
事务消息支持支持不支持
顺序消费支持。支持。
在顺序消息场景下,消费失败时消费队列将会暂停
支持。
但是一台Broker宕机后,会产生消息乱序
消费失败重试支持支持。
offset存储在broker中
支持。
消息重新消费支持按照时间来重新消息。支持通过修改offset来重新消费。
Broker端消息过滤不支持支持
通过tag过滤,类似于子topic
不支持
消费并行度可一次抓取多条一起消费。
镜像模式下也是从master消费。
顺序消费:消费并行度和分区数一致
乱序消费:消费服务器的消费线程数之和。
消费并行数和分区数一致。
消费方式默认是。(支持推和拉)默认是。(支持推和拉)默认是。(支持推和拉)
批量发送不支持不支持支持
默认生产者缓存、压缩,再批量发送
消息清理支持。支持。支持。

优缺点

RabbitMQRocketMQkafka
优点1、消息延迟最低。1、性能强:吞吐量大,消息堆积或队列很多时性能稳定。单机最高支持5万个队列,复杂不会明显变化。
2、功能强大:多种消费方式、broker消息过滤、消息顺序消费、事务。
1、性能强大:吞吐量最大,消息堆积时性能也很好。
缺点1、吞吐量略差。
2、消息堆积时,性能会明显降低。
3、不支持事务。
1、吞吐量低于kafka。(注意:业务系统用足够,阿里都在用。只是不适合日志等大数据场景)1、消费集群数目要小于分区数目(只增加消费者无法提高消费速度)。
2、topic多时,性能明显降低。单机超过64个队列(分区),负载明显升高,且分区越多,发送消息响应时间变长。
3、支持消息顺序,但一台代理宕机后,会产生消息乱序;
4、功能少:不支持事务 、延迟消息

运维对比

RabbitMQRocketMQkafka
系统维护Erlang语言开发,不利于二开。Java语言开发,利于二开。Scala语言开发,不利于二开。
部署依赖Erlang环境Java环境Kafka2.8之前:依赖Zookeeper
Kafka2.8及之后:无依赖
管理后台官方提供rabbitmqadmin官方提供,rocketmq-console官网不提供,有第三方开源管理工具(Kafka Web Conslole、Kafka Manager)
2

评论4

请先

  1. 这个区别还真多,不太好总结。
    ゞ╃尐沐則颩...o 2024-04-07 1
    • 对。面试时只说出几个重点的就够了
      自学精灵 2024-04-07 1
  2. 社区活跃度--- RocketMQ 写成了“搞”
    珠光2023 2023-12-05 0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录