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对于其他两个优势明显。
HLb`s签名:给自己一个拼搏的理由,好好的坚持下去。