文章目录
前言
这是一个MQ的系列文章,主要由MQ的基础认识到深入了解,和针对不同业务对MQ的技术选型问题。通过文章了解不同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选择推荐
(1)中小型软件公司,建议选RabbitMQ.
1.支持高并发
2.管理界面友好
3.社区活跃,一般中小公司都选择该MQ进行开发,碰见bug在网上也能较快找到
4.消息时效性最高-微秒级
(2)大型软件公司,建议选择 RocketMQ
1.单机的吞吐量最高
2.消息可靠性极高,理论不会丢失。如有对消息可靠性有要求,那么RocketMQ首选
3.基于java开发,可以定制化开发
4.稳定性极好,阿里双11年年帮我们测试
(3)大型数据型公司,建议选Kafka
1.如果由日志采集功能、实时计算-Kafka首选
2.吞吐量极高
3.适合大数据,专门用于处理数据