目前系統間數據交換,廣泛採用的是基於消息隊列中間件(MQ)實現。但目前開源的消息中間件琳琅滿目,常見就有RocketMQ、ActiveMQ、RabbitMQ、Kafka、ZeroMQ等等。前端
下面結合平臺建設中比較關心功能點,包括可靠性、可用性、擴展能力、實現語言(便於閱讀)、消費模型、消息類型、消息堆積能力、消息容錯機制、處理性能等方面對市場上主流的RocketMQ、RabbitMQ、Kafka三款產品進行比較,肯定誰才更適合咱們的業務須要。負載均衡
功能異步 |
RocketMQ性能 |
Kafkaspa |
RabbitMQ中間件 |
|
可靠性隊列 |
同步刷盤、 異步刷盤ci |
異步刷盤,丟數據機率高同步 |
同步刷盤消息隊列 |
|
可用性 |
好 |
好 |
好 |
|
橫向擴展能力 |
支持 |
支持 |
集羣擴容依賴前端 LVS 負載均衡調度 |
|
實現語言 |
Java |
Scala和Java |
Erlang |
|
消費模型 |
Push / Pull |
Pull |
Push / Pull |
|
定時消息 |
支持(只支持18個固定 Level) |
不支持 |
支持 |
|
順序消息 |
支持 |
支持 |
不支持 |
|
消息堆積能力 |
百億級別(影響性能) |
百億級別(影響性能) |
百億級別(影響性能) |
|
消息堆積查詢 |
支持 |
不支持 |
不支持 |
|
消息回溯 |
支持 |
不支持 |
不支持 |
|
消息重試 |
支持 |
不支持 |
支持 |
|
死信隊列 |
支持 |
不支持 |
支持 |
|
性能(常規) |
很是好(十萬級 QPS) |
很是好(百萬級 QPS) |
通常(萬級 QPS) |
|
性能(萬級 Topic 場景) |
很是好(十萬級 QPS) |
低 |
低 |
|
性能(海量消息堆積場景) |
很是好(十萬級 QPS) |
低 |
低 |
從以上的對比結果來看,Apache RocketMQ對於其餘兩個優點明顯。