当前位置:网站首页>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应该具有的特性,我们无需重新发明轮子。
边栏推荐
- shell监视gpu使用情况
- 洛谷P4560 Wall 砖墙
- 关于pom.xml文件
- Redis:解决分布式高并发修改同一个Key的问题
- Day20 FPGA 】 【 - block the I2C read and write EEPROM
- 拼多多店铺营业执照相关问题
- 洛谷P4061 大吉大利,晚上吃鸡
- Snap - rotate the smallest number of an array
- Clang Code Model: Error: The clangbackend executable “X:/clangbackend.exe“ could not be started
- What is Machine Reinforcement Learning?What is the principle?
猜你喜欢

无线电射频能量的收集

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

Provincial level of Echart maps, as well as all prefecture-level download and use

What is Machine Reinforcement Learning?What is the principle?

How to add icons to web pages?

如何给网页添加icon图标?

LeetCode814算题第15天二叉树系列值《814 二叉树剪枝》

Switch---Spanning Tree---Three-layer Architecture Summary

Power Cabinet Data Monitoring RTU

Which one to choose for mobile map development?
随机推荐
Switch---Spanning Tree---Three-layer Architecture Summary
【人话版】WEB3将至之“权益的游戏”
leetcode刷题第13天二叉树系列之《98 BST及其验证》
"239 Sliding Window Maximum Value" on the 16th day of LeetCode brushing
.NET Custom Middleware
Jetson Orin平台4-16路 GMSL2/GSML1相机采集套件推荐
"125 Palindrome Verification" of the 10th day string series of LeetCode brushing questions
洛谷P2245 星际导航
这些云自动化测试工具值得拥有
使用百度EasyDL实现森林火灾预警识别
洛谷P1763 埃及分数
洛谷P1196 银河英雄传说
利用Navicat Premium导出数据库表结构信息至Excel
jwsManager服务接口实现类-jni实现
1815. Get the maximum number of groups of fresh donuts state compression
About the pom.xml file
CTO said that the number of rows in a MySQL table should not exceed 2000w, why?
Mysql中事件和定时任务
Redis:解决分布式高并发修改同一个Key的问题
Leetcode 450. 删除二叉搜索树中的节点