各大MQ产品比较

  • Post author:
  • Post category:其他


特性 ActiveMQ RabbitMQ RocketMQ Kafka
producer-consumer 支持 支持 支持 支持
发布-订阅 支持 支持 支持 支持
API完备性
多语言支持 支持,Java优先 语言无关 只支持Java 支持,Java优先
单机吞吐量 万级 万级 万级 十万级
消息延迟 微秒级 毫秒级 毫秒级
可用性 高(主从) 高(主从) 非常高(分布式) 非常高(分布式)
消息丢失 理论上不会丢失 理论上不会丢失
消息重复 可控制 理论上会有重复
文档完备性
提供快速入门
部署难度
社区活跃度
商业支持 阿里云
成熟度 成熟 成熟 成熟 成熟(日志领域)
特点 功能齐全,大量项目使用 借助于erlang语言并发能力,性能高 各环节分布式设计,主从HA,支持上万队列,多种消费模式,性能好
支行协议 openwire,stomp,rest,xmpp,amqp amqp 自定义的一套(社区提供JMS–不成熟)
持久化 内存,文件,数据库 内存,文件 磁盘文件
事务 支持 支持 支持
负载均衡 支持 支持 支持
管理界面 一般 有web console实现
部署方式 独立,嵌入 独立 独立
评价
优点

:成熟的产品,已经在很多公司应用但规模不大,各种协议支持较好,有多重语言的客户端;

缺点

:其重点已放到activemq6.0产品appollo上去了,目前社区不活跃,且对5.x的维护较少;不适用于上千队列场景

优点

:由于erlang语言的特点,产品性能较好,在互联网公司有较大规模应用,支持amqp协议,有多语言且支持amqp的客户端可用;

缺点

:erlang语言难度大,集群不支持动态扩展

优点

:模型简单,接口易用,在阿里大规模应用;性能好,可大量堆积消息在broker中,支持多种消费,包括集群消费,广播消费,开发活跃度高,版本更新快;

缺点

:没有在mq核心中实现JMS等接口,有些系统要迁移需要修改大量代码;支持的客户端语言不多,目前是java及c++,其中c++不成熟;

优点

:性能卓越,单机写入TPS约在百万条/秒,最大的优点,就是吞吐量高。在日志领域比较成熟,被多家公司和多个开源项目使用;

缺点

:Kafka单机超过64个队列/分区,Load会发生明显的飙高现象,队列越多,load越高,发送消息响应时间变长;消费失败不支持重试;支持消息顺序,但是一台代理宕机后,就会产生消息乱序;社区更新较慢;



版权声明:本文为weixin_68967484原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。