RabbitMQ和Kafka對比以及場景使用說明

2022-02-07 01:06:55 字數 1609 閱讀 8921

我目前的專案最後使用的是rabbitmq,這裡依然是結合網上大神們的優秀部落格,對kafka和rabbitmq進行簡單的比對。最後附上參考部落格。

1.架構模型

rabbitmq

rabbitmq遵循amqp協議,rabbitmq的broker由exchange,binding,queue組成,其中exchange和binding組成了訊息的路由鍵;客戶端producer通過連線channel和server進行通訊,consumer從queue獲取訊息進行消費(長連線,queue有訊息會推送到consumer端,consumer迴圈從輸入流讀取資料)。rabbitmq以broker為中心;

kafka

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

根據測試,rabbitmq在不使用ack機制的,msg大小為1k的情況下,qps可達6w+。再雙方ack機制,msg大小為1k的情況下,qps瞬間降到了1w+。

kafka

kafka具有巨大的吞吐量,資料的儲存以及獲取是本地磁碟的批量處理,可以達到百萬/s。

5.可靠性

rabbitmq

rabbitmq使用了mirrorqueue的機制,也可以做到多個機器進行熱備。

kafka

kafka的broker支援主備模式。

7.持久化

rabbitmq

支援kafka

kafka 是乙個永續性訊息儲存。

對於他們的使用場景如下

rabbitmq

1.rabbitmq的訊息應當盡可能的小,並且只用來處理實時且要高可靠性的訊息。

2.消費者和生產者的能力盡量對等,否則訊息堆積會嚴重影響rabbitmq的效能。

3.集群部署,使用熱備,保證訊息的可靠性。

kafka

1.應當有乙個非常好的運維監控系統,不單單要監控kafka本身,還要監控zookeeper。(kafka強烈的依賴於zookeeper,如果zookeeper掛掉了,那麼kafka也不行了)

2.對訊息順序不依賴,且不是那麼實時的系統。

3.對訊息丟失並不那麼敏感的系統。

4.從 a 到 b 的流傳輸,無需複雜的路由,最大吞吐量可達每秒 100k 以上。

訊息佇列Kafka和Rabbitmq的對比

不同的訊息中介軟體的有不同的適應場景 對於kafka和rabbitmq來說在不同的場景下可按照以下的功能點進行劃分 1.優先順序佇列 對於存在於佇列中的訊息,優先順序高的訊息具有被優先被消費的特權。這種情況有一種限制就是 消費者的消費速度要慢於生成者速度。2.延遲佇列 延遲佇列儲存的是對應的延遲訊息...

訊息中介軟體 RabbitMQ和Kafka對比

優秀的訊息佇列中介軟體有很多,比如rabbitmq和kafka,每個佇列都有各自的特性,在進行工程選擇時,往往眼花繚亂,不知所措。對於rabbitmq和kafka,到底應該選哪個?rabbitmq是乙個分布式系統,這裡面有幾個抽象概念。broker 每個節點執行的服務程式,功能為維護該節點的佇列的增...

訊息佇列 Kafka和rabbitMQ

0.建立topic bin kafka topics.sh create zookeeper localhost 2181 replication factor1 partitions1 topic test 1.檢視kafka topic列表 bin kafka topic.sh zoopkeep...