主流 MQ 的关键性能指标

常用消息队列(MQ)的“数量级”通常围绕吞吐量(TPS,每秒处理消息数)、消息堆积能力、延迟三个核心指标展开,不同MQ因设计目标(高吞吐、低延迟、高可靠等)不同,数量级差异显著。以下是主流MQ的关键性能指标数量级及影响因素分析:

一、核心性能指标的数量级对比

MQ产品单机吞吐量(TPS)集群吞吐量(TPS)消息堆积能力消息延迟(P99)典型适用场景
Kafka10万-50万(小消息)100万-1000万+亿级-百亿级(TB级)10-100毫秒日志收集、大数据流处理、高吞吐场景
RocketMQ5万-20万50万-500万+亿级-百亿级(TB级)5-50毫秒电商交易、金融支付、高可靠场景
RabbitMQ1万-5万10万-50万百万级-千万级100微秒-10毫秒业务解耦、实时通信(如订单通知)
ActiveMQ1千-5千1万-10万十万级-百万级10-100毫秒传统企业应用(逐步被替代

二、关键指标的细节说明

1. 吞吐量(TPS):消息处理能力的核心指标
  • Kafka
    设计初衷是“高吞吐”,基于“磁盘顺序写+分区并行”机制,小消息(1KB以内)单机TPS可达10万+(优化后甚至50万),集群通过增加分区和节点可线性扩展(如10个节点+100分区,TPS轻松突破100万)。但大消息(10KB以上)会导致吞吐量骤降(可能跌至1万以下)。

  • RocketMQ
    兼顾吞吐与可靠性,单机TPS在5万-20万(小消息),集群通过多Broker和Topic分区扩展(如20个Broker,TPS可达500万)。支持“批量发送”和“异步刷盘”,进一步提升吞吐(但同步刷盘会降低30%+性能)。

  • RabbitMQ
    基于Erlang的轻量级进程模型,更侧重“低延迟”和“路由灵活性”,单机TPS通常在1万-2万(小消息),集群通过镜像队列或普通集群扩展(但受Erlang调度限制,集群TPS难超10万)。复杂路由(如多交换机转发)会显著降低吞吐量(可能跌至几千)。

  • ActiveMQ
    架构较老旧,采用同步IO,单机TPS仅几千,集群扩展能力弱,目前仅在传统系统中少量使用。

2. 消息堆积能力:系统应对流量洪峰的缓冲能力
  • Kafka/RocketMQ
    基于“分区日志文件”存储消息,磁盘利用率高,支持亿级甚至百亿级消息堆积(TB级数据),且堆积后性能衰减小(因读操作通过索引定位,不受堆积量影响)。例如,Kafka单个分区可堆积10亿+消息,全集群(100分区)可达万亿级。

  • RabbitMQ
    消息存储依赖内存+磁盘(持久化时),但内存中维护消息元数据,堆积过多(千万级以上)会导致内存溢出或GC频繁,性能急剧下降(延迟从毫秒级增至秒级),实际业务中通常控制在百万级以内。

  • ActiveMQ
    堆积能力最差,因存储结构低效(基于B树索引),堆积百万级消息后可能出现磁盘IO瓶颈,导致服务卡顿。

3. 延迟(消息从发送到接收的时间差)
  • RabbitMQ
    延迟最低,小消息场景下可做到微秒级(如100-500微秒),因Erlang进程调度高效,且消息路由在内存中完成(非持久化时)。持久化消息延迟会增至毫秒级(1-10毫秒)。

  • Kafka/RocketMQ
    延迟稍高(毫秒级),因消息需写入磁盘(即使异步刷盘也有毫秒级延迟)。Kafka默认延迟10-50毫秒(可通过linger.ms参数调优至1-5毫秒,但会降低吞吐);RocketMQ延迟5-30毫秒,支持“零拷贝”优化进一步降低延迟。

  • ActiveMQ
    延迟最高且不稳定,受消息堆积和IO影响,可能出现100毫秒以上的波动。

三、影响数量级的关键因素

  1. 消息大小:小消息(<1KB)吞吐量远高于大消息(>10KB),例如Kafka处理100B消息的吞吐是10KB消息的10倍以上。
  2. 持久化策略:同步持久化(消息写入磁盘才返回)比异步持久化(先存内存再异步刷盘)吞吐量低30%-50%,但可靠性更高。
  3. 集群规模:Kafka/RocketMQ支持线性扩展(节点越多,吞吐越高),RabbitMQ受限于Erlang架构,扩展效率低。
  4. 路由复杂度:RabbitMQ的交换机绑定、Kafka的分区路由等复杂逻辑会增加延迟,降低吞吐。

总结

选择MQ时需结合业务场景的“吞吐需求”“延迟敏感程度”“堆积能力要求”:

  • 高吞吐、大堆积(如日志、大数据)→ Kafka
  • 高可靠、中吞吐(如金融交易、订单)→ RocketMQ
  • 低延迟、业务复杂(如实时通知、小流量解耦)→ RabbitMQ
  • 传统老旧系统→ ActiveMQ(不推荐新系统使用)。

这些数量级是“理论最优值”,实际生产中需预留30%+余量(因网络、硬件、业务逻辑会消耗性能)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89939.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[NIPST AI]对抗性机器学习攻击和缓解的分类和术语

原文link&#xff1a;https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.100-2e2025.pdf Introduction 人工智能&#xff08;AI&#xff09;系统在过去几年中持续全球扩展。这些系统正在被众多国家开发并广泛部署于各自的经济体系中&#xff0c;人们在生活的许多领域都获得了更多使…

[深度学习] 大模型学习3上-模型训练与微调

在文章大语言模型基础知识里&#xff0c;模型训练与微调作为大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;应用构建的主要方式被简要提及&#xff0c;本系列文章将从技术原理、实施流程及应用场景等维度展开深度解析。相关知识的进一步参考见&#x…

Claude Code 启动提示 Note: Claude Code might not be available in your country. 解决

如下图所示 主播参考了在别的地方看来的解决方案&#xff08;并非主播不想标注来源&#xff0c;主要是忘记是哪里看来的了&#xff0c;下班就忘记了&#xff0c;懒得找了&#x1f62d;&#xff0c;如果后续找到会补上的&#xff09;。 好了&#xff0c;开始正文&#xff0c;开始…

Unity VR多人手术系统恢复3:Agora语音通讯系统问题解决全记录

&#x1f3af; 前言 这是一个Unity多人VR手术模拟项目&#xff0c;已经搁置了近两年时间。最近重新启动了这个项目&#xff0c;然而在恢复过程中却遇到了些的技术障碍。 项目重启遇到的挑战 当我们重新部署和测试系统时&#xff0c;发现原本运行良好的Agora语音通讯功能完全…

sqli-labs靶场通关笔记:第46-53关 order by注入

目录 第46关 order by注入 第47关 闭合的order by注入 第48关 无报错回显的数字型order by注入 第49关 无报错回显的闭合型order by注入 第50关 基于order by的堆叠注入 第51关 闭合的报错注入或堆叠注入 第52关 数字型盲注或堆叠注入 第53关 闭合的盲注或堆叠注入 第…

cdh6.3.2的hive使用apache paimon格式只能创建不能写报错的问题

前言根据官网paimon安装教程&#xff0c;看上去简单&#xff0c;实则报错阻碍使用的信心。 解决方法原带的jars下的zstd开头的包旧了&#xff0c;重新下载zstd较新的包单独放到每个节点的hive/lib下;然后将hdfs yarn用户下的mr-framework.tar.gz中的zstdjar包替换成新的版本。重…

【Vue进阶学习笔记】实现图片懒加载

创建Vue项目 首先确保你已安装Vue CLI&#xff0c;然后创建一个新的Vue 3项目&#xff1a; npm init vuelatest安装依赖 安装vueuse/core库&#xff0c;它提供了useIntersectionObserver组合式API&#xff1a; cnpm install cnpm install vueuse/core创建指令文件夹和文件 在sr…

深入理解 synchronized

深入理解 synchronized 引言&#xff1a;synchronized的核心地位 在Java并发编程中&#xff0c;synchronized关键字是实现线程安全的基石。自JDK 1.0引入以来&#xff0c;它经历了从"重量级锁"到"自适应锁"的进化&#xff0c;如今已成为兼顾安全性与性能的…

C语言字符串相关函数

C语言笔记内容提要数组字符串基本操作字符串相关函数综合案例&#xff1a;学生成绩管理系统数组字符串基本操作在用格式化说明符%s进行输入输出时&#xff0c;其输入输出项均为数组名。但在输入时&#xff0c;相邻两个字符串之间要用空格分隔&#xff0c;系统将自动在字符串后加…

从零开始:用Python库轻松搭建智能AI代理

为什么要关注AI代理&#xff1f; “Agentic AI”&#xff08;智能代理&#xff09;正在悄然改变我们的工作方式。想象一下&#xff0c;一个AI助手不仅能帮你查航班、订机票&#xff0c;还能自动安排行程、发邮件、生成日报——就像一个效率极高的“虚拟助理”团队。 对于测试工…

如何防止GitHub上的敏感信息被泄漏?

如大家所了解的&#xff0c;随着GitHub的用户越来越多&#xff0c;GitHub上的敏感信息被泄漏的问题也越来越严重。那么如何做&#xff0c;才能防止此类事情发生呢&#xff1f;这值得我们探讨。移除并删除敏感信息当我们发现了历史 commit 中包含敏感信息后&#xff0c;第一步便…

船舶机械零件的深孔工艺及检测方法 —— 激光频率梳 3D 轮廓检测

引言船舶机械零件中的深孔结构&#xff08;深径比&#xff1e;15:1&#xff09;直接影响动力系统可靠性&#xff0c;如柴油机缸体深孔、推进轴系润滑油孔等。此类深孔具有孔径大&#xff08;φ10 - 50mm&#xff09;、深度深&#xff08;500 - 2000mm&#xff09;、表面质量要求…

论文Review Lidar 3DGS Splat-LOAM: Gaussian Splatting LiDAR Odometry and Mapping

基本信息 题目&#xff1a;Splat-LOAM: Gaussian Splatting LiDAR Odometry and Mapping 来源&#xff1a;ICCV 2025 学校&#xff1a;Sapienza University of Rome 是否开源&#xff1a;https://github.com/rvp-group/Splat-LOAM 摘要&#xff1a;纯激光3DGS&#xff01;…

MYSQL:数据库约束

文章目录MYSQL&#xff1a;数据库约束&#xff1a;为你的数据上把“安全锁”1. 约束的类型概览2. NOT NULL 非空约束3. DEFAULT 默认值约束4. UNIQUE 唯一约束5. PRIMARY KEY 主键约束5.1 自增主键 AUTO_INCREMENT5.3 复合主键6. FOREIGN KEY 外键约束7. CHECK 约束总结MYSQL&a…

网络数据编码技术及其应用场景的全面解析

网络数据编码技术全景图​编码类型​​编码原理​​适用层​​典型应用场景​​优势​​缺陷​​曼彻斯特编码​电平跳变代表数据位&#xff08;高→低1&#xff0c;低→高0&#xff09;物理层10/100M以太网、RFID标签自同步时钟带宽利用率仅50%​4B/5B编码​4比特映射为5比特物…

RustDesk自建服务器完整部署指南:从零开始到成功连接。成功解决rustdesk报错:未就绪,请检查网络连接

最近需要用到远程工具解决用户问题&#xff0c;todesk总是提示付费&#xff0c;干脆自己使用开源的。当然凡事都有代价。 话费了一个工作日的时间终于搞定了。 本文将详细介绍如何从零开始部署RustDesk自建服务器&#xff0c;实现完全自主可控的远程桌面解决方案。 踩坑 参考…

datasophon安装doris问题排除记录

datasophon安装doris搞了好久才成功&#xff0c;特别记录一下。 多灾多难的安装过程&#xff1a;FE安装 首先&#xff0c;配置界面&#xff0c;要注意两个参数一定要改成正确的网段&#xff0c;否则会被识别成127.0.0.1注意&#xff1a;两个priority_networks 参数必须要改成你…

suricata新增Mysql告警规则处理

suricata新增Mysql告警规则处理协议解析后续处理内容新增规则规则解析关键字新增Setup用于初始化检测项Free用于资源释放AppLayerTxMatch用于协议解析完成后的规则检测针对pcap文件进行检测总结协议解析后续处理内容 经过Mysql协议解析处理流程 介绍&#xff0c;我们在suricat…

使用位运算优化 Vue.js 应用:高效状态管理技巧

在 Vue.js 开发中&#xff0c;位运算&#xff08;Bitwise Operations&#xff09;是一种高效的工具&#xff0c;尤其适用于需要管理大量布尔状态或优化性能的场景。位运算通过操作二进制位来实现状态的存储和检查&#xff0c;相比传统的数组或对象操作&#xff0c;内存占用更低…

【Java SE】Clonable接口和深拷贝

目录 一.Clonable接口 实现步骤&#xff1a; 完整代码&#xff1a; 二.深拷贝 实现步骤&#xff1a; 完整代码&#xff1a; 浅拷贝与深拷贝的对比 使用场景建议 完 浅拷贝&#xff08;Shallow Copy&#xff09;和深拷贝&#xff08;Deep Copy&#xff09;是对象复制的两…