訊息佇列Kafka和Rabbitmq的對比

2021-09-18 05:48:26 字數 1439 閱讀 8099

不同的訊息中介軟體的有不同的適應場景 對於kafka和rabbitmq來說在不同的場景下可按照以下的功能點進行劃分:

1. 優先順序佇列: 對於存在於佇列中的訊息,優先順序高的訊息具有被優先被消費的特權。這種情況有一種限制就是:消費者的消費速度要慢於生成者速度。

2. 延遲佇列:延遲佇列儲存的是對應的延遲訊息,適用的場景就是:生產者在生產訊息後,並不想讓消費之直接拿到訊息,而是等待一段時間再去消費。實現方式一般採用基於佇列的延遲:就是設定不同延遲級別的佇列,每個佇列中的延遲時間都是相同的。

3.死信佇列:由於訊息無法保證被正確投遞,為了保證訊息不會被無故丟棄,一般將其置於乙個特殊角色的佇列。

5.重試佇列:消費端訊息失敗時為了防止訊息無故丟失而重新將訊息回滾到broker結點中,重試佇列分為多個重試等級(每個不同的等級會設定不同的重新投遞的時延)投遞次數越多,時延越大。

6.消費模式:消費模式主要有推(push)和拉(pull)兩種模式。推模式:broker主動推送訊息至消費端  拉模式:指的是消費者主動去broker端去拉取。

7.廣播消費:  訊息的傳遞方式有:點對點p2p模式和發布訂閱模式。對於點對點(p2p)模式和發布訂閱(pub/sub)模式  rabbitmq是一種點對點模式。kafka是一種發布訂閱模式。發布訂閱模式定義了如何向乙個內容節點發布和訂閱訊息。這個內容節點稱為主題(topic)。主題可認為是訊息傳遞的中介。訊息發布者將訊息發布到某個主題。而訂閱者從主題中訂閱訊息。同時rabbitmq可以設定交換器類從而達到廣播消費的效果。 kafka也能以點對點的形式消費。可以把消費組(consumer group)的看成佇列的概念

8.訊息回溯:一般訊息在消費完成後就被處理了,然後不能消費該條訊息。訊息回溯正好相反。是指訊息在消費完成後,還能消費到之前被消費的訊息。

9.訊息堆積和持久化:訊息堆積的目的在於流量削峰。訊息堆積可以分為記憶體式堆積和磁碟式堆積。rabbitmq是一種記憶體式堆積,kafka是一種磁碟式堆積。

10.訊息的冪等性:對於訊息的傳輸, 對於確保訊息在生產者和消費者之間進行傳輸而言一般有三種傳輸保障:1.至多一次,訊息可能會丟失,但絕對不會重複;2.至少一次,訊息絕不會丟失,可能重複。 3.精確傳輸 。 kafka自0.11版本引入冪等性和事務。kafka的冪等性式是指單個生產者對於單分割槽單會話的冪等。

11.事務性訊息:生產者發生訊息的事務,要麼傳送成功,要麼傳送失敗。

rabbitmq單機的qps在萬級別之內,kafka單機的qps可以維持在十萬級別。甚至達到百萬級別。

所以:rabbitmq 在於 routing,而 kafka 在於 streaming  也就是說在訊息可靠性機制上rabbitmq更為完善,而kafka更加注重吞吐量。

訊息佇列 訊息佇列 kafka

kafka是乙個分布式的基於發布 訂閱模式的訊息佇列,主要用於大資料實時處理領域。要理解kafka首先要有分布式的概念,要有訊息佇列的概念。分布式系統最大的優勢就是解耦和削峰,這種情況下,a系統生成了乙個訊息,b系統非同步獲取,那麼就需要乙個存放訊息的訊息佇列 mq 相比較傳統的訊息佇列,訊息被消費...

訊息佇列 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...

訊息佇列 RabbitMQ和Kafka

2種模式 點對點 consumer主動對queue監控,檢查是否收到訊息 優點 解耦 通過中介軟體通訊 冗餘 可做快取 擴充套件性順序保證 非同步通訊 consumer即使down掉,訊息還是儲存在queue,等consumer恢復會自動處理訊息 關於broker裡的exchange不可以直接將訊息...