赞
踩
本文将从多个角度全方位对比目前比较常用的几个MQ:
特性 | RocketMQ | Kafka | RabbitMQ | ActiveMQ |
---|---|---|---|---|
单机吞吐量 | 10 万级,支撑高吞吐 | 10 万级以上,甚至有文献称,可以达到单机百万级TPS。 | 万级,同ActiveMQ | 万级,相对其他MQ较低。 |
topic 数量对吞吐量的影响 | topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,这是 RocketMQ 的一大优势,在同等机器下,可以支撑大量的 topic | topic从几十到几百个时候,吞吐量会大幅度下降,所以请不要给Kafka设计过多的topic,需要更多的机器资源支撑大规模的 topic | topic 数量增多,吞吐量会下降 | topic 数量增多,吞吐量会下降 |
时效性 | ms 级 | 延迟在 ms 级以内 | 微秒级,延迟最低RabbitMQ 的一大特点 | ms 级 |
可用性 | 非常高,分布式架构 | 非常高,分布式,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用 | 同 ActiveMQ | 高,基于主从架构实现高可用 |
消息可靠性 | 经过参数优化配置,可以做到 0 丢失。支持事务 | 同 RocketMQ。支持事务 | 基本不丢 | 有较低的概率丢失数据 |
消息顺序性 | 分区内消息有序 | 分区内消息有序 | 队列的消息有序 | 队列消息有序,topic不保证。 |
消息延时 | 5.0开始支持,定时消息 | 插件支持 | 插件支持 | 支持,Scheduled Message |
功能支持 | MQ 功能较为完善,还是分布式的,扩展性好 | 功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用 | 基于 erlang 开发,并发能力很强,性能极好,延时很低 | MQ 领域的功能极其完备 |
资料文档 | 少。没有专门写rocketmq的书,网上的资料良莠不齐,官方文档很简洁,但是对技术细节没有过多的描述 | 中,有kafka作者自己写的书,网上资料也有一些 | 多。有一些不错的书,网上资料多 | 多。没有专门写activemq的书,网上资料多 |
开发语言 | java | Scala+Java | Erlang | java |
支持协议 | 自定义 | 自定义(基于TCP) | AMQP | OpenWire、STOMP、REST、XMPP、AMQP |
消息存储 | 磁盘。支持大量堆积 | 内存、磁盘、数据库。支持大量堆积 | 内存、磁盘。支持少量堆积 | |
集群方式 | 常用多对’Master-Slave’ 模式,开源版本需手动切换Slave变成Master | 天然的‘Leader-Slave’无状态集群,每台服务器既是Master也是Slave | 支持简单集群,'复制’模式,对高级集群模式支持不好 | 支持简单集群模式,比如’主-备’,对高级集群模式支持不好 |
系统场景 | 电商系统,金融系统,物流系统 | 大数据处理平台(如 Hadoop、Spark) 流处理平台(如 Flink、Storm) 日志收集系统(如 ELK) | 网站通知系统 任务队列系统 微服务通信系统 | 传统企业应用(如 ERP、CRM) JMS 兼容系统 |
ZeroMQ 的优点:
ZeroMQ 的缺点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。