ActiveMQ,RocketMQ,RabbitMQ,Kafka区别对比

常见的四种消息中间件,进行了几个维度对比,详见下表

 activemqrocketmqrabbitmqkafka
特点功能齐全,被大量开源项目使用各个环节分布式扩展设计,主从 HA;支持上万个队列;多种消费模式;性能很好由于Erlang 语言的并发能力,性能很好吞吐量高
单机吞吐量万级别十万级别万级别十万级别
可用性基于主从架构实现高可用性分布式架构基于主从架构实现高可用性分布式架构
可靠性有较低的概率丢失数据经过参数优化配置,消息可以做到0丢失/经过参数优化配置,消息可以做到0丢失
时效性ms级ms级us级ms级
持久化内存、文件、数据库磁盘文件内存、文件文件、磁盘
事务支持不支持支持不支持
消息顺序不支持支持/不支持
定时消息/支持/不支持
总结

优点:成熟的产品,已经在很多公司得到应用(非大规模场景)。有较多的文档。各种协议支持较好,有多重语言的成熟的客户端;

缺点:根据其他用户反馈,会出莫名其妙的问题,切会丢失消息。 其重心放到activemq6.0 产品—apollo 上去了,目前社区不活跃,且对 5.x 维护较少;Activemq 不适合用于上千个队列的应用场景

优点: 由于erlang语言的特性,mq 性能较好;管理界面较丰富,在互联网公司也有较大规模的应用;支持amqp系诶,有多中语言且支持 amqp 的客户端可用;缺点: erlang语言难度较大。集群不支持动态扩展。

优点: 模型简单,接口易用(JMS 的接口很多场合并不太实用)。在阿里大规模应用。目前支付宝中的余额宝等新兴产品均使用rocketmq。集群规模大概在50 台左右,单日处理消息上百亿;性能非常好,可以大量堆积消息在broker 中;支持多种消费,包括集群消费、广播消费等。开发度较活跃,版本更新很快。

缺点: 没有在 mq 核心中去实现JMS 等接口

kafka的特点其实很明显,就是仅仅提供较少的核心功能,但是提供超高的吞吐量,ms级的延迟,极高的可用性以及可靠性,而且分布式可以任意扩展

如有错误请帮忙指出,欢迎转载。 

posted @   初见洞洞拐  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示