Kafka、RabbitMQ、RocketMQ 之间的区别是什么 ? - 知乎

Kafka和RabbitMQ的区别:

RabbitMQ 有这么个特性,它在官方文档就声明了自己是不保证多线程消费同一个队列的消息,一定保证顺序的。而不保证的原因,是因为多线程时,当一个线程消费消息报错的时候,RabbitMQ 会把消费失败的消息再入队,此时就可能出现乱序的情况。

用 RabbitMQ,出现了三个问题:

  1. 为了实现发布订阅功能,从而使用的消息复制,会降低性能并耗费更多资源
  2. 多个消费者无法严格保证消息顺序
  3. 大量的订单集中在一个队列,吞吐量受到了限制

那么 Kafka 怎么样呢?Kafka 正好在这三个问题上,表现的要比 RabbitMQ 要好得多。

首先,Kafka 的发布订阅并不会复制消息,因为 Kafka 的发布订阅就是消费者直接去获取被 Kafka 保存在日志文件中的消息就好。无论是多少消费者,他们只需要主动去找到消息在文件中的位置即可。

其次,Kafka 不会出现消费者出错后,把消息重新入队的现象。

最后,Kafka 可以对订单进行分区,把不同订单分到多个分区中保存,这样,吞吐量能更好。

所以,对于这个需求 Kafka 更合适

Kafka采用拉取(Pull)方式消费消息,吞吐量相对更高,适用于海量数据收集与传递场景,例如日志采集和集中分析。

RabbitMQ在吞吐量方面略有逊色,但支持更多的消息队列功能。

RocketMQ出自 阿里公司的开源产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一些改进。在阿里集团被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等场景。

以下从性能、数据可靠性、服务可用性、功能等方面给出具体的对比分析,供用户选型参考。

性能

消息中间件的性能主要衡量吞吐量,Kafka的吞吐量比RabbitMQ要高出1~2个数量级,RabbitMQ的单机QPS在万级别,Kafka的单机QPS能够达到百万级别。RocketMQ单机写入TPS单实例约7万条/秒,单机部署3个Broker,可以跑到最高12万条/秒,消息大小10个字节,Kafka如果开启幂等、事务等功能,性能也会有所降低。

数据可靠性

Kafka与RabbitMQ都具备多副本机制,数据可靠性较高。RocketMQ支持异步实时刷盘,同步刷盘,同步Replication,异步Replication。

服务可用性

Kafka采用集群部署,分区与多副本的设计,使得单节点宕机对服务无影响,且支持消息容量的线性提升。RabbitMQ支持集群部署,集群节点数量有多种规格。RocketMQ是分布式架构,可用性高。

功能

Kafka与RabbitMQ都是比较主流的两款消息中间件,具备消息传递的基本功能,但在一些特殊的功能方面存在差异,RocketMQ在阿里集团内部有大量的应用在使用。

Kafka、RabbitMQ、RocketMQ 之间的区别是什么 ?相关推荐

  1. 消息中间件(Kafka/RabbitMQ)收录集

    本篇主要整理工作中遇到的一些消息中间件的相关知识,包括Kafka, RabbitMQ, RocketMQ, ActiveMQ等,不排除收录其他消息中间件的可能. 这里会持续收录相关知识,包括安装.部署 ...

  2. 消息中间件合集:MQ(ActiveMQ/RabbitMQ/RocketMQ)+Kafka+笔记

    最近有好多朋友都去投岗秋招提前批,面完回来跟我说碰到消息中间件一类的问题就挂了.额,有点不知所措,于是乎小编就想着做一次消息中间件的专题,归类整理了MQ(ActiveMQ/RabbitMQ/Rocke ...

  3. 惊了 消息中间件合集:MQ(ActiveMQ/RabbitMQ/RocketMQ)+Kafka+笔记

    最近有好多朋友都去投岗秋招提前批,面完回来跟我说碰到消息中间件一类的问题就挂了. 附面试思维导图: 额,有点不知所措,于是乎小编就想着做一次消息中间件的专题,归类整理了MQ( ActiveMQ/Rab ...

  4. 朱大能求职之旅-为什么使用消息队列?消息队列有什么优缺点?Kafka/Activemq/Rabbitmq/Rocketmq优缺点对比?

    1. 面试题 为什么使用消息队列啊?消息队列有什么优点和缺点啊?kafka.activemq.rabbitmq.rocketmq都有什么区别以及适合哪些场景? 2. 面试官心理分析 其实面试官主要是想 ...

  5. 消息中间件系列(八):Kafka、RocketMQ、RabbitMQ等的优劣势比较

    在高并发业务场景下,典型的阿里双11秒杀等业务,消息队列中间件在流量削峰.解耦上有不可替代的作用. 之前介绍了MQ消息队列的12点核心原理总结,以及如何从0到1设计一个MQ消息队列,以及RPC远程调用 ...

  6. 深入分析零拷贝的原理,彻底掌握Netty、Kafka、RocketMQ高效率读写的秘诀

    文章目录 一.前言 二.纠正一些网络上流传的错误说法 2.1.错误说法一:零拷贝就是零复制或者零拷贝技术没有进行数据的复制操作,所以比较快. 2.2.错误说法二:DMA技术诞生后,零拷贝基于DMA,实 ...

  7. Kafka和RocketMQ底层存储:零拷贝技术

    零拷本相关 <[转]零拷贝的实现原理> <[转]零拷贝的实现原理> <搞懂Linux零拷贝,DMA> <通过零拷贝进行有效的数据传输(java.c)> ...

  8. 消息中间件学习总结(11)——Kafka与RocketMQ的Topic数量对单机性能的影响比较分析

    引言 上一期我们对比了三类消息产品(Kafka.RabbitMQ.RocketMQ)单纯发送小消息的性能,受到了程序猿们的广泛关注,其中大家对这种单纯的发送场景感到并不过瘾,因为没有任何一个网站的业务 ...

  9. [html] 本地存储和cookie之间的区别是什么?

    [html] 本地存储和cookie之间的区别是什么? 1.储存数据的大小不一样 2.cookie会被每次携带在请求中,而storage不会,只会存储在客户端. 个人简介 我是歌谣,欢迎和大家一起交流 ...

最新文章

  1. 如何使用脚本控件的函数调用
  2. bzoj 1598: [Usaco2008 Mar]牛跑步 [k短路 A*] [学习笔记]
  3. Kappa电商负责人顾皓澜:电商业务一直保持盈利
  4. php 读取文件fread,PHP: 读取文件 fgets 和 fread 的差异
  5. pandas处理丢失数据与数据导入导出
  6. 阿里云服务器mysql内存限制_高性能的MySQL(8)优化服务器配置一内存
  7. HDOJ 2795 Billboard
  8. 实例化讲解 RunLoop
  9. SQLite(3) Windows安装小结
  10. 程序员必知3大查找(转)
  11. concurrenthashmap获取不到_面试必问的ConcurrentHashMap
  12. 安装百度库,C调用Python出错,卸载、再重装消失
  13. .net 获取邮箱邮件列表和内容
  14. html iframe 设置半透明_HTML基础教程:框架实例大合集
  15. 副业 | 程序员开启副业之路经验之谈!
  16. math: 雅可比矩阵 黑塞矩阵
  17. 《C语言》2022山西专升本C语言知识点
  18. IIS站点无法启动,万维网发布服务无法开机启动解决办法
  19. 前端学习笔记 - promise是什么?能解决什么问题?
  20. 星星之火OIer:总分题解

热门文章

  1. SDUT 2022 Summer Individual Contest - 12(for 21)
  2. 【职场】帮你.帮我和Show. Me. The. Money.
  3. 1.6/1.7 配置ip
  4. mysql建库语句if exist_SQL中if exists用法细节
  5. 计算机基础理论知识[转]
  6. angular官网-指令
  7. 络达开发-如何在工程中修改参数
  8. python 抖音采集_抖音 数据自动化采集(多开)
  9. 嵌入式从业者的8年工作经历
  10. 类封装继承接口抽象类综合测试