ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ActiveMQ、RabbitMQ、RocketMQ和kafka都有什么优缺点?

2021-06-08 09:04:34  阅读:382  来源: 互联网

标签:RabbitMQ kafka topic 吞吐量 MQ ActiveMQ 分布式


常见的就大概就是这几种,其他比较冷门的就不说了。

咱们面试的时候大概率会被问你为什么使用某个MQ,而不用其他MQ呢。这时候如果你不知道,回答一个:老大让用了,咱们就用呗。
那这次面试不说凉凉,也肯定是要减分的,因为你在工作中没有自己思考,这样的话就只是搬砖工而已。

下面就用一个表格说一说这几个MQ的优缺点

特性ActiveMQRabbitMQRocketMQkafka
单机吞吐量万级,吞吐量比RocketMQ和kafka要低了一个数量级万级,吞吐量比RocketMQ和kafka要低了一个数量级10万级,RocketMQ也是一种可以支撑高吞吐量的一种MQ10万级,这是kafka最大的优点就是高吞吐量。 一般配合大数据类的系统进行实时数据计算或者日志采集等场景
topic数量对吞吐量的影响topic可以达到几百、几千个的级别,但是吞吐量会有较小幅度的下降 。这是RocketMQ的一个大优势,在同等机器数量下,可以支撑大量的topictopic从几十个到几百个的时候吞吐量会有大幅度的下降,所以在同等机器数量下kafka尽量保证topic数量不要太多,如果要支撑大量的topic,建议增加跟多的主机资源
时效性ms级微秒级,这是RabbitMQ的一大特点,延迟是最低的ms级延迟在ms级以内
可用性高,基于主从架构实现高可用性高,基于主从架构实现高可用性非常高,分布式架构非常高,kafka是分布式的,同一个数据在不同主机备份,即使少数服务宕机也能保证数据不丢失,不会不可用
核心特点MQ领域的功能及其完备基于erlang开发,所以并发能力很强,性能极好延时极低MQ功能较为完善,还是分布式的,拓展性好功能较为简单,支持主要的MQ功能,在大数据领域的实时数据计算和日志采集等领域被大规模使用,是事实上的标准
优劣势总结非常成熟,在业内的大量公司和项目中都有运用。 偶尔会有丢失消息的概率,而且,现在社区的国内应用越来越少。官方现在对ActiveMQ 5.X的维护越来越少,而且确实是基于解耦和异步使用的,较少在大规模吞吐量的使用场景erlang语言开发的,性能极好;而且开源提供的管理界面用起来也很好用,国内近几年互联网公司用RabbitMQ也多了起来。但是问题也在于此,RabbitMQ吞吐量确实会低一些,而且语言是erlang,有能力去做源码优化的公司能有几个。那就只能依赖开源社区的维护和更新修复bug。而且 RabbitMQ集群动态扩展会很麻烦,不过这个应该还好,主要是erlang语言我们很难自己做维护和支持接口简单易用,毕竟是阿里在使用,品牌有保障。 日处理消息可以达到百亿级别之多,可以做到大规模的吞吐,性能也是非常好。分布式扩展方便,社区维护也还行,可靠性和可用性是ok的,还可以支持大规模的topic数量,支持复杂的MQ业务场景。 而且一个很大的优势在于阿里出品的都是java系的,我们可以自己阅读源码,比较容易掌控。 社区活跃度相对一般,文档相对简单一些。还有就是这个必定很依赖阿里维护,万一这个技术被他们抛弃,那要做好自己维护的准备。kafka的特点很明显就是仅仅提供很少的核心功能,但是提供超高的吞吐量和ms级的延迟,极高的可用性、可靠性,而且可用分布式任意扩展。 同时kafka支撑较少的topic即可,来保持较高的吞吐量。 但是kafka唯一的一点劣势就是消息有重复消费的风险,这样一来就可能对数据的准确性造成一些轻微的影响。其实在大数据系统中这一点轻微影响还是可以忽略。 kafka的特性天然适合大数据的实时计算以及日志采集。

那么详细的优劣点说完了,简单总结一下的话就是

ActiveMQRabbitMQRocketMQkafka
可能存在消息丢失,吞吐量万级,社区不够活跃,可能会遇到不可解决的bug性能好,延迟低,erlang语言开发难维护。 集群动态扩展比较麻烦支持大规模topic高吞吐量,分布式架构并且具备高可用性,阿里的开源项目,社区相对活跃,即使官网不维护了,本公司也要有实力自己维护。分布式扩展性极好,高可用性,不怕宕机。需要解决重复消费的风险。适合大数据系统方面

标签:RabbitMQ,kafka,topic,吞吐量,MQ,ActiveMQ,分布式
来源: https://blog.csdn.net/weixin_41011482/article/details/117686000

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有