MQ消息中间件对比

目前系统间数据交换,普遍采用的是基于消息队列中间件(MQ)实现。但目前开源的消息中间件琳琅满目,常见就有RocketMQ、ActiveMQ、RabbitMQ、Kafka、ZeroMQ等等。

下面结合平台建设中比较关心功能点,包括可靠性、可用性、扩展能力、实现语言(便于阅读)、消费模型、消息类型、消息堆积能力、消息容错机制、处理性能等方面对市场上主流的RocketMQ、RabbitMQ、Kafka三款产品进行比较,确定谁才更适合我们的业务需要。

 

功能

RocketMQ

Kafka

RabbitMQ

 

可靠性

同步刷盘、 异步刷盘

异步刷盘,丢数据概率高

同步刷盘

 

可用性

 
 

横向扩展能力

支持

支持

集群扩容依赖前端

LVS 负载均衡调度

 

实现语言

Java

Scala和Java

Erlang

 

消费模型

Push / Pull

Pull

Push / Pull

 

定时消息

支持(只支持18个固定 Level)

不支持

支持

 

顺序消息

支持

支持

不支持

 

消息堆积能力

百亿级别(影响性能)

百亿级别(影响性能)

百亿级别(影响性能)

 

消息堆积查询

支持

不支持

不支持

 

消息回溯

支持

不支持

不支持

 

消息重试

支持

不支持

支持

 

死信队列

支持

不支持

支持

 

性能(常规)

非常好(十万级 QPS)

非常好(百万级 QPS)

一般(万级 QPS)

 

性能(万级 Topic 场景)

非常好(十万级 QPS)

 

性能(海量消息堆积场景)

非常好(十万级 QPS)

 

 

从以上的对比结果来看,Apache RocketMQ对于其他两个优势明显。

posted @ 2018-12-18 18:31  hlb  阅读(1157)  评论(0编辑  收藏  举报