消息队列(二)主流的MQ比较
2020-04-21 本文已影响0人
joshuaXin
一:常用的MQ
首先,这方面的内容网上很多了,我大致的针对自己的一些见解,言简意赅的说一下
1.ActiveMQ:主从架构,基于JMS设计,支持重试队列、死信队列
1)开源较早,2007年就捐给Apache,但目前社区活跃度略低,在新兴公司比重较低;
2)主从架构,横向扩展能力略差,面临消息可能丢失、持久化等问题;
2.RabbitMQ:主从架构,Erlang语言实现,基于AMQP 协议,支持重试队列、死信队列
1)开源较早,2007开发,社群活跃度不错,不过Erlang有点小众,也比较少用到,比ActiveMQ好像好点
2)主从架构,横向扩展能力略差,其他没有太明显的弱点;
3.Kafka:分布式架构,不支持重试队列、死信队列
1)2011开源,感觉好像中型公司用的很广泛,大型公司嘛,好像自研的MQ居多
2)不支持死信队列、重试队列,有点略麻烦
3)只支持 Pull的方式
4.RocketMQ:
1)给我的感觉有点集大成者,Java实现,支持重试死信、分布式、社区活跃、Push和Pull都支持,使用场景也更偏向于互联网场景;
2)2016年开源,相对比较晚,很多人这个时间都投向kafka了,当然RocketMQ也是借鉴kafka
二:工作中的选型
1)我所在的两家都选的kafka:得益于几点:在LinkedIn被证明,开源略早,上手略简单,易扩充、吞吐量达;
2)我们系统搭建的时候,RocketMQ还未开源或稳定;
3)选型其实也不由得我们,一般都是先有的kafka集群,然后再kafka集群上实现业务,而且kafka完成的还很不错
三:详细对比
1. MQ对比, 引用 https://juejin.im/post/5b32044ef265da59654c3027
1. MQ对比