一、常用的MQ:
1.1 目前常用的MQ有:RocketMq、Kafka、RabbitMq、最新新出的一款pulsar;一款MQ至少需要满足低延迟,高吞吐量,数据堆积能力
三个特性
二、常用的MQ的对比:
一般从功能
、性能
、其他
三个维度
- RabbitMq:Erlang语言开发,支持优先级队列,缺点是消息堆积能力弱,性能最弱,单机吞吐量为万级,而rocketmq为十万级别,kafka为百万级别。
- rocketMq:JAVA语言开发,支持消息查询
- kfaka:java与scala语言,高吞吐连,多用于大数据场景,数据高吞吐连可能造成数据丢失
总结:
如果是业务场景可用rocketMQ与rabbitMQ,如果是大数据场景用kafka;至于rocketMQ与rabbitMQ中如何选择,根据技术栈来决定,如果是Erlang语言则尽量选用rabbitmq,如果是java语言,则选用rocketMQ。
如果消息的敏感性要求不高,允许少数据丢失,可以选择kafka;如果消息的敏感性要求高则不选用kafka;如果消息敏感度要求极高,则选择rocketMq,因为rocketMq具有消息查询的功能。
三、 mq为什么这么快:
内存映射(先写入内存,提高效率),高效的存储设计(文件定长,可使用下标快速定位),同步刷盘(但内部是异步批处理刷盘),内存级别的读写分离与锁机制
四、消息不丢失
同步刷盘,同步复制
注:本文主要对比三种消息中间件,如果想了解MQ更多内容请访问下面两篇文章:
RabbitMQ简述与其docker安装:传送门
实战:springboot整合rabbitMQ:传送门