[Kinds of] MQ message queue Compare

The industry has a lot MQ product, we make the following comparison:

RabbitMQ

Is written in Erlang using an open source message queue itself supports many protocols: AMQP, XMPP, SMTP, STOMP, it is also true, so it becomes very heavyweight, is more suitable for the development of enterprise-class. While achieving a broker (Broker) architecture, which means that the message is sent to line up in the center of queues to the client. Routing (Routing), load balancing (Load balance) or data persistence have very good support.

Redis

Key-Value of a NoSQL database development and maintenance is very active, although it is a Key-Value database storage system, but it does support the MQ function, it can use as a lightweight queue service to use. For RabbitMQ and Redis enqueue and dequeue operations, implementing a million times, once every 100,000 recorded execution time. Test data into data 128Bytes, 512Bytes, 1K 10K and four different sizes. Experiments show that: when the team, when the data is relatively small redis performance than RabbitMQ, and if the data size exceeds 10K, Redis is slow can not stand; when the team, regardless of the data size, Redis have shown a very good performance , but the team performance RabbitMQ is much lower than Redis.

 

The team

The team

 

128B

512B

1K

10K

128B

512B

1K

10K

Redis

16088

15961

17094

25

15955

20449

18098

9355

RabbitMQ

10627

9916

9370

2366

3219

3174

2982

1588

ZeroMQ

Known as the fastest message queuing systems, in particular the demand for high throughput scenarios. Advanced / complex queue ZMQ enable RabbitMQ not good, but developers need their own combination of technologies framework, the technical complexity of this MQ is able to apply successfully challenges. ZeroMQ has a unique non middleware mode, you do not need to install and run a messaging server or middleware, because your application will play the role of the service. You only need a simple reference to ZeroMQ library, you can use NuGet installed, then you can have fun send messages between applications. But ZeroMQ provide only non-persistent queues, that if down machine, data will be lost. Wherein, Twitter using the Storm ZeroMQ as transmission data stream.

ActiveMQ

It is a subproject of the Apache. Similar ZeroMQ, it can queue as agent and peer to peer technology. At the same time like RabbitMQ, a small amount of code it can efficiently implement advanced application scenarios. RabbitMQ, ZeroMQ, ActiveMQ support the common languages ++ client C, the Java , .Net ,, PythonPHP , Ruby and so on.

Jafka / Kafka

Kafka is a subproject of the Apache, is a high-performance cross-language Distributed Publish / Subscribe message queuing systems, and Jafka is on Kafka hatch comes, that is an upgraded version of Kafka. Has the following characteristics: rapid persistence, the message may be persistent in O (1) overhead; high throughput, on a common server throughput rate can be achieved either 10W / s; a fully distributed system, Broker , Producer, Consumer are native support for distributed automatically, automate complex equilibrium; supports Hadoop data loaded in parallel, for like hadoop as offline analysis of log data and systems, but requires real-time processing limitations, this is a viable solution . Kafka by Hadoop parallel loading mechanism to unify the message processing online and offline, which is also the subject of the research system valued. Apache Kafka relative to ActiveMQ is a very lightweight messaging system, in addition to very good performance outside, or a good work distributed systems.

Others will not bore you analyze queue list HornetQ, Apache Qpid, Sparrow, Starling, Kestrel, Beanstalkd, Amazon SQS.

Guess you like

Origin blog.csdn.net/ningjiebing/article/details/90603239