当前位置:网站首页>MQ框架应用比较
MQ框架应用比较
2022-08-11 04:27:00 【xmh-sxh-1314】
MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。下面我列出这些MQ之间的对比数据和资料。
第一部分:RabbitMQ,ActiveMq,ZeroMq比较
1、 TPS比较 一
ZeroMq 最好,RabbitMq 次之, ActiveMq 最差。这个结论来自于以下这篇文章。
http://blog.x-aeon.com/2013/04/10/a-quick-message-queue-benchmark-activemq-rabbitmq-hornetq-qpid-apollo/
测试环境:
Model: Dell Studio 1749
CPU: Intel Core i3 @ 2.40 GHz
RAM: 4 Gb
OS: Windows 7 64 bits
其中包括持久化消息和瞬时消息的测试。注意这篇文章里面提到的MQ,都是采用默认配置的,并无调优。
更多的统计图请参看我提供的文章url。
2、TPS比较二
ZeroMq 最好,RabbitMq次之, ActiveMq最差。这个结论来自于一下这篇文章。http://www.cnblogs.com/amityat/archive/2011/08/31/2160293.html
显示的是发送和接受的每秒钟的消息数。整个过程共产生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-462677246.html
第二部分:kafka和RabbitMQ的比较
关于这两种MQ的比较,网上的资料并不多,最权威的的是kafka的提交者写一篇文章。http://www.quora.com/What-are-the-differences-between-Apache-Kafka-and-RabbitMQ
里面提到的要点:
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应该具有的特性,我们无需重新发明轮子。
边栏推荐
- 解决多线程调用sql存储过程问题
- LeetCode Brush Questions Day 11 String Series "58 Last Word Length"
- Day20 FPGA 】 【 - block the I2C read and write EEPROM
- Interchangeability and Measurement Technology—Surface Roughness Selection and Marking Method
- JVM 垃圾回收的概述与机制
- JwsManager service interface implementation class - the jni implementation
- 【Web3 系列开发教程——创建你的第一个 NFT(9)】如何在手机钱包里查看你的 NFT
- Leetcode 669. 修剪二叉搜索树
- [FPGA] Design Ideas - I2C Protocol
- MYSQLg advanced ------ return table
猜你喜欢
![[Likou] 22. Bracket generation](/img/f6/435fe9e0b4c1545514d1bf195ffd44.png)
[Likou] 22. Bracket generation

【FPGA】abbreviation

"98 BST and Its Verification" of the 13th day of leetcode brushing series of binary tree series

移动端地图开发选择哪家?

What is Machine Reinforcement Learning?What is the principle?

LeetCode刷题第11天字符串系列之《 58最后一个单词长度》

"239 Sliding Window Maximum Value" on the 16th day of LeetCode brushing

leetcode刷题第13天二叉树系列之《98 BST及其验证》

JVM 垃圾回收的概述与机制

网络安全培训机构哪家好?排名怎么选择?
随机推荐
Switch---Spanning Tree---Three-layer Architecture Summary
华南师范宋宇老师课堂对话论文翻译
网络安全培训机构哪家好?排名怎么选择?
【小记】BatchSize的数值是设置的越大越好吗
直播平台开发,Flutter,Drawer侧滑
LeetCode814算题第15天二叉树系列值《814 二叉树剪枝》
【服务器安装mysql】centos7下使用mysql离线安装包安装mysql5.7
使用jackson解析json数据详讲
[Server installation mysql] Use mysql offline installation package to install mysql5.7 under centos7
[FPGA] Design Ideas - I2C Protocol
这些云自动化测试工具值得拥有
解决多线程调用sql存储过程问题
rub the heat - do not open
MySQL数据库存储引擎以及数据库的创建、修改与删除
jwsManager服务接口实现类-jni实现
简历里写了会代码,却依然过不了面试这一关
使用百度EasyDL实现施工人员安全装备检测
MYSQLg advanced ------ clustered and non-clustered indexes
北湖区燕泉街道开展“戴头盔·保安全”送头盔活动
自研能力再获认可,腾讯云数据库入选 Forrester Translytical 报告