RabbitMq,ActiveMq,ZoreMq,kafka比较

1.各队列性能比较。
测试一:
测试场景:
      Scenario A: Enqueuing 20,000 messages of 1024 bytes each, then dequeuing them afterwards.
      Scenario B: Enqueuing and dequeuing simultaneously 20,000 messages of 1024 bytes each.
      Scenario C: Enqueuing and dequeuing simultaneously 200,000 messages of 32 bytes each.
      Scenario D: Enqueuing and dequeuing simultaneously 200 messages of 32768 bytes each.

Scenario A



Scenario B



Scenario C



Scenario D


测试二:
显示的是发送和接受的每秒钟的消息数。整个过程共产生1百万条1K的消息。



总结:ZeroMq 最好,RabbitMq 次之, ActiveMq 最差,ActiveMq是Java,RabbitMQ是Erlang,理论上,RabbitMQ的性能比ActiveMq更强,是非Java系统的首选,ActiveMq是Java的,整套系统如果本来就是Java的,配合的默契更佳。高并发下amqp协议rabbitMq明显优于stomp协议activeMQ,amqp协议查看:http://blog.163.com/clevertanglei900@126/blog/static/111352259201011121041853/


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

3.可靠性,可用性比较。
RabbitMq 最好,ActiveMq次之, ZeroMq 最差。ActiveMq和ZeroMq都会出现丢数据

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

5.ZoreMQ
引用官方的说法: “ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ 的明确目标是“成为标准网络协议栈的一部分,之后进入 Linux 内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD 套接字之上的一层封装。ZMQ 让编写高性能网络应用程序极为简单和有趣。”
与 RabbitMQ 相比,ZMQ 并不像是一个传统意义上的消息队列服务器,事实上,它也根本不是一个服务器,它更像是一个底层的网络通讯库,在 Socket API 之上做了一层封装,将网络通讯、进程通讯和线程通讯抽象为统一的 API 接口。
ZMQ类似于 Socket 的一系列接口,他跟 Socket 的区别是:普通的 socket 是端到端的(1:1的关系),而 ZMQ 却是可以N:M 的关系,人们对 BSD 套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而 ZMQ 屏蔽了这些细节,让你的网络编程更为简单。ZMQ 用于 node 与 node 间的通信,node 可以是主机或者是进程。

猜你喜欢

转载自ncs123.iteye.com/blog/2281362
今日推荐