前言

这是一个MQ的系列文章,主要由MQ的基础认识到深入了解,和针对不同业务对MQ的技术选型问题。通过文章了解不同MQ的各种区别,和使用MQ会存在的一些问题。

入门篇:MQ基础认识
基础篇:MQ组件优劣势比较
晋级篇:MQ如何保证消息队列高可用

1.文字总结

1.1 ActiveMQ

优点

  • 单机吞吐量:万级
  • topic数量都吞吐量的影响:
  • 时效性:ms级
  • 可用性:高,基于主从架构实现高可用性
  • 消息可靠性:有较低的概率丢失数据
  • 功能支持:MQ领域的功能极其完备

缺点

  • 社区维护较少,官方版本
  • 在大规模吞吐下性能较差

1.2 Kafka

优点

  • 单机吞吐量:十万级
  • 专为大数据准备,数据采集、传输、存储
  • 可用性:高,kafka是分布式

缺点

  • 社区更新较慢
  • 支持消息顺序,但一台代理服务器宕机会导致消息乱序
  • 使用轮询,消息的实时性取决于轮询间隔时间
  • 消息有可能会被重复消费

1.3 RabbitMQ

优点

  • 由于是erlang语言开发,性能较好,支持高并发
  • 中小公司都选择它
  • 时效性最高
  • 社区活跃性高
  • 管理界面友好

缺点

  • 由于是erlang语言开发,不能定制开发。较难维护,不利于二次开发
  • 吞吐量较低

1.4 RocketMQ

优点

  • 阿里出品,基于java语言。已在阿里中订单、交易、充值、流计算各种高并发场景中使用
  • 单机吞吐量:最高(十万级)
  • 消息可靠性:那是相当可靠,杠杠的
  • 可以自己进行定制化开发

缺点

  • 支持命令行界面,可视化页面不太友好
  • 社区活跃性一般

2.MQ选择推荐

中小型软件公司,建议选RabbitMQ

  1. 支持高并发
  2. 管理界面友好
  3. 社区活跃,一般中小公司都选择该MQ进行开发,碰见bug在网上也能较快找到
  4. 消息时效性最高-微秒级

大型软件公司,建议选择 RocketMQ

  1. 单机的吞吐量最高
  2. 消息可靠性极高,理论不会丢失。如有对消息可靠性有要求,那么RocketMQ首选
  3. 基于java开发,可以定制化开发
  4. 稳定性极好,阿里双11年年帮我们测试

大型数据型公司,建议选Kafka

  1. 如果由日志采集功能、实时计算-Kafka首选
  2. 吞吐量极高
  3. 适合大数据,专门用于处理数据