Kafka、RocketMQ、RabbitMQ 对比

devtools/2024/12/27 5:38:22/

面试中对 KafkaRocketMQ 、和 RabbitMQ 的对比是常见问题,可以从以下几个维度进行分析:


1️⃣ 基础概念

特性KafkaRocketMQRabbitMQ
开发语言Java + ScalaJavaErlang
定位分布式流处理平台分布式消息中间件高效、可靠的消息队列
消息模型Topic ,基于分区和偏移量Topic/Queue ,基于主题Exchange/Queue ,基于路由键
开源组织Apache Software FoundationApache Software FoundationPivotal Software Foundation

2️⃣ 性能对比

吞吐量

  • Kafka
    • 高吞吐量,适合大数据实时流处理,依赖磁盘顺序写和零拷贝,支持百万级 QPS。
  • RocketMQ
    • 适合高并发场景,QPS 高,性能优于 RabbitMQ,但低于 Kafka。
  • RabbitMQ
    • 使用 AMQP 协议,消息可靠性强,但性能较 Kafka 和 RocketMQ 稍弱。

延迟

  • Kafka
    • 延迟相对较高,适合对吞吐量要求高、延迟不敏感的场景。
  • RocketMQ
    • 延迟在毫秒级,适合金融等对实时性要求高的场景。
  • RabbitMQ
    • 延迟最低,适合对消息实时性要求极高的场景。

3️⃣ 可靠性

特性KafkaRocketMQRabbitMQ
消息丢失通过ACK 、ISR 确保,支持高可靠性通过ACK和主从同步确保通过ACK和镜像队列确保
事务支持支持(但性能会受影响)支持不直接支持,需要业务实现

4️⃣ 使用场景

  • Kafka
    • 日志采集 :大数据和日志实时分析。
    • 流式处理 :适合数据流的分发、分析。
    • 消息队列 :部分场景可作为传统消息队列使用。
  • RocketMQ
    • 电商场景 :如订单状态、库存管理。
    • 金融领域 :对消息可靠性和顺序性要求高。
    • 定时/延迟任务 :支持天然延迟队列。
  • RabbitMQ
    • 即时消息 :如聊天消息。
    • 任务分发 :分布式任务处理。
    • 复杂路由 :通过交换器实现灵活消息路由。

5️⃣ 易用性

特性KafkaRocketMQRabbitMQ
配置难度配置复杂,需掌握分区、副本等概念配置适中配置简单,但需熟悉 AMQP 协议
运维成本高,依赖 Zookeeper(或 Kafka Raft)中,高度兼容 Java 开发者中,需了解 Erlang 生态

总结对比表格 🧾

特性KafkaRocketMQRabbitMQ
吞吐量⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
延迟⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
可靠性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
运维成本⭐⭐⭐⭐⭐⭐⭐⭐⭐
使用场景大数据、日志分析电商、金融、延迟任务实时消息、复杂路由

http://www.ppmy.cn/devtools/145728.html

相关文章

C05S14-MySQL高级语句

一、MySQL高级语句 MySQL的高级语句主要是高级查询语句,实现复杂条件下的数据查询。 1. 单表查询 1.1 ORDER BY排序查询 要对数据进行排序可以使用ORDER BY子句。MySQL的ORDER BY子句可以按照一个或多个列的值进行升序排序(ASC)或降序排序&…

Mimicking-Bench:首个通过模仿大规模人类动作数据学习通用人形机器人场景交互技能的综合基准(具有 11K 对象形状和 23K 人机交互动作)

2024-12-24,由清华大学、Galbot、上海启智研究所和上海人工智能实验室联合创建了Mimicking-Bench数据集,这个数据集首次为通过模仿人类动作学习通用人形机器人场景交互技能提供了大规模的参考,对于机器人学和现实世界应用具有重要意义。 一、…

HUB、交换机、路由器和串口服务器

HUB:HUB是集线器,支持半双工的工作模式,就像对讲机那样。工作在物理层,收到数据后,会向其他端口转发,只是起到“中转站的作用”;而且对带宽是共享的,像河流一样,分的支流…

关于uni-forms组件的bug【提交的字段[‘*‘]在数据库中并不存在】

问题:在使用 uni-forms校验的时候,出来的一个问题,这个字段都没有设置校验的规则,不知道什么原因就出现了下图的问题: 解决办法: 在uni-forms-item 添加key 值就解决了 原因不知道,有大佬发现…

webauthn介绍及应用

1、webauthn概念介绍 官网:https://webauthn.io/ 1.1、什么是webauthn? webauthn即Web Authentication,是一个符合W3C标准的Web认证规范。它通过公私钥加密技术,实现无密码认证,用户仅需通过pin码、指纹、面部识别、…

CI/CD是什么?

CI/CD 定义 CI/CD 代表持续集成和持续部署(或持续交付)。它是一套实践和工具,旨在通过自动化构建、测试和部署来改进软件开发流程,使您能够更快、更可靠地交付代码更改。 持续集成 (CI):在共享存储库中自动构建、测试…

什么,不用 Tomcat 也能运行 Java web?

在 Java web 开发领域,传统的 Tomcat 服务器一直占据着重要地位。但如今,Blade 框架的出现为我们提供了一种全新的开发体验,它无需依赖 Tomcat 便可运行 Java web 应用。 一、Blade 框架简介 是一款轻量级且高性能的 Java web 框架。其设计理…

PPT画图——如何设置导致图片为600dpi

winr,输入regedit打开注册表 按路径找,HKEY_CURRENT_USER\Software\Microsoft\Office\XX.0\PowerPoint\Options(xx为版本号,16.0 or 15.0或则其他)。名称命名:ExportBitmapResolution 保存即可,…