特性 | activeMQ | rabbitMQ | rocketMQ | kafka |
---|---|---|---|---|
单机 吞吐量 | 万/秒 | 万/秒 | 10万/秒 | 10万/秒 |
topic 对吞 吐量 的影响 | 无 | 无 | topic达到几百/几千个级 别,吞吐量会有小幅下 降; 这是rocket的最大优 势 所以非常适用于支撑大批量topic场景 | topic可以达到几十/几 百个级别,吞吐量会有 大幅下降 kafka不适用 大批量topic场景,除非加机器 |
时效 性 | 毫秒 | 微秒 这是 rabbit 最 大优势,延迟低 | 毫秒 | 毫秒 |
可用性 | 高。主从架构 | 高。主从架构 | 非常高。分布式。多副本,不会丢数据, | 非常高。分布式。不会数据,不会不可用。 |
可靠 性 | 有较低概 率丢失数据 | —- | 经配置优化可达到0丢失 | 经配置优化可达到0丢 失 |
功能 特性 | 功能齐 全,但已不怎么维护 | erlang开 发,并发强,性能极好,延迟低 | MQ功能较为齐全,扩展好 | 功能简单,主要用于大 数据实时计算和日志采集,事实标准 |
综上,总结如下:
- activeMQ
优点:技术成熟,功能齐全,历史悠久,有大量公司在使用
缺点:偶尔会有较低概率丢失数据,而且社区已经不怎么维护5.15.X版本
使用场景:主要用于系统解耦和异步处理,不适用与大数据量吞吐情况。互联网公司很少适用
- rabitMQ
优点:吞吐量高,功能齐全,管理界面易用,社区活跃,性能极好,;
缺点:吞吐量只是万级,erlang难以二次开发和掌控;集群动态扩展非常麻烦;
使用场景:吞吐量不高而要求低延迟,并且不会频繁调整和扩展的场景。非常适合 国内中小型互联网公司适用,因为管理界面非常友好,可以在界面进行配置和优 化/集群监控。
- rocketMQ
优点:支持百千级大规模topic。吞吐量高(十万级,日处理上百亿)。接口易用。分布式易扩展,阿里支持。java开发易于掌控
缺点:与阿⾥(社区)存在绑定。不兼容M规范。
使用场景:高吞吐量
- kafka
优点:超高吞吐量,超高可用性和可靠性,分布式易扩展
缺点:topic支持少,MQ功能简单,消息可能会重复消费影响数据精确度
使用场景:超高