概述

现在市面上比较主流的四个MQ消息队列中间件:RabbitMQ、RocketMQ、ActiveMQ、Kafka;

消息中间件的核心组件

核心组件基本上所有的消息中间件都是相同的,或许只是命名不同;

1 Broker(消息服务器)

消息服务器是消息中间件中,用于接收和转发消息的核心组件;

2 Producer(消息生成者)

负责生成消息并将消息传输到Broker

3 Conumer(消息消费者)

负责从Broker获取消息并消费处理

4 Topic(消息主题)

主题是消息传递过程中,生产者给指定生成者传递消息的标识;先由消费者订阅该主题的队列,再由消息生成者向该主题传递消息;

5 Queue(消息队列)

消息队列是消息存放的地方;当生产者向Broker传递消息后,消息服务器会将消息存放到指定topic的队列中等待消费者消费;

6 Message(消息体)

消息体,就是承载消息的主体;其中包含了所需要传递的消息内容。

消息中间件的优势

  1. 系统解藕
  2. 异步处理
  3. 并发缓冲

比较

吞吐量

万级的 ActiveMQ 和 RabbitMQ 的吞吐量(ActiveMQ 的性能最差)要比 十万级甚至是百万级的 RocketMQ 和 Kafka 低一个数量级。

可用性

都可以实现高可用。ActiveMQ 和 RabbitMQ 都是基于主从架构实现高可用性。RocketMQ 基于分布式架构。 kafka 也是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用

时效性

RabbitMQ 基于erlang开发,所以并发能力很强,性能极其好,延时很低,达到微秒级。其他三个都是 ms 级。

功能支持

除了 Kafka,其他三个功能都较为完备。 Kafka 功能较为简单,主要支持简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模使用,是事实上的标准

消息丢失

ActiveMQ 和 RabbitMQ 丢失的可能性非常低, RocketMQ 和 Kafka 理论上不会丢失。

总结

ActiveMQ 的社区算是比较成熟,但是较目前来说,ActiveMQ 的性能比较差,而且版本迭代很慢,不推荐使用。

RabbitMQ 在吞吐量方面虽然稍逊于 Kafka 和 RocketMQ ,但是由于它基于 erlang 开发,所以并发能力很强,性能极其好,延时很低,达到微秒级。但是也因为 RabbitMQ 基于 erlang 开发,所以国内很少有公司有实力做erlang源码级别的研究和定制。如果业务场景对并发量要求不是太高(十万级、百万级),那这四种消息队列中,RabbitMQ 一定是你的首选。如果是大数据领域的实时计算、日志采集等场景,用 Kafka 是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄,何况几乎是全世界这个领域的事实性规范。

RocketMQ 阿里出品,Java 系开源项目,源代码我们可以直接阅读,然后可以定制自己公司的MQ,并且 RocketMQ 有阿里巴巴的实际业务场景的实战考验。RocketMQ 社区活跃度相对较为一般,不过也还可以,文档相对来说简单一些,然后接口这块不是按照标准 JMS 规范走的有些系统要迁移需要修改大量代码。还有就是阿里出台的技术,你得做好这个技术万一被抛弃,社区黄掉的风险,那如果你们公司有技术实力我觉得用RocketMQ 挺好的

kafka 的特点其实很明显,就是仅仅提供较少的核心功能,但是提供超高的吞吐量,ms 级的延迟,极高的可用性以及可靠性,而且分布式可以任意扩展。同时 kafka 最好是支撑较少的 topic 数量即可,保证其超高吞吐量。kafka 唯一的一点劣势是有可能消息重复消费,那么对数据准确性会造成极其轻微的影响,在大数据领域中以及日志采集中,这点轻微影响可以忽略这个特性天然适合大数据实时计算以及日志收集。

4大MQ消息队列的比较相关推荐

  1. 阿里云ACE共创空间——MQ消息队列产品测试

    一.产品背景 消息队列是阿里巴巴集团自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息订阅和发布.消息轨迹查询.定时(延时)消息.资源统计.监控报警等一系列消息云服务,是企业级互联网架 ...

  2. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  3. MQ消息队列产品测试

    2019独角兽企业重金招聘Python工程师标准>>> 一.产品背景 消息队列是阿里巴巴集团自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息订阅和发布.消息轨迹查询 ...

  4. MQ(消息队列)常见的应用场景解析

    MQ(消息队列)常见的应用场景解析 原文:MQ(消息队列)常见的应用场景解析 前言 提高系统性能首先考虑的是数据库的优化,之前一篇文章<数据库的使用你可能忽略了这些>中有提到过开发中,针对 ...

  5. MQ消息队列中间件:

    MQ消息队列中间件: 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发信息,不需要马上回复. 同步调用的优点: 时效性较强,可以立即得到结果 同步调用的问题: ...

  6. MQ消息队列详解、四大MQ的优缺点分析

    MQ消息队列详解.四大MQ的优缺点分析 前言 面试题切入 面试官心理分析 面试题剖析 ①为什么要使用MQ 系统解耦 异步调用 流量削峰 消息队列的优缺点 四大主流MQ(kafka.ActiveMQ.R ...

  7. MQ消息队列的常见用法

    消息队列MQ是分布式中重要的组件 目前常见的消息队列有三种:ActiveMQ,RabbitMQ,Kafka 今天我想来梳理一下MQ消息队列的具体常见用法: 1.异步处理 用户注册之后,需要发短信和加积 ...

  8. MQ消息队列的重复消费问题的通用解决办法以及幂等性的原理

    详细介绍了MQ消息队列重复消费的原因,以及通过保证幂等性来避免重复消费带来的问题. 文章目录 1 至少一次 2 重复消费的原因 3 幂等性处理重复消费 1 至少一次 消息领域有一个对消息投递的QoS定 ...

  9. 多维度对比5款主流分布式MQ消息队列,妈妈再也不担心我的技术选型了

    1.引言 对于即时通讯网来说,所有的技术文章和资料都在围绕即时通讯这个技术方向进行整理和分享,这一次也不例外.对于即时通讯系统(包括IM.消息推送系统等)来说,MQ消息中件间是非常常见的基础软件,但市 ...

  10. MQ消息队列之前置知识

    目录 一.前置知识 二.MQ前置知识 1.MQ作用 2.MQ对比 3.MQ的缺点 4.产品选型 一.前置知识 当今互联网项目微服务架构成为主流,使用微服务架构,在高并发场景下,服务之间的通信问题是我们 ...

最新文章

  1. jQuery.delegate() 函数详解
  2. 搭建好看的静态博客(使用Hexo进行搭建)
  3. Linux 下升级 python2 到python3
  4. 一元二次方程python脚本_Python实现求解一元二次方程的方法示例
  5. Spring Boot后台启动不打印nohup.out
  6. ps2021神经ai滤镜无法使用,ps2021没法用神经元滤镜
  7. 站在巨人的肩膀 门卫思想
  8. 2018.6清北学堂day6上午
  9. 如何缩减XFS分区格式的根目录
  10. 香山处理器仿真环境搭建
  11. c语言单价英文,英文词汇大全:常见价格及费用词语
  12. js 颜色值转换 普通颜色转透明颜色值
  13. 工业虚拟现实解决方案
  14. Java学成什么样,可以出去找实习工作?
  15. 使用docsify搭建在线文档中心
  16. 通过一个无人机代码例程学会ardunio
  17. 教你怎么在Pycharm上安装Manim(Pycharm+Manim)
  18. matplotlib: 绘制平面图/表格
  19. 培训了计算机 自我总结怎么写,电脑培训的自我鉴定范文
  20. 三原色光模式(RGB color model)的颜色融合,C#代码

热门文章

  1. 蓝桥杯嵌入式备赛手册
  2. PNG隐写入门赛 WP
  3. CCA算法 matlab,典型相关分析(CCA)附算法应用及程序
  4. 环形电流计算公式_辨析!环形差模电感饱和电流的计算公式是什么?
  5. jq ui 日历控件
  6. php标题伪原创,火车头伪原创插件PHP版,如何在标题前面插入关键词?(悬赏1元) - 搜外SEO问答...
  7. 多变量微积分笔记22——空间曲面的通量
  8. FreeCAD源码分析:Assembly3模块
  9. 用SmartUpload实现文件上传,下载,删除
  10. 北斗导航 | 北斗卫星导航系统用户终端通用数据接口