一文看常见的消息队列对比

server/2025/2/22 9:03:15/

一、核心特性对比表

维度KafkaRabbitMQRocketMQPulsar
架构设计分布式日志系统,依赖ZooKeeper基于AMQP协议的代理模型主从架构+NameServer协调分层架构(Broker+BookKeeper)
单机吞吐量100万+ TPS5万 TPS50万 TPS150万 TPS
消息延迟毫秒级(非实时场景)微秒级(实时场景)亚毫秒级毫秒级(分层存储优化)
消息持久化磁盘顺序写入内存+磁盘持久化同步刷盘机制分层存储(内存+BookKeeper)
事务支持有限事务分布式事务消息事务消息(2.7.0+)
顺序消息分区内有序队列有序严格全局有序分区有序
多租户原生支持
地理复制MirrorMakerFederation插件跨机房同步原生多集群复制

二、技术特性深度解析

1. Apache Kafka
  • 优势
    • 成熟的流处理生态(Kafka Streams)
    • 与Hadoop/Spark生态无缝集成
    • 超长消息保留(适合日志归档)
  • 局限
    • 扩缩容需重新平衡分区
    • 无原生多租户支持
    • 事务支持需额外组件
  • 场景:用户行为日志采集、IoT设备数据管道
2. RabbitMQ
  • 优势
    • 灵活路由(Headers/Exchange绑定)
    • 死信队列自动重试
    • 完备的MQTT协议支持
  • 局限
    • Erlang技术栈维护成本高
    • 集群规模受限(镜像队列性能损耗)
    • 无原生分布式事务
  • 场景:银行支付回调、ERP系统集成
3. Apache RocketMQ
  • 优势
    • 消息轨迹追踪(排查问题利器)
    • 定时/延时消息(电商订单超时)
    • 阿里双11验证的金融级稳定性
  • 局限
    • 客户端语言支持较少
    • 无内置流计算能力
  • 场景:证券交易撮合、物流状态更新
4. Apache Pulsar
  • 优势
    • 计算存储分离架构(弹性扩容)
    • 分层存储自动降冷(节省成本)
    • 函数计算框架(轻量级流处理)
  • 局限
    • 社区生态成熟度低于Kafka
    • 中文文档较少
  • 场景:多租户SaaS平台、跨国数据同步

三、性能压测数据参考

测试项Kafka 3.3RabbitMQ 3.11RocketMQ 5.0Pulsar 2.11
100字节消息吞吐1.2M/s45K/s850K/s1.8M/s
1KB消息延迟(P99)15ms2ms8ms12ms
10万队列并发能力不支持1.5K队列5K队列100K队列
100GB数据恢复时间30分钟不可恢复15分钟5分钟

四、选型决策树

  1. 是否需要超低延迟(<1ms) → RabbitMQ
  2. 是否涉及金融级事务 → RocketMQ
  3. 是否需要与大数据生态集成 → Kafka
  4. 是否需要云原生多租户 → Pulsar
  5. 是否要求分钟级故障恢复 → Pulsar/RocketMQ


http://www.ppmy.cn/server/169441.html

相关文章

Flask 发送邮件

下载 pip install flask-mail config.py MAIL_SERVER "smtp.qq.com" MAIL_USE_SSL True MAIL_PORT 465 MAIL_USERNAME "xxxxqq.com" MAIL_PASSWORD "xxxxx" MAIL_DEFAULT_SENDER "xxxxqq.com" 引入flask_mail exts.py fro…

【架构】分层架构 (Layered Architecture)

一、分层模型基础理论 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0365cf0bfa754229bdedca6b472bffc7.png 1. 核心定义 分层架构(Layered Architecture)模型是一种常见的软件设计架构,它将软件系统按照功能划分为不同的层次,每个层次都有特定的职责和功能…

Python黑客技术实战指南:从网络渗透到安全防御

&#x1f31f; 嗨&#xff0c;我是Lethehong&#xff01;&#x1f31f; &#x1f30d; 立志在坚不欲说&#xff0c;成功在久不在速&#x1f30d; &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞⬆️留言收藏&#x1f680; &#x1f340;欢迎使用&#xff1a;小智初学…

macos安装jmeter测试软件

java环境安装 a. 验证安装环境 java -version # 如果有版本信息&#xff0c;说明已安装 b. 安装jdk # 安装 Homebrew&#xff08;如未安装&#xff09; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 安装 O…

修改Linux下kernel里ramdisk.img教程

按照以下步骤解包、修改并重新打包 ramdisk.img&#xff1a; 1. 确认文件格式 首先确认 ramdisk.img 的压缩格式&#xff1a; file ramdisk.img如果输出包含 gzip compressed data&#xff0c;则使用 gunzip 解压。如果是其他格式&#xff08;如 LZ4 或未压缩的 cpio&#xf…

在IDEA的Maven中(同步所有Maven项目)和(重新加载所有Maven项目)的区别

特性同步所有 Maven 项目 (Sync All Maven Projects)重新加载所有 Maven 项目 (Reload All Maven Projects)主要作用使 IDEA 项目结构、依赖关系与 pom.xml 文件同步。强制重新读取所有 pom.xml 文件&#xff0c;并重建 IDEA 的 Maven 项目模型。缓存使用 IDEA 缓存的 Maven 项…

论文笔记:Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling

导语 当一个大模型面对给定的算力&#xff0c;是应该更多的用于预训练还是推理&#xff1f;本文尝试回答这个问题。 会议&#xff1a;Arxiv 2024链接&#xff1a;[2408.03314] Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters…

Python collections模块介绍

collections 模块是 Python 标准库中的一个强大工具&#xff0c;提供了多种高级数据结构&#xff0c;扩展了内置的数据类型&#xff08;如 list、dict、set、tuple&#xff09;。这些数据结构可以提高代码的可读性和效率。 1. collections 模块的主要内容 &#xff08;1&…