当前位置: 首页 > 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空间相册
  • [PHP内核探索]PHP中的哈希表
  • JavaScript-如何实现克隆(clone)函数
  • 【笔记】你不知道的JS读书笔记——Promise
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • HTTP--网络协议分层,http历史(二)
  • JavaScript对象详解
  • log4j2输出到kafka
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • MYSQL 的 IF 函数
  • Spark RDD学习: aggregate函数
  • vue-router的history模式发布配置
  • 关于Flux,Vuex,Redux的思考
  • 微服务核心架构梳理
  • 小李飞刀:SQL题目刷起来!
  • 一个SAP顾问在美国的这些年
  • 1.Ext JS 建立web开发工程
  • C# - 为值类型重定义相等性
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 说说我为什么看好Spring Cloud Alibaba
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Forward) Music Player: From UI Proposal to Code
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .htaccess配置常用技巧
  • .net 发送邮件
  • .net 流——流的类型体系简单介绍
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET连接数据库方式
  • .NET中 MVC 工厂模式浅析
  • @Valid和@NotNull字段校验使用
  • []sim300 GPRS数据收发程序
  • [20171113]修改表结构删除列相关问题4.txt
  • [AIGC] MySQL存储引擎详解
  • [Android]通过PhoneLookup读取所有电话号码
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法
  • [BUG] Authentication Error
  • [c]扫雷