MQ框架的比较

摘要:
有许多MQ框架,包括RabbitMq、ActiveMq、ZeroMq和kafka。下面,我列出了这些MQ之间的比较数据和信息。第一部分:RabbitMQ、ActiveMq、ZeroMq比较1.TPS比较-ZeroMq最好,RabbitMQ第二,ActiveMq最差。持久消息主要是指当MQ关闭或MQ所在的服务器关闭时消息不会丢失的机制。http://www.docin.com/p-462677246.html第二部分:卡夫卡与拉比MQ的比较。关于这两种MQ之间的比较,互联网上没有太多信息。最权威的是卡夫卡的提交者写了一篇文章。
MQ框架的比较

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,都是采用默认配置的,并无调优。

MQ框架的比较第1张

更多的统计图请参看我提供的文章url。

2、TPS比较

ZeroMq 最好,RabbitMq次之, ActiveMq最差。这个结论来自于一下这篇文章。http://www.cnblogs.com/amityat/archive/2011/08/31/2160293.html 

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

MQ框架的比较第2张

 

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应该具有的特性,我们无需重新发明轮子。

好资料推荐:

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

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

免责声明:文章转载自《MQ框架的比较》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用eclipse将maven项目部署tomcat, 以及如何实现热部署首次揭秘!扫福得福:支付宝春节集五福背后的技术分享下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Springboot+WebSocket+Kafka(写着玩的)

闹着玩的来源:前台发送消息,后台接受处理发给kafka,kafka消费者接到消息传给前台显示。联想到websocket。 最终效果如图: 页面解释: 不填写内容的话,表单值默认为Topic、Greeting、Name 点击订阅,按钮变黑 Send Topic 广播 前台显示前缀:T-You Send Subscribe Topic 订阅广播 前台...

kafka服务端和客户端均无法消费

一直报错: 1 partitions have leader brokers without a matching listener, including [cloudeasy.cmdb.cancel.manage-0] 查看zk服务端,报错如下: 原因是 watch 太多且路径太长导致重连的时候超过了 ZK maxBuffer 的限制 把 客户端从 3...

Kafka(四) —— KafkaProducer源码阅读

一、doSend()方法 Kafka中的每一条消息都对应一个ProducerRecord对象。 public class ProducerRecord<K, V> { private final String topic; private final Integer partition; private final...

golang-nsq高性能消息队列

前言 tips:如果本文对你有用,请爱心点个赞,提高排名,让这篇文章帮助更多的人。谢谢大家!比心❤~ 如果解决不了,可以在文末加我微信,进群交流。 NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。 NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。 N...

rabbitmq坑点与异常处理

一、None of the specified endpoints were reachable 这个异常在创建连接时抛出(CreateConnection()),原因一般是ConnectionFactory参数设置不对,比如HostName、UserName、Password 标准设置: var factory = new ConnectionFact...

Linux下activeMQ的安装和启动

Linux下activeMQ的安装和启动 ActiveMQ的安装和启动 安装JAVA配置JAVA环境 下载ActiveMQ解压压缩包tar zxvf activemq-x.x.x-bin.tar.gz至此,linux下ActiveMQ的安装工作就完成了。ActiveMQ在Linux下的启动启动ActiveMQ分为两种模式 ,以 前端进程的方式启动(控制台关...