ActiveMQ
中小公司会选取这个作为消息中间件,有个缺点就是性能不太好,遇到高并发的时候经常会阻塞、消息堆积过多或者延迟等等问题。但是其他的功能都比较完善,因为毕竟流行比较久了。
所以如果并发不是很高,完全可以选取这个消息中间件来使用。
image.png
ActiveMQ的分布式集群是比较好的,有两种方式,第一种就是主备的方式,平时主节点工作,备节点不工作;另一种方式就是network方式,说白了就是两组主备节点。
image.png
kafka
kafka的侧重点在于性能,也就是吞吐量,他可以在比较廉价的服务器上支持单机每秒100k的数据吞吐量;
所以他的缺点也是比较明显,因为关注性能,所以可靠性并不是很高
而他的高性能主要借助于操作系统底层的page cache,借助于内存的存储功能。
image.png
Kafka的集群模式也是借助于zookeeper,所有的节点通过复制数据来保持同步。
image.png
rocketMQ
rocketmq相较于其他的消息中间件,有几点比较特别:
- 1.首先是维护,必须得有专业的mq运维团队去做
- 2.能够保障消息的顺序性,会提供丰富的消息拉取和处理模式
- 3.高效的水平扩展,实时的消息订阅机制,还能够承载上亿的消息堆积能力
-
4.丰富的集群架构模式
image.png
在下图中的name server集群其实就代替了zookeeper,原本rocketmq使用的也是zookeeper,后来觉得zookeeper性能过低,所以就开发了name server来代替。
image.png
这么多好的优点,是不是没有缺点呢?
缺点就是商业版是收费的,一般版本一些功能又不对外提供。
rabbitMQ
rabbitmq就是性价比非常高的一款消息中间件了,它的性能不错,可靠性又能保证百分百的消息不丢失,而且还是开源不收费的。
当然了性能很好,但是也无法与kafka去比,但是比activemq要高很多了,那如果性能出问题,我们也可以通过拓展集群的方式来提高性能。
image.png image.png
网友评论