kafka,rabbitMQ,activeMQ,rocketMQ都有什么优点和缺点?

特性 ActiveMQ RabbitMQ RocketMQ Kafka
单机吞吐量

万级,吞吐量比RocketMQ

和Kafka要低一个数量级

万级,吞吐量比RocketMQ

和Kafka要低一个数量级

10万级,RocketMQ也是

可以支撑高吞吐的一个MQ

10万级,这是kafka最大的优点

就是吞吐量高。

一般配合大数据类的系统来进行

实时数据计算、日志采集等场景

topic数量对吞

吐量的影响

   

topic可以达到几百,几千

个的级别吞吐量会有较小幅

度的下降

这是RocketMQ的一大优势

可以支撑大量的topic

topic从几十个到几百个的时候

吞吐量会大幅度的下降

所以在同等机器下,Kafka尽量

保证topic的数量不要过多。如果

要支撑大规模的topic,需要增加

更多的机器资源

时效性 ms级

微秒级,这是rabbitMQ的

一大特点,延迟是最低的

ms级 延迟在ms级以内
可用性

高,基于主从架构实现高

可用性

高,基于主从架构实现高

可用性

非常高,分布式架构

非常高,Kafka是分布式的,一个

数据多个副本,少数机器宕机,不

会丢失数据,不会导致不可用

消息的可靠性 有较低的概率丢失数据 一般不丢消息

经过参数优化配置,可以做

到0丢失

经过参数优化配置,可以做

到0丢失

功能支持 MQ领域的功能极其完备

基于erlang开发,所以并发

能力很强,性能极其好,扩

展性好

MQ功能比较完善,还是分

布式的扩展性好

功能较为简单,主要支持简

单的MQ功能,在大数据领域

的实时计算以及日志采集被大

规模使用,是事实上的标准

优劣势总结 

非常成熟,功能强大,在

业内大量的公司以及项目

中都有应用

 

偶尔会有较低概率丢失消息

 

而且现在社区以及国内应用

都越来越少,官方社区现在

对ActiveMQ5.X维护越来

越少,几个月才发布一个新

版本

 

而且确实主要是基于解耦和

异步来用的,较少在大规模

吞吐的场景中使用

erlang语言开发,性能极其

好,延时很低;

 

吞吐量到万级,MQ功能比较

完备

 

而且开源提供的管理界面非常

棒,用起来很好用

 

社区相对比较活跃,几乎每个

月都发布几个版本

 

在国内一些互联网公司近几年

用rabbitMQ也比较多一些

 

但是问题也是显而易见的,

RabbitMQ确实吞吐量会低一

些,这是因为他做的实现机制

比较重。

 

而且erlang开发,国内有几个

公司有实力做erlang源码级别

的研究和定制?如果说你没这

个实力的话确实偶尔会有一些

问题,你公司对这个东西的掌

控很弱,基本只能依赖于开源

社区的快速维护和修复bug

 

而且rabbitMQ集群动态扩展

会很麻烦,不过这个我觉得

还好。其实主要是erlang语

言本身带来的问题。很难读

源码,很难定制和掌控

接口简单易用,而且毕竟在

阿里大规模应用过,有阿里

品牌保障

 

日处理消息上百亿之多,可

以做到大规模吞吐,性能

也非常好,分布式扩展也很

方便,社区维护还可以,可

靠性和可用性都是ok的,还

可以支持大规模的topic数量,

支持复杂MQ场景

 

而且一个很大的优势在于,

阿里出品都是java系的,我

们可以自己阅读源码,定制

自己公司的MQ,可以掌控

 

社区活跃度相对一般,不过

也还可以,文档相对来说简

单一些,然后接口这块不是

按照标准JMS规范走的,有

些系统迁移要修改大量代码

 

还有就是阿里出台的技术,

你得做好这个技术万一被

抛弃,社区黄掉的风险,那

如果你们公司有技术实力我

觉得用RocketMQ挺好的

Kafka的特点很明显,就是仅仅

提供较少的核心功能,但是提供

超高的吞吐量,ms级的延迟,极

高的可用性以及可靠性,而且分布

式可以任意扩展

 

同时kafka最好是支撑较少的topic

数量即可,保证其超高吞吐量

 

而且Kafka唯一的一点劣势是有可能

消息重复消费,那么对数据准确性会

造成极其轻微的影响,在大数据领域

中以及日志采集中,这点轻微影响可

以忽略

 

这个特性天然适合大数据实时计算以

及日志收集

 

一般的业务系统要引入MQ,最早大家都用ActiveMQ,但是现在确实大家用的不多了,没经过大规模吞吐量场景的验证,社区也不是很活跃,所以大家还是算了吧,我个人不推荐用这个了;

 

后来大家开始用RabbitMQ,但是确实erlang语言阻止了大量的java工程师去深入研究和掌控他,对公司而言,几乎处于不可控的状态,但是确实人是开源的,比较稳定的支持,活跃度也高;

 

不过现在确实越来越多的公司,会去用RocketMQ,确实很不错,但是我提醒一下自己想好社区万一突然黄掉的风险,对自己公司技术实力有绝对自信的,我推荐用RocketMQ,否则回去老老实实用RabbitMQ吧,人是活跃开源社区,绝对不会黄

 

所以中小型公司,技术实力较为一般,技术挑战不是特别高,用RabbitMQ是不错的选择;大型公司,基础架构研发实力较强,用RocketMQ是很好的选择

 

如果是大数据领域的实时计算、日志采集等场景,用Kafka是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄,何况几乎是全世界这个领域的事实性规范

posted on 2022-08-07 22:42  网恋被骗两千八  阅读(62)  评论(0编辑  收藏  举报