ActiveMQ,RocketMQ,RabbitMQ,Kafka区别对比
常见的四种消息中间件,进行了几个维度对比,详见下表
activemq | rocketmq | rabbitmq | kafka | |
---|---|---|---|---|
特点 | 功能齐全,被大量开源项目使用 | 各个环节分布式扩展设计,主从 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级的延迟,极高的可用性以及可靠性,而且分布式可以任意扩展 |
如有错误请帮忙指出,欢迎转载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术