主流mq
rabbitmq
优点
- 轻量级,快速,部署使用方便
- 支持灵活的路由配置
- 支持大多数编程语言
缺点
- 大量消息堆积,性能急剧下降
- 每秒处理几万到几十万消息
- erlang开发,二次开发代价高
rocketmq
缺点
- RocketMQ几乎具备了消息队列应该具备的所有特性和功能。
- java开发,阅读源代码、扩展、二次开发很方便。
- 对电商领域的响应延迟做了很多优化。在大多数情况下,响应在毫秒级。如果应用很关注响应时间,可以使用RocketMQ。
- 性能比RabbitMQ高一个数量级,每秒处理几十万的消息。
缺点
- 跟周边系统的整合和兼容不是很好
kafka
- Kafka的可靠性,稳定性和功能特性基本满足大多数的应用场景。
兼容性好,尤其是大数据和流计算领域,几乎所有相关的开源软件都支持Kafka。
- Kafka高效,可伸缩,消息持久化。支持分区、副本和容错。
- Kafka是Scala和Java开发的,对批处理和异步处理做了大量的设计,因此Kafka可以得到非常高的性能。它的异步消息的发送和接收是三个中最好的
- 如果是异步消息,并且开启了压缩,Kafka最终可以达到每秒处理2000w消息的级别。
缺点:
- 但是由于是异步的和批处理的,延迟也会高,不适合电商场景