当前位置: 首页 > news >正文

MQ框架的比较

MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。下面我列出这些MQ之间的对比数据和资料。

第一部分:RabbitMQ,ActiveMq,ZeroMq比较

1、 TPS比较 一

ZeroMq 最好,RabbitMq 次之, ActiveMq 最差。这个结论来自于以下这篇文章。

http://blog.x-aeon.com/2013/0...

测试环境:

 Model: Dell Studio 1749

 CPU: Intel Core i3 @ 2.40 GHz

 RAM: 4 Gb

 OS: Windows 7 64 bits

其中包括持久化消息和瞬时消息的测试。注意这篇文章里面提到的MQ,都是采用默认配置的,并无调优。
图片描述

2、TPS比较二

ZeroMq 最好,RabbitMq次之, ActiveMq最差。这个结论来自于一下这篇文章。http://www.cnblogs.com/amitya...

显示的是发送和接受的每秒钟的消息数。整个过程共产生1百万条1K的消息。测试的执行是在一个Windows Vista上进行的。
图片描述

3、持久化消息比较

  zeroMq不支持,activeMq和rabbitMq都支持。持久化消息主要是指:MQ down或者MQ所在的服务器down了,消息不会丢失的机制。


4、技术点:可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统、社区

  RabbitMq最好,ActiveMq次之,ZeroMq最差。当然ZeroMq也可以做到,不过自己必须手动写代码实现,代码量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用性。

  所以在可靠性和可用性上,RabbitMQ是首选,虽然ActiveMQ也具备,但是它性能不及RabbitMQ。


5、高并发

从实现语言来看,RabbitMQ最高,原因是它的实现语言是天生具备高并发高可用的erlang语言。

总结:

按照目前网络上的资料,RabbitMQ、activeM、zeroMQ三者中,综合来看,RabbitMQ是首选。下面提供一篇文章,是淘宝使用RabbitMQ的心得,可以参看一些业务场景。

http://www.docin.com/p-462677...

第二部分:kafka和RabbitMQ的比较

关于这两种MQ的比较,网上的资料并不多,最权威的的是kafka的提交者写一篇文章。http://www.quora.com/What-are...

里面提到的要点:

1、 RabbitMq比kafka成熟,在可用性上,稳定性上,可靠性上,RabbitMq超过kafka

2、 Kafka设计的初衷就是处理日志的,可以看做是一个日志系统,针对性很强,所以它并没有具备一个成熟MQ应该具备的特性

3、 Kafka的性能(吞吐量、tps)比RabbitMq要强,这篇文章的作者认为,两者在这方面没有可比性。

这里在附上两篇文章,也是关于kafka和RabbitMq之间的比较的:

1、http://www.mrhaoting.com/?p=139

2、http://www.liaoqiqi.com/post/227

总结:

两者对比后,我仍然是选择RabbitMq,性能其实是很强劲的,同时具备了一个成熟的MQ应该具有的特性,我们无需重新发明轮子。

好资料推荐:

        1、最全最给力的kafka博客:http://blog.csdn.net/lizhitao/article/category/2194509

       2、淘宝对rabbitmq的使用:http://www.docin.com/p-462677246.html
       

相关文章:

  • 更好用的集群限流功能,Sentinel 发布 v1.4.2
  • Promise面试题,控制异步流程
  • opencv 增强现实(二):特征点匹配
  • CentOS 7 root口令恢复
  • [UOJ430]line
  • JavaScript 复习之 Object对象的相关方法
  • Fundebug计费标准解释:事件数是如何定义的?
  • mysql的备份脚本
  • mysql 数据库四种事务隔离级别
  • 题解 CF191C 【Fools and Roads】
  • springMvc学习笔记(2)
  • 【组队竞赛学习】vue+node在线商城项目
  • lucene排序算法之向量空间模型(一)
  • 常见的几种数组去重的方法,总有一种适合你~
  • Python网络爬虫5 - 爬取QQ空间相册
  • 30秒的PHP代码片段(1)数组 - Array
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • 78. Subsets
  • flask接收请求并推入栈
  • HTTP中的ETag在移动客户端的应用
  • java小心机(3)| 浅析finalize()
  • JSONP原理
  • MQ框架的比较
  • nodejs调试方法
  • Python打包系统简单入门
  • 测试开发系类之接口自动化测试
  • 多线程事务回滚
  • 反思总结然后整装待发
  • 经典排序算法及其 Java 实现
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 跳前端坑前,先看看这个!!
  • 网络应用优化——时延与带宽
  • 小程序测试方案初探
  • 第二十章:异步和文件I/O.(二十三)
  • #Java第九次作业--输入输出流和文件操作
  • #NOIP 2014#Day.2 T3 解方程
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (pojstep1.3.1)1017(构造法模拟)
  • (分布式缓存)Redis持久化
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (三)终结任务
  • (转)关于pipe()的详细解析
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET MVC第五章、模型绑定获取表单数据
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • @angular/cli项目构建--http(2)
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @private @protected @public
  • [ 数据结构 - C++]红黑树RBTree
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [IE编程] IE 是如何决定Accept-Language 属性的
  • [Winodows Phone 7控件详解]Map-2
  • [导入]上传大文件时,找不到服务器的错误问题!