Kafka和RabbitMQ的異同點和使用場景

一、異同點

1.架構模型

RabbitMQ遵循AMQP協議,RabbitMQ的broker由Exchange,Binding,queue組成,其中exchange和binding組成了消息的路由鍵;客戶端Producer通過連接channel和server進行通信,Consumer從queue獲取消息進行消費(長連接,queue有消息會推送到consumer端,consumer循環從輸入流讀取數據)。rabbitMQ以broker爲中心。
Kafka遵從一般的MQ結構,producer,broker,consumer,以consumer爲中心,消息的消費信息保存的客戶端consumer上,consumer根據消費的點,從broker上批量pull數據。

2.消息確認機制

RabbitMQ具有生產者confirm機制以及消費者的消息應答機制ack。
Kafka不具有應答機制。

3.消息的順序

RabbitMQ中,在一個隊列裏面,rabbitmq的消息是嚴格順序的,按照先進先出。
Kafka中,在同一個partition中消息是有序的,但是生產者put到Kafka中數據會分佈在不同的partition中,所有總體是無序的。

4.吞吐量

根據測試,RabbitMQ在不使用ACK機制的,Msg大小爲1K的情況下,QPS可達6W+。再雙方ACK機制,Msg大小爲1K的情況下,QPS瞬間降到了1W+。

Kafka具有巨大的吞吐量,數據的存儲以及獲取是本地磁盤的批量處理,可以達到百萬/s。

5.可靠性

RabbitMQ使用了MirrorQueue的機制,也可以做到多個機器進行熱備。
Kafka的broker支持主備模式。

7.持久化

RabbitMQ支持持久化。
Kafka 是一個持久性消息存儲。

二、使用場景

RabbitMQ

1.RabbitMQ的消息應當儘可能的小,並且只用來處理實時且要高可靠性的消息。
 
2.消費者和生產者的能力盡量對等,否則消息堆積會嚴重影響RabbitMQ的性能。
 
3.集羣部署,使用熱備,保證消息的可靠性。

Kafka

1.應當有一個非常好的運維監控系統,不單單要監控Kafka本身,還要監控Zookeeper。(kafka強烈的依賴於zookeeper,如果zookeeper掛掉了,那麼Kafka也不行了)
 
2.對消息順序不依賴,且不是那麼實時的系統。
 
3.對消息丟失並不那麼敏感的系統。
 
4.從 A 到 B 的流傳輸,無需複雜的路由,最大吞吐量可達每秒 100k 以上。

謝謝閱讀!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章