RabbitMq、ActiveMq、ZeroMq、kafka比较
1)TPS(每秒事务处理量(TransactionPerSecond)比较:
Kafka最高,RabbitMq 次之, ActiveMq 最差。
2)吞吐量对比:
kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)的复杂度,消息处理的效率很高。
rabbitMQ在吞吐量方面稍逊于kafka,他们的出发点不一样,rabbitMQ支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。
3)在架构模型方面:
RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consumer循环从输入流读取数据)。rabbitMQ以broker为中心;有消息的确认机制。
kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消息的消费信息保存的客户端consumer上,consumer根据消费的点,从broker上批量pull数据;无消息确认机制。
4)在可用性方面,
rabbitMQ支持miror的queue,主queue失效,miror queue接管。
kafka的broker支持主备模式。
activeMq也支持主备模式。
5)在集群负载均衡方面,
kafka采用zookeeper对集群中的broker、consumer进行管理,可以注册topic到zookeeper上;通过zookeeper的协调机制,producer保存对应topic的broker信息,可以随机或者轮询发送到broker上;并且producer可以基于语义指定分片,消息发送到broker的某分片上。
rabbitMQ的负载均衡需要单独的loadbalancer进行支持。
1.TPS比较
ZeroMq 最好,RabbitMq次之, ActiveMq最差
显示的是发送和接受的每秒钟的消息数。整个过程共产生1百万条1K的消息。测试的执行是在一个Windows Vista上进行的。
2、持久化消息比较
zeroMq不支持,activeMq和rabbitMq都支持。持久化消息主要是指:MQ down或者MQ所在的服务器down了,消息不会丢失的机制。
3、技术点:可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统、社区
RabbitMq最好,ActiveMq次之,ZeroMq最差。当然ZeroMq也可以做到,不过自己必须手动写代码实现,代码量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用性。
所以在可靠性和可用性上,RabbitMQ是首选,虽然ActiveMQ也具备,但是它性能不及RabbitMQ。
4、高并发
从实现语言来看,RabbitMQ最高,原因是它的实现语言是天生具备高并发高可用的erlang语言。
综合对比:
ActiveMQ: 历史悠久的开源项目,已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,不够轻巧(源代码比RocketMQ多),支持持久化到数据库,对队列数较多的情况支持不好。
RabbitMq:
它比kafka成熟,支持AMQP事务处理,在可靠性上,RabbitMq超过kafka,在性能方面超过ActiveMQ。
Kafka:
Kafka设计的初衷就是处理日志的,不支持AMQP事务处理,可以看做是一个日志系统,针对性很强,所以它并没有具备一个成熟MQ应该具备的特性
Kafka的性能(吞吐量、tps)比RabbitMq要强,如果用来做大数据量的快速处理是比RabbitMq有优势的。
下面是网上引用的详细对比:
原文图片:http://blog.csdn.net/oMaverick1/article/details/51331004
PS:图片可能有点小,可以右键另存到桌面保存再查看
参考自https://blog.csdn.net/linsongbin1/article/details/47781187
https://blog.csdn.net/vtopqx/article/details/76382934
RabbitMq、ActiveMq、ZeroMq、kafka比较相关推荐
- 各个MQ消息队列介绍以及区别比较(RabbitMq ActiveMQ、ZeroMQ、Kafka)
首先,MQ其实就是消息队列,队列我们可以理解为管道,以管道的方式做消息传递. 在本篇博客中,我们先来简单学习一下几种MQ,之后对他们进行对比. ActiveMQ.RabbitMQ.kafka.Rock ...
- Java消息队列总结只需一篇解决ActiveMQ、RabbitMQ、ZeroMQ、Kafka
一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,Rabbit ...
- 消息队列技术介绍 : ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ
一. 消息队列概述 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合.异步消息.流量削锋等问 ...
- 关于消息队列的使用----ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ
一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,Rabbit ...
- 消息中间件(RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ等)的定义、组成、特点、优缺点、应用场景面试题
大家都参与过网上电商平台的秒杀活动吧,一般的秒杀活动辄几百万的参与人数,而"双十一"的参与人数更是已"亿"为计量单位.那么这些电商平台的系统架构是怎样的,它们是 ...
- 息中间件kafka与activeMQ、rabbitMQ、zeroMQ、rocketMQ的比较
几种MQ产品说明: ZeroMQ : 扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码 RabbitMQ :结合erla ...
- 消息中间件合集:MQ(ActiveMQ/RabbitMQ/RocketMQ)+Kafka+笔记
最近有好多朋友都去投岗秋招提前批,面完回来跟我说碰到消息中间件一类的问题就挂了.额,有点不知所措,于是乎小编就想着做一次消息中间件的专题,归类整理了MQ(ActiveMQ/RabbitMQ/Rocke ...
- 惊了 消息中间件合集:MQ(ActiveMQ/RabbitMQ/RocketMQ)+Kafka+笔记
最近有好多朋友都去投岗秋招提前批,面完回来跟我说碰到消息中间件一类的问题就挂了. 附面试思维导图: 额,有点不知所措,于是乎小编就想着做一次消息中间件的专题,归类整理了MQ( ActiveMQ/Rab ...
- RabbitMQ 七战 Kafka,差异立现!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 译者丨王欢,Golang后端工程师,DockOne社区译者 ...
- 选型必看:RabbitMQ 七战 Kafka,差异立现
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作为一个有丰富经验的微服务系统架构师,经常有人问我,"应 ...
最新文章
- linux显卡驱动mxm,linux下我的FX5200显卡驱动安装
- Flex4之与后台服务器通信方式:URLRequest+URLLoader【JAVA方式】
- PHP 数组遍历 foreach 语法结构
- [LeetCode_5] Longest Palindromic Substring
- java监听网络连接_Android RxJava 之网络链接监听示范
- Myeclipse学习总结(16)——MyEclipse CI 2018.8.0首次更新,全新来袭!(内附破解激活文件,亲测破解100%)
- koa 接口返回数据_node和koa实现数据mock接口
- 一台电脑,内外网同时使用
- Git 提交错了不用慌,这三招帮你修改记录
- linux删除文件未释放空间问题处理
- 使IE6支持png透明图片
- 高等数学张宇18讲 第十二讲 常微分方程
- 用于图像识别的编程语言,你知道几个?
- 邮局用计算机对信件进行自动分拣,计算机组成结构习题集
- 京东运营体系组织架构曝光,自建物流秘密在这里
- 外贸单证管理系统如何解决企业制单问题
- 零售的哲学前三章读后感
- 电缆故障测试仪的基本原理与组成——TFN DG15M电缆故障测试仪
- 是面试官放水,还是公司太缺人?这都能过,字节跳动原来这么容易进...
- 【JavaSE】abstract 抽象类 快到碗里来 (◕ᴗ◕✿)
热门文章
- php 导出excel 2007,使用PHPExcel导出Excel表
- C语言的printf一些骚操作
- kalman filter卡尔曼滤波器- 数学推导和原理理解-----网上讲的比较好的kalman filter和整理、将预测值和观测值融和...
- SpringCloud系列十三:Feign对继承、压缩、日志的支持以及构造多参数请求
- SQL学习--Select(一)TOP、派生表、连接、谓词
- 桐花万里python路-基础篇-05-字符串及浮点数
- 如何做研究-精辟分析
- 一步一步SharePoint 2007之十五:实现Form认证(5)——更改认证的Provider
- Scala基础之变量和数据类型
- (100)Vivado TCL命令概述