浅识MQ的 Kafka、ActiveMQ、RabbitMQ、RocketMQ区别

embedded/2025/2/15 18:54:10/

DeepSeek回复:

以下是主流消息队列(MQ)的对比分析,结合核心特性、适用场景和实际案例说明:

一、主流MQ对比分析

维度 Kafka      RabbitMQ   RocketMQ ActiveMQ
所属公司Apache(LinkedIn开源)Pivotal(原属Erlang团队)Apache(阿里巴巴开源)Apache
协议支持自定义协议(TCP)AMQP、STOMP、MQTT自定义协议(TCP)  JMS、AMQP、STOMP  
消息模型发布订阅(多消费者组)点对点、发布订阅(路由复杂)发布订阅(标签过滤)点对点、发布订阅
吞吐量百万级/秒(持久化场景)万级/秒十万级/秒(事务消息场景)万级/秒(非持久化场景)
延迟毫秒级(分区顺序消费)微秒级毫秒级毫秒级
可靠性高(多副本)高(镜像队列)非常高(同步刷盘+多副本)中(依赖配置)
典型场景日志采集、流处理金融交易、复杂路由电商交易、订单处理企业级系统集成
实际案例美团日志系统、Netflix事件总线招商银行核心系统淘宝双11订单系统某航空订票系统

二、核心差异详解

1. Kafka
  • 架构特点:分布式Commit Log设计,通过分区实现水平扩展

  • 优势场景

    • 大数据日志采集(Flink/Spark集成)

    • 实时流处理(Kafka Streams)

    • 事件溯源(如用户行为追踪)

  • 缺陷

    • 单条消息低延迟处理能力较弱

    • 需要Zookeeper协调(新版已移除)

  • 实战案例:在用户画像系统中,使用Kafka收集埋点数据,峰值处理量达200万条/秒

2. RabbitMQ
  • 架构特点:基于Erlang的Actor模型,Exchange-Queue-Binding路由机制

  • 优势场景

    • 复杂路由(如Headers Exchange实现多条件路由)

    • 消息优先级(如VIP客户优先处理)

    • 死信队列(实现延迟队列)

  • 缺陷:集群扩展性较差,海量消息堆积时性能下降

  • 实战案例:在支付系统中使用RabbitMQ实现异步记账,通过死信队列处理超时订单

3. RocketMQ
  • 架构特点:NameServer轻量级注册中心,主从同步架构

  • 优势场景

    • 金融级消息(事务消息+消息轨迹)

    • 顺序消息(如订单状态变更)

    • 定时/延迟消息(精准到秒级)

  • 缺陷:运维复杂度较高,需要监控Broker状态

  • 实战案例:在物流系统中使用顺序消息保证包裹状态变更的严格顺序

4. ActiveMQ
  • 架构特点:经典JMS实现,支持多种协议

  • 优势场景

    • 传统企业系统集成(如跨平台消息)

    • 小型物联网设备通信(MQTT支持)

  • 缺陷:性能瓶颈明显,社区活跃度下降

  • 实战案例:在工业物联网平台中,使用ActiveMQ的MQTT协议连接传感器设备

------------------------------------------------------------------------------------------------

三、其他MQ技术选型

1. Pulsar
  • 特点:计算存储分离架构,支持多租户

  • 场景:混合云场景、多租户SaaS平台

  • 案例:腾讯云TDMQ基于Pulsar构建

2. NSQ
  • 特点:去中心化设计,无单点故障

  • 场景:简单实时消息系统、临时数据流

  • 案例:某直播平台使用NSQ处理弹幕消息

3. 云服务MQ
  • AWS SQS:完全托管,自动扩展

  • Google Pub/Sub:全球消息路由

  • 阿里云MNS:与阿里云生态深度集成

4. Redis Streams
  • 特点:基于内存,轻量级

  • 场景:实时聊天、游戏消息推送

  • 案例:某社交APP使用Redis Streams实现好友消息同步

四、选型决策树

1. **是否需要事务消息**:- 需要 → RocketMQ- 不需要 → 进入下一步2. **消息规模**:- 百万级吞吐 → Kafka/Pulsar- 十万级以下 → 进入下一步3. **路由复杂度**:- 复杂路由 → RabbitMQ- 简单路由 → 进入下一步4. **延迟要求**:- 微秒级 → RabbitMQ/Redis Streams- 毫秒级 → RocketMQ/Kafka5. **云环境**:- AWS → SQS/SNS- 阿里云 → RocketMQ

五、新兴趋势

  1. Serverless MQ:如AWS EventBridge,无需管理基础设施

  2. 物联网专用:EMQ X(支持MQTT 5.0协议)

  3. 多协议网关:HiveMQ(桥接MQTT与Kafka)

通过以上对比可以看出,没有绝对的最优MQ,只有最适合场景的选择。例如在某智慧城市项目中,我们同时使用:

  • Kafka处理交通摄像头日志(高吞吐)

  • RocketMQ处理缴费事务消息(高可靠)

  • Redis Streams推送实时路况(低延迟)

这种混合架构充分发挥了各MQ的优势。

六、注意:持久化策略

        浅聊MQ之Kafka、RabbitMQ、ActiveMQ、RocketMQ持久化策略-CSDN博客

(抱歉,最近在面试,粗糙了些。)

(望各位潘安、各位子健/各位彦祖、于晏不吝赐教!多多指正!🙏)


http://www.ppmy.cn/embedded/162480.html

相关文章

【Python】条件循环

个人主页:Guiat 归属专栏:Python 文章目录 1. 条件语句1.1 if语句1.2 if - else语句1.3 if - elif - else语句 2. 循环语句2.1 for循环2.2 while循环2.3 循环控制语句2.3.1 break语句2.3.2 continue语句2.3.3 else子句 正文 1. 条件语句 1.1 if语句 i…

大模型被偷家?CNN结合多模态!

2025深度学习发论文&模型涨点之—— CNN多模态 卷积神经网络是一种特殊类型的神经网络,其主要结构包括卷积层、池化层、全连接层和输出层。卷积层通过卷积操作学习图像的特征,池化层通过下采样操作减少参数数量,全连接层和输出层通过分类…

DeepSeek整理PDF文档以思维导图方式展示

目录 一、DeepSeek网页版将PDF文档整理成思维导图 二、将输出的markdown代码复制到文本文件中,将文本文件后缀名修改为.md 三、在思维导图中打开md文件 1、思维导图工具软件 2、新建思维导图文件 3、导入markdown的md文件 4、最终生成思维导图文件 5、思维导…

RunLoop 详解

概述: RunLoop 是一个核心的 iOS 机制,它是 事件循环机制 的实现,负责管理线程的执行和调度。RunLoop 能够持续监听输入事件(如用户触摸、定时器、网络请求等)并分发给相应的处理方法,从而保持应用程序持续…

c# sqlite 批量生成insert语句的函数

函数开始 using System; using System.Collections.Generic; using System.Text;public class SqliteHelper {public static List<string> GenerateInsertStatements(string tableName, List<string> columns, List<List<object>> data){List<stri…

vue星空背景组件

组件 <template><div class"starlit_sky"><div class"layer1"></div><div class"layer2"></div><div class"layer3"></div><slot name"contentmain"></slot>…

【工具】在idea运行go后端

场景&#xff1a;从gitee仓库下载一个go语言前后端分离项目&#xff0c;想跑通前后端 ---------------------------------------------------------------------------------------------------------------------- 后端 1.下载插件 在idea的setting里面输入go&#xff0c;…

如何实现对 ELK 各组件的监控?试试 Metricbea

上一章基于 Filebeat 的日志收集使用Filebeat收集文件中的日志&#xff0c;而Metricbeat则是收集服务器存活性监测和系统指标的指标。 1. Filebeat和Metricbeat的区别 特性FilebeatHeartbeat作用收集和转发日志监测服务可用性数据来源服务器上的日志文件远程主机、API、服务主…